Проблема для lsi
Я использую скрытый семантический анализ для сходства текста. У меня есть 2 вопроса.
Как выбрать значение K для уменьшения размера?
Я много читаю везде, где эта БИС работает для сходных по смыслу слов, например, автомобиль и автомобиль. Как это возможно??? Какой магический шаг мне здесь не хватает?
2 ответа
Типичный выбор для k равен 300. В идеале, вы устанавливаете k на основе метрики оценки, которая использует сокращенные векторы. Например, если вы кластеризуете документы, вы можете выбрать k, которое максимизирует оценку решения кластеризации. Если у вас нет эталона для сравнения, я бы установил k в зависимости от размера вашего набора данных. Если у вас есть только 100 документов, то вам не потребуется несколько сотен скрытых факторов для их представления. Аналогично, если у вас есть миллион документов, то 300 могут быть слишком маленькими. Однако, по моему опыту, полученные векторы довольно устойчивы к большим изменениям k, при условии, что k не слишком мало (т.е. k = 300 примерно так же, как и k = 1000).
Возможно, вы путаете LSI со скрытым семантическим анализом (LSA). Это очень родственные методы, с той разницей, что LSI оперирует документами, а LSA оперирует словами. Оба подхода используют один и тот же вход (термин x матрица документа). Есть несколько хороших реализаций LSA с открытым исходным кодом, если вы хотите попробовать их. На странице Википедии LSA есть полный список.
попробуйте несколько различных значений из [1..n] и посмотрите, что работает для любой задачи, которую вы пытаетесь выполнить
Создайте матрицу корреляции между словами и словами (т.е. ячейка (i,j) содержит количество документов, где (i,j) сосуществуют) и используйте в ней что-то вроде PCA