SpaCy模型'en_core_web_sm'的词汇量大小

3
我尝试查看SpaCy小型模型词汇中的单词数量:
model_name="en_core_web_sm"

nlpp=spacy.load(model_name)

len(list(nlpp.vocab.strings))

我只得到了1185个单词。我也在我的同事的电脑上尝试了一下,结果不同(1198和1183)。

训练部分-词性标注只有这么少的词汇是正常的吗?当我将其用于我的数据集时,会丢失很多单词。为什么不同机器上的单词数量会有所不同?

谢谢!

1个回答

3

词汇是动态加载的,因此在首次加载词汇表时并没有所有的单词都存储在StringStore中。如果您尝试以下操作,可以看到这一点...

>>> import spacy
>>> nlp = spacy.load('en_core_web_sm')
>>> len(nlp.vocab.strings)
1180
>>> 'lawyer' in nlp.vocab.strings
False
>> doc = nlp('I am a lawyer')
>>> 'lawyer' in nlp.vocab.strings
True
>>> 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 操作系统,则会有一个类似的文件但位于不同的位置。

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