2014-02-25 21 views
0

我正在处理多义词消歧项目,并试图从输入查询中找到多义词。我这样做的方式是:如何从输入查询中找到多义词?

#! /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) 

这里列出一个将包含多义词的词。 但使用这种方法几乎所有的单词都将被视为多义词。 例如,如果我的输入查询是“牛奶是白色的”,那么它将存储('牛奶','白色','颜色')为多义词

+1

这是因为所有这些单词都有不止一种可能的含义。你的脚本似乎工作正常。 [看看WordNet](http://wordnetweb.princeton.edu/perl/webwn)。你会看到“牛奶”,“白色”和“颜色”都是多义性的。 – tsroten

+0

我们不能说白色是多义词,因为wordnet中的所有感官都只与颜色有关......在银行的情况下,某些感官与金融部门有关,有些与河岸有关,这就是为什么它被认为是多义性。 – Madhusudan

+0

*(adj)白色(仁慈的;没有恶意的意图)“这是你的白色”* - 与颜色无关。对我来说,看起来你正在为你的代码获得正确的值。 – tsroten

回答

3

WordNet被称为细粒度,你和我可能会认为非常微妙的不同感官之间的区别是相同的。已经有人试图让WordNet更粗糙,谷歌“粗粒度WordNet的自动化”。我不确定该论文的结果是否可以下载,但您可以随时联系作者。

或者,更改您的多义词的工作定义。如果一个词的最常见意义占其在大型语料库中的80%以上的使用,那么这个词是而不是多义词。您将不得不为尽可能多的单词获得不同感官的频率计数。开始您的研究herehere

+0

我没有从这些参考文献中得到任何想法。如果可以,请提供一些建议。谢谢。 – Madhusudan