Алгоритм устранения неоднозначности слов (алгоритм Леска)

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

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

4 ответа

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

  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)))

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

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

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

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

Вот реализация Perl алгоритма http://senserelate.sourceforge.net/ вы можете использовать его из кода Java, но он требует некоторой работы по настройке.

Другие вопросы по тегам