WordNet лемматизатор в NLTK не работает для наречий

from nltk.stem import WordNetLemmatizer
x = WordNetLemmatizer()   
x.lemmatize("angrily", pos='r')
Out[41]: 'angrily'

Вот справочная документация для pos-тегов в nltk wordnet, http://www.nltk.org/_modules/nltk/corpus/reader/wordnet.html

Я могу упустить некоторые основные вещи. пожалуйста, дайте мне знать

1 ответ

Решение

Пытаться:

>>> from nltk.corpus import wordnet as wn
>>> wn.synset('angrily.r.1').lemmas()[0].pertainyms()[0].name()
u'angry'

См. Получение прилагательного от наречия в nltk или другой библиотеке NLP для получения дополнительной информации.

Вопрос в том, почему вы должны пройти через леммы, чтобы получить pertainyms?

>>> wn.synset('angrily.r.1').pertainyms()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Synset' object has no attribute 'pertainyms'

Это потому, что WordNet видит это как лексическую связь между категориями слов, см. http://wordnet.princeton.edu/man/wngloss.7WN.html

Pertainyms являются реляционными прилагательными и не следуют только что описанной структуре. Pertainyms не имеют антонимов; синтаксис для pertainym чаще всего содержит только одно слово или словосочетание и лексический указатель на существительное, к которому прилагательное "относится". Причастные прилагательные имеют лексические указатели на глаголы, из которых они получены.

Опять же, если мы посмотрим на интерфейс Java, получить pertainym синтаксиса так же просто, как AdjectiveSynset.getPertainyms() ( http://lyle.smu.edu/~tspell/jaws/doc/edu/smu/tspell/wordnet/AdjectiveSynset.html)

Так что я думаю, это зависит от того, кто пишет интерфейс, какую перспективу они принимают в отношении отношения прилагательное-наречие.

Для меня я думаю, что pertainyms были бы непосредственно связаны с синтаксисом, а не леммой.

Другие вопросы по тегам