2010-04-23 5 views
1

Je suis en train de modéliser un outil de reconnaissance phonétique qui doit isoler des instances de mots (chaînes de téléphones) d'un long flux de téléphones qui n'a pas d'espace entre chaque mot. Le flux de téléphones peut avoir été mal reconnu, avec des substitutions de lettres/insertions/suppressions, donc je vais devoir faire une correspondance de chaîne approximative.Chaîne approximative correspondant à une matrice de confusion de lettres?

Cependant, je souhaite que l'appariement soit phonétiquement motivé, par ex. "m" et "n" sont similaires sur le plan phonétique, donc le coût de substitution de "m" pour "n" devrait être petit, comparé à "m" et "k". Donc, si je cherche [mein] "main", cela correspondrait à la séquence de lettres [meim] "maim" avec, disons, un coût de 0.1, alors que cela correspondrait à la séquence de lettres [meik] "make" avec, disons , coûte 0,7. De même, il y a des coûts différents pour l'insertion ou la suppression de chaque lettre. Je peux fournir une matrice de confusion qui, pour chaque paire de lettres (x, y), donne le coût de la substitution de x par y, où x et y sont des lettres ou des chaînes vides.

Je sais qu'il y a des outils disponibles qui font des correspondances approximatives telles que agrep, mais pour autant que je sache, ils ne prennent pas de matrice de confusion en entrée. C'est-à-dire, le coût de insertion/substitution/suppression = 1. Ma question est, existe-t-il des outils open-source déjà disponibles qui peuvent faire une correspondance approximative avec des matrices de confusion, et sinon, quel est un bon algorithme que je peut mettre en œuvre pour accomplir cela?

EDIT: juste pour être clair, j'essaie d'isoler des instances approximatives d'un mot tel que [mein] à partir d'une chaîne plus longue, par ex. [aiammeinlimeiking ...]. Idéalement, l'algorithme/outil devrait rapporter des instances telles que [mein] avec coût 0.0 (correspondance exacte), [meik] avec coût 0.7 (quasi correspondance), etc., pour toutes les correspondances de chaînes approximatives avec un coût inférieur à un seuil donné.

Répondre

0

Je ne connais aucun reconnaisseur phonétique utilisant des matrices de confusion. Je connais Soundex, et match rating.

Je pense que le K-nearest neighbour algorithm pourrait être utile pour le type d'approximations qui vous intéresse.

+0

Merci pour la réponse. Peut-être que je ne l'ai pas bien expliqué, mais je dois choisir des cordes de ce genre à partir d'une corde beaucoup plus longue, par ex. [mein] sur [aiammeinlimeiking ...] où j'essaie d'extraire des correspondances proches telles que [mein] et [meik], avec des scores de 0.0 (correspondance exacte) et de 0.7 respectivement. Je ne compare pas seulement deux chaînes et je calcule leur différence, donc je ne suis pas vraiment sûr si Soundex et les autres algorithmes pourraient aider. Si je me trompe, faites le moi savoir. –

0

Peter Kleiweg Rug/L04 (pour la dialectologie de calcul) comprend une mise en œuvre de la distance Levenshtein qui vous permet de spécifier l'insertion non uniforme, suppression et coûts de substitution.

Questions connexes