SpaCy模型’en_core_web_sm’词汇量大小

我尝试查看SpaCy小模型中的词汇量:

model_name="en_core_web_sm"nlpp=spacy.load(model_name)len(list(nlpp.vocab.strings))

结果只显示了1185个单词。我也在同事的机器上尝试过,结果不同(分别是1198和1183)。

词汇量这么小就能用于训练词性标注吗?当我用在我的数据集上时,丢失了很多单词。为什么不同机器上的单词数量会不同?

谢谢!


回答:

词汇是动态加载的,所以当你第一次加载词汇时,StringStore中不会包含所有单词。你可以通过以下尝试来观察这一点…

>>> import spacy>>> nlp = spacy.load('en_core_web_sm')>>> len(nlp.vocab.strings)1180>>> 'lawyer' in nlp.vocab.stringsFalse>> doc = nlp('I am a lawyer')>>> 'lawyer' in nlp.vocab.stringsTrue>>> len(nlp.vocab.strings)1182

最简单的方法可能是直接从原始文件中加载词汇,像这样…

>>> import json>>> fn = '/usr/local/lib/python3.6/dist-packages/spacy/data/en/en_core_web_sm-2.0.0/vocab/strings.json'>>> with open(fn) as f:>>>     strings = json.load(f)>>> len(strings)78930

请注意,上述文件路径适用于Ubuntu 18.04。如果你是Windows用户,会有类似的文件但路径不同。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注