当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《查找特定单词的相关单词(特别是物理对象)》经验,为你挑选了2个好方法。

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

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

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

国际象棋:棋盘,棋子

书柜:书

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

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

斯诺克:什么都没有

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

书柜:搁置

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

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


只是一个更新:使用Jeff和StompChicken的答案结合起来.

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

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

高尔夫球:[球,铁,球座,球袋,球杆]

摄影:[相机,电影,照片,艺术,图像]

钓鱼:[鱼,网,钩,陷阱,诱饵,诱饵,杆]

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



1> Stompchicken..:

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

    语义相似度算法.这些算法通常对Wordnet中的关系执行树形遍历,以得出两个术语相关的实值得分.这些将受限于WordNet对您感兴趣的概念进行建模的程度 .WordNet :: Similarity(用Perl编写)非常好.

    尝试使用OpenCyc作为知识库.OpenCyc是Cyc的开源版本,它是"真实世界"事实的一个非常大的知识库.它应该比WordNet有更丰富的语义版本.但是,我从未使用过OpenCyc,所以我不能说它是多么完整,或者使用它有多容易.

    n-gram频率分析.正如Jeff Moser所说.一种数据驱动的方法,可以从大量数据中"发现"关系,但通常会产生噪声结果.

    潜在语义分析.类似于n-gram频率分析的数据驱动方法,用于查找语义相关单词集.

[...]

从你说你想做什么来判断,我认为最后两个选项更有可能成功.如果关系不在Wordnet中,那么语义相似性将不起作用,OpenCyc似乎对斯诺克不太了解,除了它存在的事实.

我认为n-gram和LSA(或类似的东西)的组合将是一个好主意.N-gram频率将找到与您的目标概念紧密相关的概念(例如网球),LSA将找到相同句子/文档中提到的相关概念(例如net,serve).此外,如果您只对名词感兴趣,过滤输出以仅包含名词或名词短语(通过使用词性标注器)可能会改善结果.



2> Jeff Moser..:

在第一种情况下,您可能正在寻找n = 2的n-gram.您可以从Google这样的地方获取它们,或者从所有维基百科中创建自己的n-gram.

有关更多信息,请查看此相关的Stack Overflow问题.


n-gram of 2就是所有通常出现在一起的单词对.我认为海报所要求的是*语义*关系.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有