Быстрые измерения разности / сходства векторов - PullRequest
1 голос
/ 14 декабря 2010


Я работаю над проектом, в котором я использую генетические алгоритмы для создания списков слов, которые лучше всего описывают текст.
В настоящее время я использую косинусное сходство, чтобы сделать это, но у него есть два недостатка: он слишком медленный для цели и что, если два сравниваемых вектора равны нулю, он заканчивается искусственно высоким сходством и вектором слов, который не очень хорошо. Любые предложения для других мер, которые были бы быстрее / меньше обращать внимание на слова, которых нет? Спасибо.

1 Ответ

3 голосов
/ 14 декабря 2010

Косинусное сходство является точечным произведением по сравнению с произведением величин, поэтому крайне важно свести к минимуму количество измерений.

Чтобы немного отобрать стадо, вы можете применить , исходя из , ксвести слова с одинаковым значением в одно измерение и выбросить hapax legomena (слова, которые встречаются только один раз в рассматриваемом корпусе) из пула измерений, поскольку алгоритм невероятно, сможет извлечь из них много полезной информации.

Хотя я не уверен, что может привести к появлению нулевых векторов.Можете ли вы привести пример?

РЕДАКТИРОВАТЬ: Итак, что вам нужно, чтобы создать список слов, который выборочный для конкретного документа или кластера?В этом случае вам потребуются некоторые способы устранения слов с низкой селективностью.

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

Если вам нужна лучшая семантическая избирательность даже после настройки функции пригодности., вы можете рассмотреть возможность использования ортогональных разреженных биграмм вместо отдельных слов.Я понятия не имею, что он будет делать с точки зрения количества измерений, потому что пока будет O (kn 2 ) различных терминов вместо n , гораздо больше их будет гапакс.Это может вызвать проблемы, если вам нужны отдельные слова вместо OSB в списках терминов.

...