查找与特定单词相关的单词(特别是物理对象)
Posted
技术标签:
【中文标题】查找与特定单词相关的单词(特别是物理对象)【英文标题】:Finding related words (specifically physical objects) to a specific word 【发布时间】:2010-10-11 06:10:43 【问题描述】:我正在尝试查找与单个单词相关的单词(特别是物理对象)。例如:
网球:网球拍、网球、网球鞋
斯诺克:斯诺克球杆、斯诺克球、粉笔
国际象棋:棋盘、棋子
书柜:书
我尝试过使用WordNet,特别是meronym语义关系;但是,这种方法并不一致,如下结果所示:
网球:发球、截击、脚误、设定点、回球、优势
斯诺克:没什么
国际象棋:国际象棋走法,棋盘(其自身的meronym关系显示“正方形”和“对角线”)
书柜:搁置
最终将需要对术语进行加权,但现在这不是一个真正的问题。
有人对如何做到这一点有任何建议吗?
只是更新:最终混合使用了 Jeff 和 StompChicken 的答案。
从 Wikipedia 检索到的信息质量非常好,特别是(与某些不存在“blog”和“ipod”等术语的语料库相比)如何(毫不奇怪)有如此多的相关信息。
***的结果范围是最好的部分。该软件能够匹配诸如(为简洁起见的列表)之类的术语:
高尔夫:[球、铁、发球台、球包、球杆] 摄影:[相机、胶卷、照片、艺术、图像] 钓鱼:[鱼、网、钩、陷阱、饵、饵、竿]最大的问题是将某些词归类为物理人工制品;默认 WordNet 不是可靠的资源,因为其中不存在许多术语(例如“ipod”,甚至“蹦床”)。
【问题讨论】:
您好,我尝试了这种方法,但结果通常是随机的,并且与搜索查询无关。你能详细说明你做了什么吗?例如,您是否使用了***的反向链接、链接和类别? 【参考方案1】:在第一种情况下,您可能正在寻找 n-grams,其中 n = 2。您可以从 Google 等地方获取它们,或者从 all of Wikipedia 创建自己的。
欲了解更多信息,请查看this related Stack Overflow question。
【讨论】:
n-grams of 2 就是所有共同出现的单词对。我认为张贴者要问的是关于语义关系。 这个想法是,如果它们一起出现,如果出现的次数足够多,可能会有某种语义关系(例如“网球拍”),就像“打网球”一样。 这是一个正确的想法。然而,问题是关于使用 WordNet 来查找语义关系,而不是关于使用 n-gram。 对不起,如果我不清楚,这个问题不是 WordNet 特定的。 n-gram 方法听起来很有趣,但我看不出它如何解决我的问题,因为只有单数词(例如“网球”)来尝试寻找关系。 n-gram 的想法是你可以看到“网球”附近的常用词。它们彼此靠近的事实表明可能存在某种关系。【参考方案2】:我认为您要的是概念之间语义关系的来源。为此,我可以想到多种方法:
-
Semantic similarity algorithms。这些算法通常对 Wordnet 中的关系执行树遍历,以得出两个术语相关程度的实值分数。这些将受到 WordNet 对您感兴趣的概念的建模效果的限制。WordNet::Similarity(用 Perl 编写)非常好。
尝试使用OpenCyc 作为知识库。 OpenCyc 是 Cyc 的开源版本,Cyc 是一个非常庞大的“真实世界”事实知识库。它应该有比 WordNet 更丰富的语义关系集。但是,我从未使用过 OpenCyc,因此无法评价它的完整程度或易用性。
n-gram 频率分析。正如杰夫·莫泽所说。一种数据驱动的方法,可以从大量数据中“发现”关系,但通常会产生嘈杂的结果。
Latent Semantic Analysis。一种类似于 n-gram 频率分析的数据驱动方法,用于查找语义相关的词集。
[...]
从你说你想做的事情来看,我认为最后两个选项更有可能成功。如果关系不在 Wordnet 中,则语义相似性将不起作用,并且 OpenCyc 似乎对 snooker 了解不多,除了它存在这一事实。
我认为将 n-gram 和 LSA(或类似的东西)结合起来是个好主意。 N-gram 频率会找到与您的目标概念紧密结合的概念(例如网球),而 LSA 会找到在同一个句子/文档中提到的相关概念(例如 net、service)。此外,如果您只对名词感兴趣,则将输出过滤为仅包含名词或名词短语(通过使用 part-of-speech tagger)可能会改善结果。
【讨论】:
非常感谢,您的信息让我有很多需要调查的地方。 没问题,祝你好运。这并不容易:)以上是关于查找与特定单词相关的单词(特别是物理对象)的主要内容,如果未能解决你的问题,请参考以下文章