Python轻量级自然语言处理框架

4

我目前正在使用spaCy来确定两个字符串之间的语义相似性。它表现良好,只需要几行代码,所有的工作都在幕后完成:

>>> import spacy
>>> nlp = spacy.load('en')
>>> nlp('string').similarity(nlp('another string'))
0.796

然而,这需要大约 600MB 的模块数据。由于我正在 Heroku 上托管,这远远超过可用的 Slug 大小。我正在寻找其他托管方案,但是否有其他框架可以使用呢?我不需要 spacy 的 “工业强度”,但其他框架似乎效果不佳/实现速度不够快。


spaCy doc中,它展示了一个只下载部分语言模型的选项。在您的情况下,您可能只想下载向量-通过python -m spacy.en.download glove。如果仅此就花费了600mb,那么我不确定是否有其他选择,因为大多数存储空间都被存储在spaCy中的近13,000个词汇的向量所占用,任何更少的数据都会导致更差的准确性。 - spicypumpkin
它可以使用较小的解析器模型工作,但是确实仍然需要大约 600 MB 的空间。我想暂时只能使用模糊字符串比较,虽然这显然无法捕捉情感,但总比没有好。我还将探索在 VPS 上托管的可能性。 - ayuopy
1
看起来你只使用了词向量,为什么不切换到更小的嵌入大小(默认的spacy glove是300维),此外,根据你的用途,你可能可以使用更小的词汇表。 - Eyal Shulman
1个回答

2
自 spaCy v1.7.0 起,可以将其模型安装为 Python 包。这意味着它们是应用程序的组件,就像任何其他模块一样。最近(2017 年 3 月 20 日)推出了一个大小为 50 MB 的模型:en_core_web_sm,其中包括词汇、语法、实体和词向量。请访问https://spacy.io/docs/usage/models以获取更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接