Косинусное сходство между запросом и документами

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

Я манипулирую около 1000 файлов, чтобы сгенерировать частотную матрицу терминов с помощью [docID x term].

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

Мне дают запрос с терминами, которые я должен проанализировать через корпус, что я и сделал. И сгенерировал вектор, в котором все docID содержат хотя бы одно из слов.

Итак, я должен вычислить все эти векторы строк в терминах косинусного сходства?

Пример:

Запрос представляет собой список с расположением столбца и термин в матрице частот термин

OccurenceVector - это массив, где все документы, которые включают слова в запросе

Query = [[2796, 'crystalline'], [6714, 'lens'], [5921, 'including'], [5566, 'humans']]
OccurrenceVector = array([ 13,  14,  15,  72,  79, 138, 142, 164, 165, 166, 167, 168, 169,
   170, 171, 172, 180, 181, 182, 183, 184, 185, 186, 211, 212, 213,
   499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
   512, 513])

Мой мыслительный процесс такой:

  1. Термин Частотная матрица [docID x term] (строка x столбец)

  2. Получить запрос с условиями против корпуса

  3. Получить вектор со всеми docID, в которых встречаются эти термины

  4. Получить каждую строку, соответствующую этому извлеченному docID

  5. Вычислить косинусное сходство между всеми найденными строками?

Является ли это правильным способом вычисления косинусного подобия с многомерным массивом, подобным этому?

1 ответ

Решение

Я предлагаю вам взглянуть на 6-ю главу IR Book (особенно на 6.3).

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

Помните, что вы также можете выбрать вектор документа и вычислить его сходство со всеми другими документами в вашем корпусе. Таким образом, вы можете вычислить сходство между вашими документами.

Надеюсь это поможет.

ура

Другие вопросы по тегам