алгоритм устранения неоднозначности слов (алгоритм Леска) - PullRequest
2 голосов
/ 01 мая 2010

Hii .. Кто-нибудь может мне помочь найти алгоритм в коде Java, чтобы найти синонимы поискового слова на основе контекста, и я хочу реализовать алгоритм с базой данных WordNet.

Например, «Я запускаю программу на Java». Из контекста я хочу найти синонимы для слова «бег», но синонимы должны соответствовать контексту.

Ответы [ 3 ]

9 голосов
/ 05 мая 2010

Позвольте мне проиллюстрировать возможный подход:

  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 может просто вернуть произведение обратного числа узлов между двумя узлами:

Развернуть (Продукт [i = 0 до len (предложение); j = 0 до len (предложение)] (1 / D (node_i, node_j)))

Позже вы можете увеличить его сложность.

2 голосов
/ 06 июня 2012

Этот является идеальным документом для вашей проблемы.Признание алгоритма невелико, но я думаю, что этого будет достаточно.

На этой ссылке вы можете найти Java API для поиска в WordNet (JAWS).

1 голос
/ 18 января 2012

Привет, я взглянул на эту страницу, когда искал реализации алгоритма lesk. Я думаю, что это входит в пакет JAWS . я еще не использовал его, но думаю, это поможет

...