语义关联算法python

2024-10-01 17:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到两个synset之间的相关性,我遇到了很多算法,比如resnik、lin、wu-palmer、path算法、leacock-chodorow等,谁能告诉我这些算法中哪一个最有效?在


Tags: path算法linsynsetwupalmerresnikleacock
2条回答

从“show me an example”的角度来看,下面是一个示例,演示如何使用语义相似性来执行WSD:

from nltk.corpus import wordnet as wn
from nltk.tokenize import word_tokenize

def max_wupa(context_sentence, ambiguous_word):
  """ 
  WSD by Maximizing Wu-Palmer Similarity.

  Perform WSD by maximizing the sum of maximum Wu-Palmer score between possible 
  synsets of all words in the context sentence and the possible synsets of the 
  ambiguous words (see http://goo.gl/XMq2BI):
  {argmax}_{synset(a)}(\sum_{i}^{n}{{max}_{synset(i)}(Wu-Palmer(i,a))}

  Wu-Palmer (1994) similarity is based on path length; the similarity between 
  two synsets accounts for the number of nodes along the shortest path between 
  them. (see http://acl.ldc.upenn.edu/P/P94/P94-1019.pdf)
  """

  result = {}
  for i in wn.synsets(ambiguous_word):
    result[i] = sum(max([i.wup_similarity(k) for k in wn.synsets(j)]+[0]) \
                    for j in word_tokenize(context_sentence))
  result = sorted([(v,k) for k,v in result.items()],reverse=True)
  return result

bank_sents = ['I went to the bank to deposit my money',
'The river bank was full of dead fishes']
ans = max_wupa(bank_sents[0], 'bank')
print ans
print ans[0][1].definition

(来源:pyWSD @ github

请谨慎使用上述代码,因为您需要考虑:

  1. 当我们试图最大化上下文句子中所有标记的所有可能语法集和歧义词的可能语法集之间的路径相似性时,到底发生了什么?在
  2. 如果大多数路径相似性产生None,并且偶然得到一些与歧义词的一个synset相关联的流氓词,那么最大化是否合乎逻辑?在

首先,操作系统有点混淆了相关性和相似性,区别很好,但值得注意。在

语义相关性使用任何类型的关系来衡量两个概念之间的关联程度;算法:

  • 词汇链(Hirst和St Onge,1998)
  • 自适应/扩展感知重叠算法(Banerjee和Pedersen,2002/2003)
  • 矢量化意义重叠(Patwardhan,2003)

语义相似度只考虑IS-A关系(即上下义关系);算法:

  • Wu-Palmer测度(Wu和Palmer 1994)
  • Resnik测量(Resnik 1995)
  • 蒋康拉斯测度(Jiang and Conrath 1997)
  • Leacock-Chodorow测量(Leacock和Chodorow 1998)
  • 林测量(林1998)

Resnik、Jiang Conrath和Lin测度基于信息内容。一个语法集的信息内容是——记录该语法集中所有单词的所有概率(根据语料库频率计算)的总和(Resnik,1995)。在

Wu-Palmer和Leacock-Chodorow是基于路径长度的,两个概念/语法集之间的相似度分别是它们之间最短路径上的节点数。在

上面给出的列表是取之不尽的,但是从历史上看,我们可以看到,使用相似性度量有点过时,因为关联性算法考虑了更多的关系,理论上应该给比较概念更多的消歧能力。在


其次,效率定义不明确。是速度还是精度?语义相关性/相似性将应用于哪个任务?在

如果任务是词义消歧(WSD),那么最好参考Warin(2004)的论文:http://goo.gl/6wWums。或者更新的调查是Navigli(2009)http://dl.acm.org/citation.cfm?id=1459355

如果涉及到WSD,还有更复杂的工具/技术,请参考Anyone know of some good Word Sense Disambiguation software?


参考文献

Satanjeev Banerjee和Ted Pedersen。2002一种基于WordNet的词义消歧自适应Lesk算法。《第三届计算语言学与智能文本处理国际会议论文集》(CICLing’02),Alexander F.Gelbukh(编辑)。Springer Verlag,伦敦,英国,英国,136-145。在

Satanjeev Banerjee和Ted Pedersen。2003扩展光泽度重叠作为语义相关性的度量。第十八届国际人工智能联席会议记录,第805-810页,阿卡普尔科。在

Graeme Hirst和David St Onge,1998年。词汇链作为语境的表征,用于检测和纠正不良反应,第13章, 第305-332页。麻省理工学院出版社,剑桥,马萨诸塞州。在

西达斯·帕特瓦尔汉。2003结合词典和语料库信息- 语义关联性的上下文向量量度。大学硕士论文 明尼苏达州。在

(懒得列出所有引文,请搜索此答案并适当附加)

相关问题 更多 >

    热门问题