Приблизительное совпадение строк с матрицей путаницы букв? - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь смоделировать фонетический распознаватель, который должен изолировать слова (цепочки телефонов) из длинного потока телефонов, в котором нет пропусков между каждым словом. Поток телефонов, возможно, был плохо распознан, с заменами / вставками / удалениями букв, поэтому мне придется выполнить приблизительное сопоставление строк.

Однако я хочу, чтобы сопоставление было фонетически мотивированным, например, «m» и «n» фонетически похожи, поэтому стоимость замены «m» на «n» должна быть небольшой по сравнению, скажем, «m» и «k». Так что, если я ищу [mein] "main", он будет соответствовать последовательности букв [meim] "maim", скажем, стоимостью 0,1, тогда как он будет соответствовать последовательности букв [meik] "make", скажем, , стоимость 0,7. Точно так же существуют разные затраты на вставку или удаление каждого письма. Я могу предоставить матрицу путаницы, которая для каждой пары букв (x, y) дает стоимость замены x на y, где x и y - любая буква или пустая строка.

Я знаю, что есть доступные инструменты, которые приближаются к сопоставлению, такие как agrep, но, насколько я могу судить, они не принимают матрицу путаницы в качестве входных данных. То есть стоимость любая вставка / замена / удаление = 1. У меня вопрос, есть ли уже доступные инструменты с открытым исходным кодом, которые могут приблизительное сопоставление с матрицами путаницы, и если нет, то что такое хороший алгоритм, который я могу реализовать для достижения этой цели?

РЕДАКТИРОВАТЬ: просто чтобы быть ясно, я пытаюсь выделить приблизительные экземпляры слова, такие как [mein] из более длинной строки, например. [Aiammeinlimeiking ...]. В идеале алгоритм / инструмент должен сообщать о таких экземплярах, как [mein] со стоимостью 0,0 (точное совпадение), [meik] со стоимостью 0,7 (близкое совпадение) и т. Д., Для всех приблизительных совпадений строк со стоимостью ниже заданного порога.

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Питер Клейвег Rug / L04 (для вычислительной диалектологии) включает реализацию расстояния Левенштейна, которое позволяет указывать неоднородные затраты на вставку, удаление и замену.

0 голосов
/ 24 апреля 2010

Мне не известны никакие фонетические распознаватели, которые используют матрицы путаницы. Я знаю Soundex и рейтинг соответствия .

Я думаю, что алгоритм K-ближайшего соседа может быть полезен для интересующего вас типа приближений.

...