我试图找到与单个单词相关的单词(特别是物理对象)。例如:
网球:网球拍,网球,网球鞋
斯诺克:斯诺克球杆,斯诺克球,粉笔
国际象棋:棋盘,棋子
书柜:预订
我曾尝试使用WordNet,特别是meronym语义关系;但是,这种方法并不一致,如下面的结果所示:
网球:发球,凌空,脚故障,设定点,回归,优势
斯诺克:没有
国际象棋:国际象棋移动,棋盘游戏(其自己的缩写关系显示'方形'和'对角线')
书柜:搁置
最终需要对术语进行加权,但现在这并不是真正的问题。
有人对如何做到这一点有任何建议吗?
只是一个更新:结束使用Jeff和StompChicken的答案。
从维基百科检索到的信息质量非常好,特别是(不出所料)有如此多的相关信息(与某些语料库相比,其中不存在“博客”和“ipod”等词语。)
维基百科的结果范围是最好的部分。该软件能够匹配诸如(为简洁起见而切割的列表)等术语:
最大的问题是将某些词分类为物质文物;默认WordNet不是一个可靠的资源,因为它中不存在许多术语(例如'ipod',甚至'trampolining')。
答案 0 :(得分:15)
我认为你要求的是概念之间的语义关系的来源。为此,我可以想到许多方法:
[...]
根据你所说的你想做的事情,我认为最后两个选项更有可能成功。如果关系不在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。