词汇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)。

是否应该只有这么少的词汇来训练词性标注?当我在数据集中使用它时,我会丢失很多单词。为什么单词数在不同的机器上会有所不同?

谢谢!

iloveuvm 回答:词汇SpaCy模型'en_core_web_sm'的大小

词汇表是动态加载的,因此在您第一次加载词汇时,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,则会有一个相似的文件,但位置不同。

本文链接:https://www.f2er.com/3155246.html

大家都在问