词消歧算法(Lesk算法)

时间:2010-05-01 14:34:36

标签: algorithm wordnet

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

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

3 个答案:

答案 0 :(得分: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. 选择具有最高分数的集合。
  7. 对于初学者来说,函数F只能返回两个节点之间节点数的倒数乘积:

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

当我在搜索lesk算法实现时,我需要查看this页面。 我认为它是JAWS包的一部分。 我还没用过它,但我想这会有所帮助