Косинусное сходство является точечным произведением по сравнению с произведением величин, поэтому крайне важно свести к минимуму количество измерений.
Чтобы немного отобрать стадо, вы можете применить , исходя из , ксвести слова с одинаковым значением в одно измерение и выбросить hapax legomena (слова, которые встречаются только один раз в рассматриваемом корпусе) из пула измерений, поскольку алгоритм невероятно, сможет извлечь из них много полезной информации.
Хотя я не уверен, что может привести к появлению нулевых векторов.Можете ли вы привести пример?
РЕДАКТИРОВАТЬ: Итак, что вам нужно, чтобы создать список слов, который выборочный для конкретного документа или кластера?В этом случае вам потребуются некоторые способы устранения слов с низкой селективностью.
Возможно, вы захотите рассматривать самые распространенные слова как стоп-слова , чтобы еще больше отбросить набор измерений и немного вернуться назад.немного больше производительности.Кроме того, на стороне генетического алгоритма ваша функция пригодности должна штрафовать списки слов, которые соответствуют документам за пределами целевого кластера, а не просто вознаграждать за те, которые соответствуют документам в кластере, так что ваш список слов не будет загроможден терминами, которые являются просточасто, а не выборочно.
Если вам нужна лучшая семантическая избирательность даже после настройки функции пригодности., вы можете рассмотреть возможность использования ортогональных разреженных биграмм вместо отдельных слов.Я понятия не имею, что он будет делать с точки зрения количества измерений, потому что пока будет O (kn 2 ) различных терминов вместо n , гораздо больше их будет гапакс.Это может вызвать проблемы, если вам нужны отдельные слова вместо OSB в списках терминов.