|
|
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Нужно сравнить два похожих текста и подсветить отличающиеся части, например как это делает Araxis Merge. Попробовал погуглить, но гуглятся лишь алгоритмы сравнения типа одинаковые/разные, меряющиеся производительностью. А мне нужно, например, на выходе получить два массива, в которых чередуются одинаковые и разные куски исходных строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 17:08 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
diff чем не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 17:18 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Возможно, тебе подойдут алгоритмы поиска [наибольшей] общей подстроки? Нашёл (есссно, вменяемо некороткие), вырезал (есссно запомнив, откуда), нашёл, вырезал... а что останется - то и есть различия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 17:20 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
White Owldiff чем не устраивает? дифф из цигвина не сравнивает кирилицу вроде? или в ютифи8 он её сравнивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 17:35 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
White Owldiff чем не устраивает?а это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 17:52 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariyWhite Owldiff чем не устраивает?а это что?утилита такая из стандартного набора GNU распространяющаяся в исходниках во всех дистрибутивах линуксов. Тебе ж алгоритм нужен? Ну так возьми и прочитай работающий пример. https://www.gnu.org/software/diffutils/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 18:06 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariyWhite Owldiff чем не устраивает?а это что? в первую очередь алгоритм поиска совпадающей подцепочки максимальной длины или же старая добрая юниксовая утилита ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 21:58 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
собственно алгоритм - http://www.angusj.com/delphi/textdiff.html но работает _построчно_ для "подсветить отличающиеся части, например как это делает Araxis Merge" придется допиливать - перед скармливанием алгоритму разбивать текст _пословно_ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 06:21 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Antonariy, ex1 abc def gkm & abc def 123 gkm Согласно вашей логике 123 будет подсвечено. ex2 abc 123 def gkm & abc def 123 gkm Будет ли что-то подсвечено в данном примере, и что именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 08:56 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
SashaMercuryex2 abc 123 def gkm & abc def 123 gkm Будет ли что-то подсвечено в данном примере, и что именно?будет подсвечено 123 в обеих строках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 11:10 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
command.comсобственно алгоритм - http://www.angusj.com/delphi/textdiff.html но работает _построчно_ для "подсветить отличающиеся части, например как это делает Araxis Merge" придется допиливать - перед скармливанием алгоритму разбивать текст _пословно_не подходит, нужно подсвечивать и куски слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 11:23 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 11:31 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
ага, только мне самому нужно такое в html забацать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 12:57 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:21 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
На гитхабе что-то было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:42 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Antonariyне подходит, нужно подсвечивать и куски слов.ты бы разобрался получше сначала алгоритм работает с двумя списками (последовательностями) неких сущностей (например, строк или символов или каких-то кусков текста), сравнивая их посущностно (покусочно) разбивка на эти куски - вне ответственности алгоритма, ему на вход подаются предварительно подготовленные последовательности. если сразу скормить ему отдельные символы - на выходе будет полная каша. имеет смысл сначала дать ему пару текстов, разбитых на строки, затем - пары _несовпадающих_ групп строк, разбитых на слова, а уже затем, если нужно - пары _несовпадающих_ слов посимвольно, чтобы получить подсветку отдельных символов, а не слов целиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:52 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariySashaMercuryex2 abc 123 def gkm & abc def 123 gkm Будет ли что-то подсвечено в данном примере, и что именно?будет подсвечено 123 в обеих строках. А почему не def? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:55 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
SashaMercuryAntonariyпропущено... будет подсвечено 123 в обеих строках. А почему не def?потому что abc 123 def и abc def отличаются лишь отсутствием 123. в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо. работает не идеально, но ко всему, чему нужно, внимание привлекает: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:49 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Да, делал сам похожую штуку. Есть разные алгоритмы создания диффов - они отличаются используемой эвристикой, т.к. "честный" дифф достаточно тяжел вычислительно. На что следует обратить внимание: - https://ru.wikipedia.org/wiki/Наибольшая_общая_подстрока - https://ru.wikipedia.org/wiki/Расстояние_Левенштейна - обобщить для удаления и вставки подстрок вместо отдельных символов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 18:47 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariySashaMercuryпропущено... А почему не def?потому что abc 123 def и abc def отличаются лишь отсутствием 123. в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо. работает не идеально, но ко всему, чему нужно, внимание привлекает: строки не такие. А такие: abc 123 def и abc def 123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 02:41 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
SashaMercuryAntonariyпропущено... потому что abc 123 def и abc def отличаются лишь отсутствием 123. в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо. работает не идеально, но ко всему, чему нужно, внимание привлекает: строки не такие. А такие: abc 123 def и abc def 123а если бы были abc def 123 и abc 123 def, то подсветилось бы def. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 10:09 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Antonariyесли бы были abc def 123 и abc 123 def, то подсветилось бы def.В рамках задачи на поиск отличающихся вставок это имхо некорректно. SashaMercuryex2 abc 123 def gkm & abc def 123 gkm Будет ли что-то подсвечено в данном примере, и что именно? Мне кажется, что корректная подсветка должна быть такой: abc 123 def gkm | abc def 123 gkm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 10:45 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AkinaМне кажется, что корректная подсветка должна быть такой: abc 123 def gkm | abc def 123 gkm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:31 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AkinaМне кажется, что корректная подсветка должна быть такой: abc 123 def gkm | abc def 123 gkm а почему не такой вариант? abc 123 def gkm | abc def 123 gkm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:33 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)а почему не такой вариант?В подавляющем большинстве случаев сравниваются исходная и конечная версии. А показанный вариант хорош для сравнения двух независимых конечных версий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 14:38 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariySashaMercuryпропущено... строки не такие. А такие: abc 123 def и abc def 123а если бы были abc def 123 и abc 123 def, то подсветилось бы def. Хорошо. Тогда что по вашему должно быть подсвечено в таком случае. Внимательно изучите две строки и ваш предыдущий ответ, прежде чем сделать вывод. И объясните его пожалуйста abcdefgklmn AND abcefgklmnd Судя по вашей логике, подсеченным будет следующие элементы abcd efgklmn AND abc efgklmn d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 02:35 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
SashaMercuryAntonariyпропущено... а если бы были abc def 123 и abc 123 def, то подсветилось бы def. Хорошо. Тогда что по вашему должно быть подсвечено в таком случае. Внимательно изучите две строки и ваш предыдущий ответ, прежде чем сделать вывод. И объясните его пожалуйста abcdefgklmn AND abcefgklmnd Судя по вашей логике, подсеченным будет следующие элементы abcd efgklmn AND abc efgklmn d А если это так, то алгоритм сравнения двух строк тривиальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 02:36 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Кстати, судя по приведённому в 19692849 фрагменту, единицей сравнения должно быть слово, а не символ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:14 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
SashaMercuryAntonariyпропущено... а если бы были abc def 123 и abc 123 def, то подсветилось бы def. Хорошо. Тогда что по вашему должно быть подсвечено в таком случае. Внимательно изучите две строки и ваш предыдущий ответ, прежде чем сделать вывод. И объясните его пожалуйста abcdefgklmn AND abcefgklmnd Судя по вашей логике, подсеченным будет следующие элементы abcd efgklmn AND abc efgklmn dнеа abcdefgklmn AND abcefgklmnd Это не моя логика, это логика araxis merge, и она работает как надо. Если в тексте пропущена буква, то он подсветит место, откуда буква пропала в первой строке (вставляет голубенькую полоску между буквами) и ее наличие в этом месте во второй строке. То, что текст efgklmn из-за пропавшей/появившейся буквы сдвинулся, не значит, что он изменился. Пользователю же нужно видеть семантическое изменение строки, а не физическое, и алгоритм наибольших подстрок хорошо сохраняет именно семантические сходства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 12:10 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Antonariyabcdefgklmn| AND abc|efgklmndвот так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 12:15 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
Antonariy, и алгоритм наибольших подстрок хорошо сохраняет именно семантические сходства.может бьть, что- то такое будет лучше? https://habrahabr.ru/post/114997/ хотя и сложнее намного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 20:50 |
|
||
|
Поскажите алгоритм сравнения строк
|
|||
|---|---|---|---|
|
#18+
AntonariyНужно сравнить два похожих текста и подсветить отличающиеся части, например как это делает Araxis Merge. Попробовал погуглить, но гуглятся лишь алгоритмы сравнения типа одинаковые/разные, меряющиеся производительностью. А мне нужно, например, на выходе получить два массива, в которых чередуются одинаковые и разные куски исходных строк. Я такое на angularjs делал в качестве тестового задания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 19:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340598]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 391ms |

| 0 / 0 |
