Очень быстрое подобие документа

Я пытаюсь определить подобие документа между единым документом и каждым большим количеством документов (n ~ = 1 миллион) как можно быстрее. Строго говоря, документы, которые я сравниваю, являются электронными письмами; они сгруппированы (т.е. существуют папки или теги), и я хотел бы определить, какая группа наиболее подходит для нового электронного письма. Высокая производительность очень важна.

Мое априорное предположение - то, что подобие косинуса между векторами терминов подходит для этого приложения; прокомментируйте, является ли это хорошей мерой для использования или нет!

Я уже принял во внимание следующие возможности для ускорения производительности:

  1. Предварительно нормализуйте все вектора терминов

  2. Вычислите вектор терминов для каждой группы (n ~ = 10,000), а не каждая электронная почта (n ~ = 1,000,000); это, вероятно, было бы приемлемо для моего приложения, но если можно думать о причине не сделать это, сообщите мне!

У меня есть несколько вопросов:

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

  2. Там некоторый умный путь состоит в том, чтобы только рассмотреть векторы, которые, вероятно, будут близко к документу запроса?

  3. Там некоторый путь состоит в том, чтобы быть более скромным об объеме памяти, который я использую для всех этих векторов?

Спасибо!

5
задан Peyton 13 May 2010 в 18:23
поделиться

1 ответ

Используйте байесовскую фильтрацию . Приведенная ссылка относится к фильтрации спама, но вы можете довольно легко адаптировать алгоритм к нескольким категориям / тегам.

Есть много хороших SO-вопросов о байесовской фильтрации .

4
ответ дан 15 December 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: