2013-04-25 2 views
18

Я хочу измерить семантическое сходство между двумя фразами/предложениями. Есть ли какие-либо рамки, которые я могу использовать напрямую и надежно?Измерение семантического сходства между двумя фразами

Я уже проверил this question, но его довольно старый, и я не нашел реального полезного ответа там. Было one link, но я нашел это ненадежным.

например:
У меня есть фраза: войлок измельченного
У меня есть несколько вариантов: силы внутрь, измельчали, уничтожали эмоционально, изменения формы и т.д.
Я хочу найти термин/фразу с самим высоким сходством с первым ,
Ответ здесь: разрушен эмоционально.

Большая картинка: Я хочу определить, какой кадр из FrameNet соответствует данному глаголу в соответствии с его использованием в предложении.

Обновление: Я нашел this library очень полезно для измерения сходства между двумя словами. Кроме того, механизм подобия ConceptNet очень хорош.

и this library для измерения семантического сходства между предложениями

Если у кого есть какие-либо идеи, пожалуйста, поделитесь.

+0

Взгляните на библиотеку семантических измерений: [http://www.semantic-measures-library.org] (http: //www.semantic-measures-library.org /) – Seb

ответ

8

Это очень сложная проблема.

Основной метод, который я могу придумать (прежде чем входить в более сложные процессы НЛП), - это применить косинус (или любую другую метрическую) подобие каждой пары фраз. Очевидно, что это решение было бы очень неэффективным на данный момент из-за проблемы несоответствия: предложения могут относиться к одной и той же концепции с разными словами.

Чтобы решить эту проблему, вы должны преобразовать начальное представление каждой фразы с более «концептуальным» значением. Одним из вариантов было бы расширить каждое слово с помощью его синонимов (т. Е. Используя WordNet, еще один вариант - применить метрики, такие как семантика распределения DS (http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf), которые расширяют представление каждого слова с более вероятными словами, которые должны появляться вместе с ним.

Пример: Представление документа: {«автомобиль», «гонка»} будет преобразовано в {«автомобиль», «автомобиль», «гонка»} с синонимами. Хотя с DS это будет что-то вроде: { «автомобиль», «колесо», «дорога», «пилот», ...}

Очевидно, что это преобразование не будет двоичным. Каждый член будет иметь некоторые связанные с ним веса.

Я надеюсь, что этот час ELPS.

+0

Спасибо за ваш ответ, но моя главная проблема здесь в том, что мне нужно что-то, что оценивает сходство как комбинированный термин, а не отдельные слова, как я упомянул в этом примере. – tejas

+0

Вы изменяете представление фраз на основе терминологических сходств. Например, с учетом двух предложений: S1: {"автомобиль", "гонка"} S2: {"motorbike}," speed "} При стандартном сходстве с косинусом вы получаете 0.0 сходства (поскольку никакие условия не являются общими). Но вы можете расширить это представление, используя «связанные термины» на основе DS, а затем фразы станут: S1: {«автомобиль», «гонка», «автомобиль», «автомобиль», «быстрый»} S2: {«мотоцикл», «скорость», «велосипед», «автомобиль», «быстрый») Теперь у вас есть сходство, основанное на «быстром» и «транспортное средство». – miguelmalvarez

0

Возможно, API cortical.io может помочь с вашей проблемой. Подход здесь состоит в том, что каждое слово преобразуется в семантический отпечаток пальца, который характеризует его смысл с помощью семантических функций 16K. Фразы, предложения или более длинные тексты преобразуются в отпечатки пальцев путем ORing отпечатков пальцев вместе. После этого преобразования в (числовое) двоичное векторное представление семантическое расстояние можно легко вычислить с помощью дистанционных мер, таких как евклидово расстояние или косинус-подобие. Все необходимые функции преобразования и сравнения предоставляются api.