sentiwordnet python中的词义歧义消歧

时间:2013-04-11 06:51:27

标签: python nlp wordnet sentiment-analysis word-sense-disambiguation

我目前正在研究推特中的情绪分析。 我想结合预定义的词典资源,如sentiwordnet极数得分。然后继续进行机器学习。 问题在于获得sentiwordnet的正确分数,以前的工作总是简单地选择词义的负极性和正极性的总分。 我的意思是例如“疯狂”这个词可以出现3次为负数,2次为正数。 以前的大部分工作都会自动平均每个极性。 所以我想在获得分数之前消除歧义,这样我们才能真正使用sentiwordnet。 我正在考虑比较目标句子和光泽句子的相似性。 有什么方法可以比较吗?你觉得它会起作用吗? 如果没有请分享你的想法..

我对这个领域和新手python程序员都是全新的,所以我真的需要你的建议.. 谢谢..

1 个答案:

答案 0 :(得分:4)

这是一个词义消歧问题,让你的系统在任何给定的多重词上运行得相当好将是非常艰难的。您可以尝试(组合)几种方法来确定正确的单词意义:

  1. Pos标记会减少候选人的感官数量。

  2. 句子与WordNet中每个单词意义的光泽度之间的余弦相似度。

  3. 使用SenseRelate:它衡量目标词及其周围词的不同意义之间的“WordNet相似性”。

  4. 使用WordNet Domains:数据库包含分配给每个WordNet意义的域标签,例如“音乐”,用于“摇滚”的音乐感。您可以比较在其中找到的域标签,而不是比较光泽和句子中找到的实际单词。

  5. 表示光泽和句子不是由它们中的单词本身表示,而是作为单词的平均同现向量。可以使用大文本语料库来构建这样的向量,优选地来自与消除歧义的文本相同的应用程序域。有各种技术来改进这种共现向量(tf-idf,PCA,SVD),你应该分别阅读它们。

  6. 如果您的文本来自非常专业的领域(例如,法律),则准确性会更高。但是,如果你使用一般语言文本,那么你可以期望只有非高度多义的单词才能获得良好的准确性(如果它们在WordNet中的含义不超过3-4个)