Матрица сходства -> Алгоритм векторов признаков? - PullRequest
6 голосов
/ 12 октября 2011

Если у нас есть набор из M слов и мы заранее знаем сходство значений каждой пары слов (имеем матрицу сходств M x M), какой алгоритм мы можем использовать для создания одного k-мерного битового векторадля каждого слова, чтобы можно было сравнить каждую пару слов, просто сравнивая их векторы (например, получая абсолютную разницу векторов)?

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


Дополнительное наблюдение:

Я думаю, что этот алгоритм иметь для получения одного, в данном случае желаемого, побочного эффекта.Если из матрицы слово A похоже на слово B, а B похоже на C, но обнаруживается низкое сходство [A, C], то вычисленная разница векторов результата должна также привести к высокому сходству [A, C].Таким образом, мы должны были заполнить предыдущие пробелы в матрице - сгладить сходства с этим алгоритмом.Но помимо этого сглаживания цель состоит в том, чтобы получить результаты, максимально приближенные к исходным числам, которые мы имели в матрице.

Ответы [ 2 ]

7 голосов
/ 12 октября 2011

Вы можете выполнить усеченное разложение по сингулярным значениям (SVD), чтобы найти наилучшее приближение k-ранга для матрицы.Идея состоит в том, чтобы разложить матрицу на три матрицы: U, sigma и V, чтобы U и V были ортонормированными, а sigma диагональными..

0 голосов
/ 12 октября 2011

Если вас интересует только первый собственный вектор + собственное значение, вероятно, будет полезна итерация мощности.Однажды я использовал его для извлечения ключевых слов из текстовых документов.(в зависимости от расстояния между словами в предложениях, но, вероятно, и сходство будет работать)

...