Недавно часть кода pywsd была перенесена в новейшую версию NLTK 'в модуле wsd.py, попробуйте:
>>> from nltk.wsd import lesk
>>> sent = 'I went to the bank to deposit my money'
>>> ambiguous = 'bank'
>>> lesk(sent, ambiguous)
Synset('bank.v.04')
>>> lesk(sent, ambiguous).definition()
u'act as the banker in a game or in gambling'
Для повышения производительности WSD используйте библиотеку pywsd вместо модуля NLTK. В общем, simple_lesk() от pywsd работает лучше, чем lesk от NLTK. Я постараюсь как можно больше обновить модуль NLTK, когда буду свободен.
В ответах на комментарий Криса Спенсера обратите внимание на ограничения алгоритмов Леска. Я просто даю точную реализацию алгоритмов. Это не серебряная пуля, http://en.wikipedia.org/wiki/Lesk_algorithm
Также обратите внимание, что, хотя:
lesk("My cat likes to eat mice.", "cat", "n")
не дадут вам правильный ответ, вы можете использовать pywsd реализацию max_similarity():
>>> from pywsd.similarity import max_similiarity
>>> max_similarity('my cat likes to eat mice', 'cat', 'wup', pos='n').definition
'feline mammal usually having thick soft fur and no ability to roar: domestic cats; wildcats'
>>> max_similarity('my cat likes to eat mice', 'cat', 'lin', pos='n').definition
'feline mammal usually having thick soft fur and no ability to roar: domestic cats; wildcats'
@ Крис, если тебе нужен python setup.py, просто сделай вежливый запрос, я напишу ...
person
alvas
schedule
22.06.2014