V
V
Vitaly2016-05-08 12:15:09
Algorithms
Vitaly, 2016-05-08 12:15:09

How to compare two texts and output the difference?

Приветствую.
Задача заключается в реализации алгоритма для сравнения 2 текстов.
Есть два текста, один правильный(эталонный), а другой ввёден пользователем(который нам нужно проверить). Нужно сравнить их, и во втором тексте найти и подсветить ошибки - неправильно написаное слово, пропущеный знак и т.д.
Писать это всё планируется в Qt на C++.
Нашёл алгоритмы на LCS (longest common subsequence), но там идёт проверка и выделение по строкам, а мне нужно выделять не всю строку а именно неправильное слово или знак.
Буду рад любым подсказкам и советам по решению этой задачи.
UPD: пишу проект

Answer the question

In order to leave comments, you need to log in

8 answer(s)
S
stepagrus, 2016-06-30
@MrCute

Сравнить два текста text.num2word.ru

Петр, 2016-05-08
@petermzg

Так преобразуйте тексты в наборы строк, где каждая строка это отдельное слово или знак.
Находите различия и собираете обратно в текст, подсвечивая различия.

D
Dark Hole, 2016-05-08
@abyrkov

На мой взгляд, главная сложность, что требуются 3 разные вещи при 3х типах ошибок:
При пропуске нужно идти дальше по оригиналу до совпадения
При добавке нужно идти по пользовательскому тексту до совпадения
При опечатке нужно идти "в чем не бывало".
Поэтому, алгоритм таков:
Идти по текстам (по буквам) до ошибки.
Пробуем "пропуск" идем по оригиналу дальше 10 символов с проверкой
- Если нашли совпадение 3х-4х символов - отмечаем ошибку и едем дальше
- Если не нашли совпадение - пробуем вариант "добавка" идем с проверкой по пользовательскому тексту 10 символов
- Если нашли совпадение - отмечаем ошибку и идем дальше
- Иначе считаем опечаткой

Константин Цветков, 2016-05-08
@tsklab

Писать это всё планируется
Зачем? Есть.

Зачем изобретать велосипед ? Воспользуйтесь этим.

X
xmoonlight, 2016-05-08
@xmoonlight

Делается проход с вычислением бинарной разницы одного слова относительно другого.
После обнаружения ошибки - фиксируете и затем двигаетесь дальше по эталонному тексту и ищите это "похожее" слово в набранном тексте.
Главное - грамотно определять "слова": отделять и не путать цифры и другие знаки со словами.

R
RuWeb, 2019-04-13
@RuWeb

Попробуй это https://texttools.ru/difference-checker

E
EkaterinaSklyarova, 2019-08-19
@EkaterinaSklyarova

В таких случаях, я обычно использую code compare

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question