Как вычислить косинусное сходство между двумя разными КОРПУСАМИ? - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь оценить косинусное сходство между каждым документом i в корпусе A и всеми документами в корпусе B.

Есть идеи, как я могу сделать это эффективно? Я работаю с довольно большими наборами данных.

По сути, я хочу получить документ (ы) в корпусе B, который является (являются) наиболее похожим для каждого документа в корпусе A.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Взгляните на Модель векторного пространства . Эта статья ссылается на представление документов в виде tf-idf statisti c или термин частота-обратная частота документа . Это может помочь встроить документ так, чтобы сходство знаков могло быть эффективно вычислено.

Я бы построил (не) матрицу подобия, где каждый столбец соответствует расстояниям от документа в нулевой строке. Каждая строка может быть вычислена независимо. Так что, если бы вы могли распараллелить вычисления.

0 голосов
/ 10 апреля 2020
  1. Рассчитать вложение документа для каждого документа в корпусе A & B, используя преобразователи предложений .
  2. Рассчитать косинусное сходство между каждым встраиванием документа в A с аналогичным в B.
  3. Сортировка массивов точечного произведения по косинусному сходству.
  4. Извлечение первых N документов в B для каждого документа в A.
...