查找特定单词的相关单词(特别是物理对象)

时间:2009-03-04 12:51:26

标签: nlp semantics wordnet

我试图找到与单个单词相关的单词(特别是物理对象)。例如:

网球:网球拍,网球,网球鞋

斯诺克:斯诺克球杆,斯诺克球,粉笔

国际象棋:棋盘,棋子

书柜:预订

我曾尝试使用WordNet,特别是meronym语义关系;但是,这种方法并不一致,如下面的结果所示:

网球:发球,凌空,脚故障,设定点,回归,优势

斯诺克没有

国际象棋:国际象棋移动,棋盘游戏(其自己的缩写关系显示'方形'和'对角线')

书柜:搁置

最终需要对术语进行加权,但现在这并不是真正的问题。

有人对如何做到这一点有任何建议吗?


只是一个更新:结束使用Jeff和StompChicken的答案。

从维基百科检索到的信息质量非常好,特别是(不出所料)有如此多的相关信息(与某些语料库相比,其中不存在“博客”和“ipod”等词语。)

维基百科的结果范围是最好的部分。该软件能够匹配诸如(为简洁起见而切割的列表)等术语:

  • 高尔夫球:[球,铁,球座,球袋,球杆]
  • 摄影:[相机,电影,照片,艺术,图像]
  • 钓鱼:[鱼,网,钩,陷阱,诱饵,诱饵,杆]

最大的问题是将某些词分类为物质文物;默认WordNet不是一个可靠的资源,因为它中不存在许多术语(例如'ipod',甚至'trampolining')。

2 个答案:

答案 0 :(得分:15)

我认为你要求的是概念之间的语义关系的来源。为此,我可以想到许多方法:

  1. Semantic similarity algorithms 即可。这些算法通常对Wordnet中的关系执行树形遍历,以得出两个术语相关的实值得分。这些将受到WordNet模拟您感兴趣的概念的限制。WordNet::Similarity(用Perl编写)非常好。
  2. 尝试使用OpenCyc作为知识库。 OpenCyc是Cyc的开源版本,它是“真实世界”事实的一个非常大的知识库。它应该比WordNet有更丰富的语义版本。但是,我从未使用过OpenCyc,所以我不能说它是多么完整,或者使用它有多容易。
  3. n-gram频率分析。正如Jeff Moser所说。一种数据驱动的方法,可以从大量数据中“发现”关系,但通常会产生嘈杂的结果。
  4. Latent Semantic Analysis 即可。一种类似于n-gram频率分析的数据驱动方法,可以找到一组语义相关的单词。
  5. [...]

    根据你所说的你想做的事情,我认为最后两个选项更有可能成功。如果关系不在Wordnet中,那么语义相似性将不起作用,OpenCyc似乎对snooker除了它存在的事实以外没有太多了解。

    我认为n-gram和LSA(或类似的东西)的组合将是一个好主意。 N-gram频率将找到与您的目标概念紧密相关的概念(例如网球),并且LSA将找到在相同句子/文档中提到的相关概念(例如,网络,服务)。此外,如果您只对名词感兴趣,过滤您的输出只包含名词或名词短语(使用part-of-speech tagger)可能会改善结果。

答案 1 :(得分:6)

在第一种情况下,您可能正在寻找n-grams,其中n = 2.您可以从Google这样的地方获取它们,或者从all of Wikipedia创建自己的地址。

有关详细信息,请查看this related Stack Overflow question