вычисление семантического сходства между наборами предложений

У меня есть два набора коротких сообщений, я хочу вычислить сходство между этими двумя наборами и определить, говорят ли они об одной и той же подтеме, на основе их семантического сходства. Я знаю, как использовать попарное сходство, моя проблема. Я хочу вычислить общее сходство между всеми предложениями в двух наборах, а не для двух предложений. Есть ли способ использовать tf-idf или word2vec / doc2vec с косинусом сходства для расчета общей оценки?


person user_88    schedule 02.08.2019    source источник
comment
Похоже, вы знаете ответ! Возьмите среднее количество вложений слов для всех предложений в каждом наборе, а затем вычислите косинусное сходство между двумя результирующими векторами?   -  person ongenz    schedule 02.08.2019
comment
@ongenz это возможно для модели tf-idf?   -  person user_88    schedule 02.08.2019


Ответы (2)


По сути, я взял векторы каждого слова в каждом предложении.

Затем возьмите среднее значение двух векторов и выполните косинусное сходство.

Конечно, прежде чем вы это сделаете, вам понадобится обученная модель word2vec. Подобие doc2vec делает то же самое, поскольку внутренне сохраняет модель word2vec.

Итак, у вас есть два варианта: обучить doc2vec и использовать его сборку по подобию или обучить word2vec и выполнить работу самостоятельно.

person Borislav Stoilov    schedule 02.08.2019
comment
Могу ли я взять среднее значение попарной матрицы, полученной в результате вычисления косинусного сходства? - person user_88; 02.08.2019
comment
Если я вас правильно понимаю, да, можете. Просто преобразуйте каждое предложение в векторы с помощью Word2Vec и передайте полученный массив векторов в модель Tf-idf. Я использую gensim, см. Этот radimrehurek.com/gensim/tut2.html - person Borislav Stoilov; 02.08.2019

Infersent помогает найти семантическое сходство

person sree lakshmi    schedule 17.06.2021