Я делаю Java-проект, в котором мне нужно создать программу схожести текста.Я хочу, чтобы он взял 2 текстовых документа, затем сравнил их друг с другом и получил сходство.Насколько они похожи друг на друга.
Позже я добавлю уже базу данных, в которой можно найти синонимы для слов, и просмотрите текст, чтобы увидеть, изменил ли один из авторов текстовых документов толькослова к другим синонимам, а текст точно такой же.То же самое с перемещением параграфов вверх или вниз.Да, как это была программа по борьбе с плагиатом ...
Я хочу услышать от вас людей, какие алгоритмы вы бы порекомендовали.
Я нашел сходство Левенштейна и Косинуса, посмотрев здесь и в других местах.Обе они, кажется, упоминаются много.Дистанция Хэмминга - это еще один рассказ, о котором мне рассказал мой учитель.
У меня есть несколько вопросов, связанных с ними, так как я не получаю Википедию.Может ли кто-нибудь объяснить мне эти вещи?
Левенштейн : Этот алгоритм был изменен с помощью sub, добавьте и исключите слово и посмотрите, насколько оно близко к другому слову в текстовом документе.Но как это можно использовать для всего текстового файла?Я вижу, как его можно использовать в слове, но не в предложении или текстовом документе от одного к другому.
Косинус : Это мера сходства между двумя векторами путем измерения косинуса угла между ними.Что я не понимаю здесь, как два текста могут стать 2 векторами, и как насчет слов / предложения в них?
Хэмминга : Это расстояние, кажется, работает лучше, чем Левенштейн, но оно только на равных строках.Почему так важно, когда 2 документа и даже предложения в них не являются двумя строками одинаковой длины?
Википедия должна иметь смысл, но это не так.Извините, если вопросы звучат слишком глупо, но это меня подвешивает, и я думаю, что здесь есть люди, которые вполне способны объяснить это, так что даже новички в этой области могут получить это.
Спасибо за ваше время.