Я работал над проектом о схожести предложений. Я знаю, что об этом много раз спрашивали в SO, но я просто хочу знать, может ли моя проблема быть решена с помощью метода, который я использую тем, как я это делаю, или я должен изменить свой подход к проблеме. Грубо говоря, система должна разбивать все предложения статьи и находить похожие предложения среди других статей, которые вводятся в систему.
Я использую косинусное сходство с весами tf-idf, и именно так я это сделал.
1. Сначала я разбиваю все статьи на предложения, затем создаю триграммы для каждого предложения и сортирую их (следует ли?).
2- Я вычисляю веса tf-idf триграмм и создаю векторы для всех предложений.
3- Я вычисляю скалярное произведение и величину исходного предложения и предложения, которое нужно сравнить. Затем вычислите косинусное подобие.
Однако система работает не так, как я ожидал. У меня в голове есть несколько вопросов.
Насколько я читал о весах tf-idf, думаю, они более полезны для поиска похожих «документов». Поскольку я работаю над предложениями, я немного изменил алгоритм, изменив некоторые переменные в формуле определений tf и idf (вместо документа я попытался придумать определение на основе предложений).
tf = количество вхождений триграммы в предложении / количество всех триграмм в предложении
idf = количество всех предложений во всех статьях / количество предложений, в которых встречается триграмма
Как вы думаете, можно ли использовать такое определение для этой проблемы?
Другой - я видел, что нормализация упоминается много раз при вычислении косинусного подобия. Я предполагаю, что это важно, потому что векторы триграмм могут быть разного размера (что в моем случае случается редко). Если вектор триграммы имеет размер x, а другой - x + 1, то я рассматриваю первый вектор так, как это был размер x + 1 с последним значением 0. Это то, что подразумевается под нормализацией? Если нет, как мне сделать нормализацию?
Помимо этого, если я выбрал неправильный алгоритм, что еще можно использовать для решения такой проблемы (желательно с подходом n-граммов)?
Заранее спасибо.