Недавно часть кода 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, просто сделай вежливый запрос, я напишу ...