词消歧算法(Lesk算法)

use*_*394 2 algorithm wordnet

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

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

Pra*_*rav 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)))

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