"Мягкое" сравнение строк
От: 8086  
Дата: 02.09.09 12:11
Оценка:
Допустим есть две текстовые строки введенные человеком. В каждой из строк возмножны разнообразные ошибки: пропуск букв, неправильно напечатанная буква, перестановки и пр. Как можно определить (конечно с определенной погрешностью), что эти две строки являются попыткой ввода одной и той же строки?

То есть, скажем qwerty,wqrty и qwerty,qsedft. Очевидно, что в первом случае вероятность того, что это одна и та же строка гораздо выше.
Re: "Мягкое" сравнение строк
От: RomikT Германия  
Дата: 02.09.09 12:15
Оценка: 10 (2)
Здравствуйте, 8086, Вы писали:

8>Допустим есть две текстовые строки введенные человеком. В каждой из строк возмножны разнообразные ошибки: пропуск букв, неправильно напечатанная буква, перестановки и пр. Как можно определить (конечно с определенной погрешностью), что эти две строки являются попыткой ввода одной и той же строки?


8>То есть, скажем qwerty,wqrty и qwerty,qsedft. Очевидно, что в первом случае вероятность того, что это одна и та же строка гораздо выше.


Расстояние Левенштейна и ссылки из «См. также»
Re: "Мягкое" сравнение строк
От: Sergey Chadov Россия  
Дата: 02.09.09 13:28
Оценка: 6 (1)
Здравствуйте, 8086, Вы писали:

8>Допустим есть две текстовые строки введенные человеком. В каждой из строк возмножны разнообразные ошибки: пропуск букв, неправильно напечатанная буква, перестановки и пр.


http://algolist.manual.ru/search/fsearch/index.php
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: "Мягкое" сравнение строк
От: Кодёнок  
Дата: 04.09.09 06:37
Оценка:
Здравствуйте, RomikT, Вы писали:

RT>Расстояние Левенштейна и ссылки из «См. также»


Шанс, что past это ошибка в написании post МНОГО ниже, чем что это ошибка в написании last, хотя по этой сферической метрике расстояние между обоими — 1. Алгоритм должен учитывать расстояние между буквами на раскладке.
Re[3]: "Мягкое" сравнение строк
От: Константин Россия  
Дата: 04.09.09 23:30
Оценка: +1
Здравствуйте, Кодёнок, Вы писали:

Кё>Шанс, что past это ошибка в написании post МНОГО ниже, чем что это ошибка в написании last, хотя по этой сферической метрике расстояние между обоими — 1. Алгоритм должен учитывать расстояние между буквами на раскладке.


Levenshtein distance

Possible improvements

Possible improvements to this algorithm include:
* We can give different penalty costs to insertion, deletion and substitution. We can also give penalty costs that depend on which characters are inserted, deleted or substituted


Изменения в алгоритме минимальны. Когда-то делал что-то подобное для сравнения результатов распознавания текста с эталоном.
Re: "Мягкое" сравнение строк
От: Silver_s Ниоткуда  
Дата: 06.09.09 14:46
Оценка:
Здравствуйте, 8086, Вы писали:

8>... Как можно определить (конечно с определенной погрешностью), что эти две строки являются попыткой ввода одной и той же строки?

8>То есть, скажем qwerty,wqrty и qwerty,qsedft. Очевидно, что в первом случае вероятность того, что это одна и та же строка гораздо выше.

Я как то писал похожий алгоритм на скорую руку (требования к качеству и призводительности были не высокие).
1) Определяется множество букв в каждом слове (т.е без учета порядка следования). Затем находится пересечение множеств. Затем мощность пересечения(число элементов) делится на среднее арифметическое мощностей исходных множеств для двух слов. Возможны разные вариации. Получается степень похожести множеств букв.
2) Затем строятся множества всех последовательностей из двух букв. И также находятся степени соответствия этих множеств.
3) Затем для трех и т.д.
...
Потом эти показатели для последовательностей разных длин сращиваются с оперделенными весовыми коэфицентами.
Получается, вроде, неплохой результат.

...Хотя конечно вероятность ошибки при наборе, и вероятность распознать слово при чтении(похожесть) это немного разное.
При восприятии, если первая буква и последняя на своих местах, а остальные переставлены, то слово очень похоже. А при наборе маловероятно что больше 3 букв будут случайно переставлены.
...Еще надо учитывать похожесть букв "a" больше похожа на "о", чем на "и" ... Гласные больше похожи на гласные...
Re: "Мягкое" сравнение строк
От: vdttf  
Дата: 09.09.09 09:20
Оценка:
Здравствуйте, 8086, Вы писали:

8>Допустим есть две текстовые строки введенные человеком. В каждой из строк возмножны разнообразные ошибки: пропуск букв, неправильно напечатанная буква, перестановки и пр. Как можно определить (конечно с определенной погрешностью), что эти две строки являются попыткой ввода одной и той же строки?


8>То есть, скажем qwerty,wqrty и qwerty,qsedft. Очевидно, что в первом случае вероятность того, что это одна и та же строка гораздо выше.


Думаю можно посмотреть триграмы и суффиксные деревья, на их основе сделана орфография в nigma.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.