Лемматизаторы NLTK не распознают множественное число химических названий

Итак, я должен признать, что я полный новичок в nlp, и я ничего не знаю о nltk, я просто пытаюсь использовать устаревший код, оставленный предыдущим разработчиком. Мне нужно лемматизировать слова, в основном из химических и биотехнологических публикаций. Обычно я использую WordNetLemmatizer. В большинстве случаев это работает.

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('cats')

возвращает кота.

Но потом я пытаюсь

lemmatizer.lemmatize('dehydrogenases')

он возвращает «дегидрогеназы». Я хочу, чтобы он вернул «дегидрогеназу». Как я могу это сделать?


person Gergely    schedule 23.03.2020    source источник
comment
Если вы можете переключиться на Lemminflect, вероятно, вам повезет больше. Он лучше справляется со словарными словами, потому что может взглянуть на шаблон букв и выбрать подходящее правило для удаления суффикса. И если вам действительно нужна максимальная точность, она основана на СПЕЦИАЛИСТИЧЕСКОМ Лексиконе NIH, который содержит множество биомедицинских терминов. В выпущенной версии библиотеки многие из них удалены, но программное обеспечение можно изменить, чтобы включить в него все биомедицинские термины.   -  person bivouac0    schedule 23.03.2020


Ответы (1)


Объяснение

Если вы устанавливаете nltk как модуль, а затем используете следующий код для инициализации WordNetLemmatizer:

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()

Вы, вероятно, получите LookupError, в котором написано:

LookupError: 
**********************************************************************
  Resource wordnet not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('wordnet')

  For more information see: https://www.nltk.org/data.html

  Attempted to load corpora/wordnet.zip/wordnet/

Причина

Лемматизатор, который вы инициализировали, основан на WordNet. Цитата из документации WordNet:

WordNet® - это большая лексическая база данных английского языка. Существительные, глаголы, прилагательные и наречия сгруппированы в наборы когнитивных синонимов (синсетов), каждый из которых выражает отдельное понятие. Синсеты связаны между собой понятийно-семантическими и лексическими отношениями. В полученной сети значимо связанных слов и понятий можно перемещаться с помощью браузера. WordNet также находится в свободном и общедоступном доступе для загрузки. Структура WordNet делает его полезным инструментом для компьютерной лингвистики и обработки естественного языка.

По сути, в нем нет всех слов английского словаря, которые можно лемматизировать. Таким образом, хотя он работает для слова «кошки», он может не работать для других слов, которых нет в лексической базе данных WordNet.

Надеюсь, это поможет.

person Rahul P    schedule 23.03.2020