Подтвердить что ты не робот

Каковы некоторые хорошие способы оценки "приблизительного" семантического сходства между предложениями?

Я смотрел на тег nlp на SO в течение прошлых нескольких часов, и я уверен, что ничего не пропустил, но если бы я это сделал, пожалуйста, укажите мне вопрос.

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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