2014-04-16 7 views
2

Я ищу способ измерения семантического расстояния между двумя предложениями. Предположим, мы имеем следующие предложения:Расстояние между значениями двух предложений

(S1) The beautiful cherry blossoms in Japan. 
(S2) The beautiful Japan. 

S2 создается из S1, устраняя слова «вишня», «цветет» и «в». Я хочу определить функцию, которая дает большое расстояние между S1 и S2. Причиной этого является то, что они имеют существенно различный смысл, так как красивое изменяет цветение вишни, а не Японию.

+0

Это очень сложная проблема. Ближайшая задача, о которой я знаю, - это определение парафраз, где вы хотите определить, семантически ли два предложения связаны друг с другом. http://aclweb.org/aclwiki/index.php?title=Paraphrase_Identification_(State_of_the_art) –

ответ

5

Как заметил Роб, это очень сложная проблема. Это требует, чтобы программа не только понимала лингвистическую семантику, но также имела значение encyclopedic знания. Например, когда мы говорим «Красивые цветущие сакуры в Японии», говорим ли мы о красивой вишне, и, случается, расцветают в Японии, или мы говорим о едином коллективном «вишневом цвете», который красив и случается, в Японии? Для этого требуется сочетание энциклопедического и лингвистического знания.

С чисто энциклопедической точки зрения, рассмотрим предложения

  1. Красивых цветущей сакуры в Японии.
  2. Красивая сакура в Японии.
  3. Красивые цветы в Японии.

Первые два идентичны, а третий тесно связан, но не идентичен. Установление расстояния предложения, основанного на таком знании, выходит за рамки всего лишь грамматического анализа и требует использования внешних онтологий (например, сакура = цветение вишни и цветок цветущей сакуры IS_A).

Сказав это, есть немного, что можно сделать, основываясь на деревьях разбора предложений. Например, если вы посмотрите на деревья синтаксического анализа из двух предложений, которые вы предоставили, вы сможете разбить их на фразы (NP, VP и т. Д.). Для многих примеров достаточно определить расстояние между двумя предложениями как максимальное расстояние между его составными фразами, где расстояние между фразами может, в свою очередь, основываться на лексических базах данных, таких как WordNet или онтологиях, таких как Yago.

Для WordNet доступным пакетом для измерения семантических расстояний является пакет Java WS4J. У них есть online demo as well. Эти семантические расстояния основаны на пути-расстоянии между двумя терминами в графе онтологии (кроме LESK, который просто вычисляет перекрытие терминов в словарных глоссах).

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

+0

Большое спасибо! –