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 были бы непосредственно связаны с синтаксисом, а не леммой.