我想使用 Wu 和 Palmer 方法在 wordnet 中计算相似度,
wp = (2 X depth(lcs)) / (depth(synset1) + depth(synset2))
其中 lcs
是 synset1
和 synset2
的“最不常见的子消费者”
我的问题是:
- 什么是“最不常见的子消费者”?
- 如何计算?
最佳答案
根据这个paper ,两个概念A和B的Least Common Subsumer是“最具体的概念,它是A和B的祖先”,其中概念树由is-a
关系定义。一个概念被定义为另一个概念的祖先,就像你在人类家谱中定义祖先的方式一样,它是另一个概念的 parent ,祖 parent ,等等。例如:
- 汽车是汽车,汽车是交通工具
- 船是一种交通工具。
- 车辆是一个对象。
图表:
Object | Vehicle | --------- | | Boat Automobile | Car
在这种情况下,“automobile”是“car”的父级(也是祖先),而“vehicle”是“car”的祖先。 “车”也是“船”的始祖。在这种情况下,“船”和“汽车”的 LCS 是“车辆”,因为它是最具体的概念,是“船”和“汽车”的祖先。请注意,虽然“object”是“boat”和“car”的共同子类,但它并不是最不重要的,因为“object”(在本例中是“vehicle”)仍然有一个子类,这也是一个常见的“车”和“船”的总称。 “Automobile”并不是最不常见的子类,因为它不是“boat”的祖先。
为了计算相似度,我建议你使用可用的库,否则你需要自己构建概念图,这很麻烦。
在 Perl 中,您可以使用 WordNet::Similarity package
在 Python 中,您可以使用 nltk 包,具体来说,wup_similarity
在 Java 中,您可以使用 ws4j package
关于algorithm - 什么是 "least common subsumer"以及如何计算它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629469/