2

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

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

4

3 回答 3

9

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

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

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

最大化(Product[i=0 to len(sentence); j=0 to len(sentence)] (1/D(node_i, node_j)))

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

于 2010-05-05T16:43:04.690 回答
2

是解决您问题的完美文档。该算法的acc不高,但我认为已经足够了。

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

于 2012-06-06T10:58:07.107 回答
1

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

于 2012-01-18T03:27:49.170 回答