2

假设我有一个单词 A 和一个单词 B,其中我使用 B 作为暗示,暗示 A 的含义。例如,A = bass,B = music,给定这个词对,作为人类我们可以立即知道什么A这个词是什么意思。

我知道有很多算法适用于句子。我想知道是否已经开发了仅针对一对单词进行 WSD 的算法。

4

1 回答 1

9

Word Sense Disambiguation (WSD) 是在给定上下文句子/文档的情况下消除单词歧义的任务。在这种情况下,对于两个标记短语,上下文基本上是另一个标记。

您可以尝试不同的 WSD 软件,这里有一个列表:有人知道一些好的词义消歧软件吗?

我会给你一个使用pywsdhttps://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()

(免责声明:我写了两个pywsdlesk模块NLTK

于 2014-06-20T23:33:45.517 回答