如果有一条路径可以从两个常见的词组中找到一个最低的共同的上下义词,那么似乎应该有某种方法来回溯并找到导致该同名词的下义词
from nltk.corpus import wordnet as wn
alaska = wn.synset('Alaska.n.1')
california = wn.synset('California.n.1')
common_hypernym = alaska.lowest_common_hypernyms(california)[0]
common_hypernym
Synset('american_state.n.01')
common_hypernym.do_something_awesome()
['Alabama.n.1', 'Alaska.n.1', ...] #all 50 american states
较新的解决方案是:
这个旧函数是私有的,不能以这种方式工作,可能是其他的,但无论如何,您也可以选择
x.common.hypernyms(y)
来查找所有的公共项。在使用
Synset1._shortest_path_distance(Synset2)
来查找其上位词及其距离:现在找到最小路径:
^{pr2}$现在,这很无聊,因为}是WordNet层次结构中的姊妹节点。让我们过滤掉所有姐妹节点:
california
和{要获取
american_state
的子节点(我想这就是您需要的“something awesome”了…):这看起来可能令人震惊,但实际上,
alaska
或california
没有指定的上下位词:使用
_shortest_hypernym_paths
建立的连接是通过一个虚拟根来实现的,看一下Is wordnet path similarity commutative?相关问题 更多 >
编程相关推荐