Как я могу использовать устранение неоднозначности в словах с испанским sh? - PullRequest
0 голосов
/ 16 июня 2020

Я прохожу курс udemy (все примеры на английском sh), но проблема всегда в том, что когда я начинаю использовать испанский sh, всегда не хватает библиотек или совместимости. Я загрузил из https://www.datos.gov.co/Ciencia-Tecnolog-a-e-Innovaci-n/LAS-WordNet-una-WordNet-para-el-espa-ol-obtenida-c/8z8d-85m7 данные в CSV, но я пытаюсь выполнить следующий код, но вылетает с ошибкой NoneType, из-за описания контекста, есть ли у кого-нибудь идеи о том, как бороться с этим? Спасибо

import nltk
#nltk.download("omw")
from nltk.corpus import wordnet


for ss in wordnet.synsets("casco", lang="spa"):
    print(ss, ss.definition)


from nltk.wsd import lesk
from nltk.tokenize import word_tokenize

cntxt1 = lesk(word_tokenize("El casco antiguo de Barcelona es muy bonito"), "casco")
print(cntxt1, cntxt1..definition())
cntxt2 = lesk(word_tokenize("El casco nuevo que te has comprado para la motocicleta no me gusta"), "casco")
print(cntxt2, cntxt2.definition())

ОШИБКА:

    print(cntxt1, cntxt1.definition())
AttributeError: 'NoneType' object has no attribute 'definition'

1 Ответ

1 голос
/ 16 июня 2020

Я просмотрел источник для lesk функции , и если он явно не передан аргумент synsets, он создает его, вызывая wordnet.synsets(ambiguous_word), но он не передает язык вариант или что-то в этом роде.

Если для этого слова не найдено синсета, он просто возвращает None, следовательно, вы получаете ошибку. Вы можете явно передать набор синхронизации, например:

cntxt1 = lesk(word_tokenize("El casco antiguo de Barcelona es muy bonito"), 
              "casco", synsets=wordnet.synsets("casco", lang="spa"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...