Каковы хорошие способы оценки «приблизительного» семантического сходства между предложениями? - PullRequest
18 голосов
/ 06 июля 2011

Последние пару часов я искал тег nlp на SO и уверен, что ничего не пропустил, но если я это сделал, пожалуйста, укажите мне на вопрос.

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

First of all, neither from the perspective of computational 
linguistics nor of theoretical linguistics is it clear what 
the term 'semantic similarity' means exactly. .... 
Consider these examples:

Pete and Rob have found a dog near the station.
Pete and Rob have never found a dog near the station.
Pete and Rob both like programming a lot.
Patricia found a dog near the station.
It was a dog who found Pete and Rob under the snow.

Which of the sentences 2-4 are similar to 1? 2 is the exact 
opposite of 1, still it is about Pete and Rob (not) finding a 
dog.

Моим требованием высокого уровня является использование кластеризации k-средних и категоризация текста на основе семантического сходства, поэтому все, что мне нужно знать, это приблизительное совпадение. Например, в вышеприведенном примере я в порядке с классификацией 1,2,4,5 в одну категорию и 3 в другую (конечно, 3 будет подкреплено еще несколькими похожими предложениями). Что-то вроде, найдите похожие статьи, но они не должны быть связаны на 100%.

Я думаю, что мне нужно в конечном итоге построить векторные представления каждого предложения, вроде своего отпечатка пальца, но что именно должен содержать этот вектор, для меня остается открытым вопросом. Это n-граммы, или что-то из сети слов, или просто отдельные слова, основанные на словах, или что-то совсем другое?

Эта ветка проделала фантастическую работу по перечислению всех связанных с ней техник, но, к сожалению, остановилась, как только публикация достигла того, что я хотел. Любые предложения о том, что является последним современным в этой области?

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Скрытое семантическое моделирование может быть полезным.По сути, это просто еще одно применение разложения по единственному значению . SVDLIBC - довольно приятная реализация этого подхода на C, которая является старенькой, но хорошей вещью, и даже есть привязка к python в виде sparsesvd .

2 голосов
/ 06 июля 2011

Я предлагаю вам попробовать среду моделирования тем, такую ​​как скрытое распределение Дирихле (LDA).Идея заключается в том, что документы (в вашем случае предложения, которые могут оказаться проблемой) генерируются из набора скрытых (скрытых) тем;LDA извлекает эти темы, представляя их в виде кластеров слов.

Реализация LDA в Python доступна как часть бесплатного пакета Gensim.Вы можете попробовать применить его к вашим предложениям, а затем запустить k -средства на его выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...