18

我正在尝试查找与单个单词相关的单词(特别是物理对象)。例如:

网球:网球拍、网球、网球鞋

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

国际象棋:棋盘、棋子

书柜:书

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

网球:发球、截击、脚误、设定点、回球、优势

斯诺克没什么

国际象棋:国际象棋移动,棋盘(其自身的meronym关系显示“正方形”和“对角线”)

书柜:搁板

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

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


只是更新:最终混合使用了 Jeff 和 StompChicken 的答案。

从 Wikipedia 检索到的信息质量非常好,特别是如何(不出所料)有这么多相关信息(与一些不存在诸如“博客”和“ipod”之类的术语的语料库相比)。

维基百科的结果范围是最好的部分。该软件能够匹配以下术语(为简洁起见,列表被删减):

  • 高尔夫:[球、铁、发球台、球包、球杆]
  • 摄影:[相机,胶卷,照片,艺术,图像]
  • 钓鱼:[鱼,网,钩,陷阱,诱饵,诱饵,竿]

最大的问题是将某些词归类为物理人工制品;默认 WordNet 不是可靠的资源,因为其中不存在许多术语(例如“ipod”,甚至“蹦床”)。

4

2 回答 2

15

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

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

[...]

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

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

于 2009-03-04T16:09:04.900 回答
6

在第一种情况下,您可能正在寻找n = 2 的n-gram。您可以从 Google 等地方获取它们,或者从所有 Wikipedia中创建您自己的。

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

于 2009-03-04T13:10:43.177 回答