2010-04-23 5 views
1

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

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

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

EDIT: просто чтобы быть ясным, я пытаюсь выделить примерные экземпляры слова, такие как [mein] из более длинной строки, например. [Aiammeinlimeiking ...]. В идеале, алгоритм/инструмент должен сообщать о таких случаях, как [mein] с ценой 0.0 (точное совпадение), [meik] со стоимостью 0,7 (около матча) и т. Д. Для всех приближенных совпадений строк со стоимостью ниже заданного порога.

ответ

0

Я не знаю каких-либо фонетических распознавателей, которые используют матрицы замешательства. Я знаю Soundex и match rating.

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

+0

Спасибо за ответ. Возможно, я не объяснил это хорошо, но я должен выбрать такие строки с близким совпадением из гораздо более длинной строки, например. [mein] из [aiammeinlimeiking ...], где я пытаюсь извлечь тесные совпадения, такие как [mein] и [meik], с десятками 0.0 (точное совпадение) и 0.7 соответственно. Я не просто сравниваю две строки и вычисляю их разницу, поэтому я не уверен, поможет ли Soundex и другие алгоритмы. Если я ошибаюсь, дайте мне знать. –

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^