【问题标题】:How to find distance between two synset using python nltk in wordnet hierarchy?如何在 wordnet 层次结构中使用 python nltk 查找两个同义词集之间的距离?
【发布时间】:2014-03-28 17:24:05
【问题描述】:

假设我有两个同义词集 synset(car.n.01') 和同义词集('bank.n.01') 如果我想在 wordnet 层次结构中找到这两个同义词集之间的距离,那么我该如何使用nltk?
我在互联网上搜索,但我得到了相似算法,如 lin、resnik、jcn 等,这不是我的问题的解决方案。
请帮我解决这个问题。

【问题讨论】:

  • 为什么resnik similarity 不能解决您的问题?另外,距离是从一种感觉到另一种感觉需要跨越的系统集的数量吗?
  • resnik 适用于 ('v','v') 和 ('n','n') 对,它给出相似度分数,我希望同义词集之间的距离和距离可能不是同义词集越过到达或您可以建议的其他术语。

标签: python nlp nltk wordnet


【解决方案1】:

此外,您还可以查看聊天机器人的实现。

"chatterbot comparison class"

你会在那个文件中发现更多的距离处理

【讨论】:

    【解决方案2】:

    来自this

    路径相似度、wup_similarity 和 lch_similarity,所有这些都应该有效,因为它们基于 Wordnet 层次结构中两个同义词集之间的距离。

    dog = wn.synset('dog.n.01')
    cat = wn.synset('cat.n.01')
    
    dog.path_similarity(cat)
    
    dog.lch_similarity(cat)
    
    dog.wup_similarity(cat)
    


    来自同一个链接,(相关部分以粗体显示)

    synset1.path_similarity(synset2):

    返回表示相似程度的分数 两个词义,基于连接 is-a(hypernym/hypnoym)分类法中的意义。分数在 范围 0 到 1,除非在无法找到路径的情况下(将 仅适用于动词,因为有许多不同的动词分类法),在 返回哪种情况 -1。 1分代表身份,即 将感觉与自身进行比较将返回 1。


    synset1.lch_similarity(synset2),Leacock-Chodorow 相似度:

    返回一个 分数表示两个词义的相似程度,基于最短的 连接感官的路径(如上)和最大深度 感官发生的分类学。关系为 -log(p/2d) 其中 p 是最短路径长度,d 是分类深度。


    synset1.wup_similarity(synset2),Wu-Palmer 相似度:

    返回分数 表示两个词义的相似程度,基于深度 分类学中的两种意义及其最不常见的归类 (最具体的祖先节点)。注意此时给出的分数 总是同意 Pedersen 的 Perl 给出的那些 Wordnet 相似度的实现。

    【讨论】:

    • 感谢公理的回复。但这里的问题是这些相似性算法仅适用于名词-名词和动词-动词对。我想使用同义词之间距离的概念来检查单词是否是多义词,例如假设词库有 12 个同义词,其中一些与“金融部门”有关,有些与'河岸'。我想找出同一个词的各种同义词组合之间的距离,这样如果单个分数低于阈值,那么它将被视为多义词。
    • @Madhusudan Wu-Palmer 会为您做到这一点。比较这些:wn.wup_similarity(wn.synset('bank.n.01'), wn.synset('bank.n.03')) 是 0.61,wn.wup_similarity(wn.synset('bank.n.01'), wn.synset('bank.n.04')) 是 0.16
    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 2015-09-22
    • 2023-03-11
    • 2014-08-31
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多