如何从输入查询中找到多义词?

Mad*_*dan 0 python nlp nltk wordnet

我正在研究多义词消歧项目,为此我试图从输入查询中找到多义词。我这样做的方式是:

#! /usr/bin/python
from nltk.corpus import stopwords
from nltk.corpus import wordnet as wn
stop = stopwords.words('english')
print "enter input query"
string = raw_input()
str1 = [i for i in string.split() if i not in stop]
a = list()
for w in str1:
    if(len(wn.synsets(w)) > 1):
        a.append(w)
Run Code Online (Sandbox Code Playgroud)

这里的列表 a 将包含多义词。但是使用这种方法几乎所有的词都会被认为是多义词。例如,如果我的输入查询是“牛奶是白色的”,那么它将 ('milk','white','colour') 存储为多义词

mba*_*rov 5

众所周知,WordNet 是非常细粒度的,它有时会区分你我可能认为相同的非常微妙的不同感觉。已经尝试使 WordNet 更粗糙,谷歌“粗粒度 WordNet 的自动”。我不确定该论文的结果是否可供下载,但您可以随时联系作者。

或者,更改多义词的工作定义。如果一个词在一个大语料库中最常用的意义占其用法的 80% 以上,那么这个词就不是多义词。您将必须获得尽可能多的单词的不同含义的频率计数。在这里这里开始你的研究。