词消歧算法(Lesk算法)

问题描述 投票:2回答:3

Hii ..任何人都可以帮我在Java代码中找到一个算法,根据上下文查找搜索词的同义词,我想用WordNet数据库实现算法。

例如,“我正在运行Java程序”。从上下文中,我想找到单词“running”的同义词,但是同义词必须根据上下文合适。

algorithm wordnet
3个回答
9
投票

让我说明一种可能的方法:

  1. 让你的句子成为A B C
  2. 让每个单词都有同义词,即{A:(a1, a2, a3), B:(b1), C:(c1, c2)}
  3. 现在形成可能的synset集:(a1, b1, c1), (a1, b1, c2), (a2, b1, c1) ... (a3, b1, c2)
  4. 定义函数F(a, b, c),它返回(a,b,c)之间的距离(得分)。
  5. 在每个synset集上调用F.
  6. 选择具有最高分数的集合。

对于初学者,函数F只能返回两个节点之间节点数的倒数的乘积:

最大化(产品[i = 0到len(句子); j = 0到len(句子)](1 / D(node_i,node_j)))

稍后,您可以增加其复杂性。


2
投票

This是您问题的完美文档。算法的acc不高,但我认为这就足够了。

this链接上,您可以找到用于WordNet搜索的Java API(JAWS)。


1
投票

嗨,当我在搜索lesk算法实现时,我得看看this页面。我认为它是JAWS包的一部分。我尚未使用它,但我想这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.