【问题标题】:What is "least common subsumer" and how to compute it?什么是“最不常见的子类”以及如何计算它?
【发布时间】:2013-09-05 06:43:33
【问题描述】:

我想使用 Wu 和 Palmer 方法在 wordnet 中计算相似度,

wp = (2 X depth(lcs)) / (depth(synset1) + depth(synset2))

其中lcssynset1synset2 的“最不常见的子类”

我的问题是:

  1. 什么是“最不常见的子消费者”?
  2. 如何计算?

【问题讨论】:

  • 你试过什么?您认为完成这项任务需要哪些文件?
  • 我想知道,什么是“最不常见的子消费者”?
  • 所以你的问题是:“什么是最不常见的子消费者?”。在这种情况下,您应该清楚地说明这一点,然后再询问如何计算。
  • 我推荐你使用Semantic Measures Library。它是一个 java 库,它实现了基于知识表示分析的大量语义度量,特别是可用于比较分类学中结构化概念的度量(例如 Wu 和 Palmer 提出的度量)。
  • WordNet 并不总是一棵树。如果对中的每个节点都有多个祖先,您将如何计算 lcs

标签: algorithm wordnet


【解决方案1】:

根据paper,两个概念 A 和 B 的最小公有子是“最具体的概念,它是 A 和 B 的祖先”,其中概念树由 is-a 关系定义。一个概念被定义为另一个概念的祖先,就像您在人类家谱中定义祖先的方式一样,它是另一个概念的父母,祖父母等等。例如:

  1. 汽车就是汽车,汽车就是交通工具
  2. 船就是交通工具。
  3. 车辆是一个物体。

还有图表:

目的 | 车辆 | --------- | | 船用汽车 | 车

在这种情况下,“automobile”是“car”的父代(也是祖先),而“vehicle”是“car”的祖先。 “车”也是“船”的始祖。在这种情况下,“boat”和“car”的 LCS 是“vehicle”,因为它是“boat”和“car”的祖先的最具体的概念。请注意,虽然“object”是“boat”和“car”的共同子类,但并非最不重要,因为“object”还有一个孩子(在本例中是“vehicle”),它也是一个常见的“汽车”和“船”的统称。 “汽车”不是最不常见的子类,因为它不是“船”的祖先。

为了计算相似度,我建议你使用可用的库,否则你需要自己构建概念图,这很麻烦。

在 Perl 中,您可以使用 WordNet::Similarity package

在 Python 中,您可以使用 nltk 包,具体来说,wup_similarity

在Java中,你可以使用ws4j package

【讨论】:

  • 感谢您的回复,现在我想知道LCS(Boat,Car)的深度是多少?是 3 还是 4?
  • 我建议您阅读有关 Tree 的更多信息 (en.wikipedia.org/wiki/Tree_(data_structure))。基本上深度是从树的根计算的。使用我的图表,根是Object。所以,Object 的深度是 0。现在,LCS(Boat, Car)Vehicle,所以深度是 1。
  • 应该是“最具体的概念”,所以最下面的还是Vehicle
  • @justhalf 感谢您的回答,但我意识到我的问题很愚蠢:D 很明显,它必须是最具体的概念,否则您总是会得到 1 的 LCS [因为例如一切都是由夸克(或原子或基本单位或其他)]:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2011-03-21
相关资源
最近更新 更多