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