Устранение неоднозначности смысла слова для пары слов

Скажем, у меня есть слово A и слово B, где я использую B как подсказку, которая подразумевает значение A. Например, A = бас, B = музыка, учитывая эту пару слов, как человеческие существа, мы можем сразу знать, что означает ли слово А.

Я знаю, что существует множество алгоритмов, которые работают с предложениями. Мне интересно, были ли разработаны алгоритмы для выполнения WSD только для пары слов.


person Kelvin Lee    schedule 20.06.2014    source источник


Ответы (1)


Устранение неоднозначности смысла слова (WSD) — это задача по устранению неоднозначности слова с учетом контекстного предложения/документа. В случае фразы из двух токенов контекстом является, по сути, другой токен.

Вы можете попробовать другое программное обеспечение WSD, и вот список: Кто-нибудь знает какого-нибудь хорошего программного обеспечения для устранения неоднозначности Word Sense?

Я приведу пример использования pywsd (https://github.com/alvations/pywsd) :

$ wget https://github.com/alvations/pywsd/archive/master.zip
$ unzip master.zip
$ cd pywsd-master
$ python
Python 2.7.5+ (default, Feb 27 2014, 19:37:08) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lesk import simple_lesk
# disambiguating the word 'bass' given the context 'bass music'
>>> simple_lesk('bass music', 'bass') 
Synset('bass.n.07')
>>> disambiguated = simple_lesk('bass music', 'bass')
>>> disambiguated.definition
<bound method Synset.definition of Synset('bass.n.07')>
>>> disambiguated.definition()
u'the member with the lowest range of a family of musical instruments

В качестве альтернативы вы можете использовать новый модуль в NLTK (https://github.com/nltk/nltk/blob/develop/nltk/wsd.py), если у вас самая последняя версия:

from nltk.wsd import lesk
disambiguated = lesk(context_sentence="bass music", ambiguous_word="bass")
print disambiguated.definition()

(Отказ от ответственности: я написал и pywsd, и модуль lesk в NLTK)

person alvas    schedule 20.06.2014
comment
Спасибо! Я видел много алгоритмов в списке! Какие алгоритмы, по вашему мнению, будут наиболее подходящими для моей задачи? Под наиболее подходящим я имел в виду, возможно, более высокую точность и меньшую алгоритмическую/пространственную сложность. - person Kelvin Lee; 21.06.2014
comment
у меня мало. У меня есть только 2 основных алгоритма, то есть леск и максимизация сходства. остальные в процессе. Я предлагаю вам использовать любой из алгоритмов lesk только в качестве основы. Я постараюсь закончить остальную часть кода, когда буду свободен. - person alvas; 21.06.2014
comment
Я предлагаю адаптированный_lesk как самый сильный для варианта lesk и сходства (это занимает больше времени), но сходство путей работает хорошо. - person alvas; 21.06.2014
comment
Вот исследовательская работа, которая может вас заинтересовать. - person Explorer; 30.06.2014