Размер словарного запаса модели SpaCy 'en_core_web_sm' - PullRequest
0 голосов
/ 06 ноября 2019

Я пытался увидеть количество слов в словаре в маленькой модели SpaCy:

model_name="en_core_web_sm"

nlpp=spacy.load(model_name)

len(list(nlpp.vocab.strings))

, что дало мне только 1185 слов. Я также попробовал на машинах моих коллег и дал мне разные результаты (1198 и 1183).

Должно ли быть так, чтобы у меня был только такой маленький словарь для обучения тегов части речи? Когда я использую это в своем наборе данных, я теряю много слов. Почему количество слов варьируется в разных машинах?

Спасибо!

1 Ответ

1 голос
/ 06 ноября 2019

Словарь загружается динамически, поэтому у вас нет всех слов в 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, аналогичный файл будет находиться в другом месте.

...