0

J'ai une liste d'abréviations comme "ccd", "bbq", "phd" etc.Correspond à une abréviation comme "ccd", "bbq", "phd" etc à la chaîne la plus similaire d'un ensemble de chaînes

Par exemple, nous allons prendre "barbecue", nous essayons de cartographier cette abréviation à une liste de chaînes,

nation barbecue - La réponse réelle devrait être ce

BBQ Smoke and Grill

bière et Bakes Portes

Comment décider à quelle chaîne appartient l'abréviation. J'ai essayé d'utiliser la mise en correspondance de chaînes via KMP et l'algorithme Longest Common Subsequence avec un ajout supplémentaire d'ajouter plus de valeur aux chaînes qui ont été trouvées plus tôt.

Existe-t-il une structure de données pouvant aider ou un algorithme pouvant traiter de tels cas?

Merci!

+0

Avant de pouvoir faire quoi que ce soit, vous avez besoin d'un moyen de marquer comment une abréviation correspond à une chaîne; le problème devient alors celui de déterminer quelle chaîne a le score le plus élevé (dans le pire des cas, il suffit de calculer le score pour chacun d'entre eux, et choisir le plus élevé). Il y a plusieurs façons de marquer des matchs, mais je ne peux pas penser à ceux qui marqueraient "Barbeque Nation" plus haut que "BBQ Smoke and Grill" - et dans tous les cas, * vous * devez décider quelle fonction de scoring utiliser . –

Répondre

0

Ahh, problème de coréférence. Ma spécialité.

Une manière de voir cela est un problème de correction d'orthographe dans un dictionnaire. Ce que vous voulez, c'est avoir deux composants, une métrique de distance d'édition comme noté par j_random_hacker ET un dictionnaire qui liste toutes les abréviations acceptées. Vous voudrez peut-être inclure un nombre dans le dictionnaire afin que les formes longues plus communes comptent plus.

Le modèle de distance d'édition va être déterminé en fonction d'une métrique d'évaluation. Il y a un bon tutoriel sur la vérification orthographique à http://alias-i.com/lingpipe/demos/tutorial/querySpellChecker/read-me.html

Vous ne comptez pas utiliser un modèle de langage pour évaluer les modifications, mais il vous mis en place pour les indicateurs de performance, la distance d'édition, etc ...

Breck

Clarification pour la question de suivi:

Vos mesures dépendront des performances du système. Vous regardez ce que le système a eu raison, ce qui s'est mal passé et vous modifiez ensuite la distance d'édition pour mieux modéliser ce que vous voulez. Donc, le score du dictionnaire peut être si la phrase est dans ou hors du dictionnaire. Je commençais par le premier caractère avec un score de -1 par mot dans la phrase et -1 pour les mots de fonction sautés dans la phrase comme 'et', -5 pour sauter une lettre dans l'acronyme. Donc, "bbq", en regardant le dictionnaire peut être apparié à "Beer and Bakes Gates" avec un score de -8 (-1 + -1 + -1 + -5)

"Barbeque Nation" aura besoin de modifications ce score mieux. Ainsi, une lettre dans le même mot obtient des scores de -5 et le mot sauté est -6,5 (-,5 + - .5 + - .5 + -5), ce qui est un meilleur score. Ces coûts d'édition doivent être équilibrés sur l'ensemble de formation que vous avez qui devrait être plusieurs milliers d'exemples si vous voulez une généralité.

+0

Salut Breck, pouvez-vous s'il vous plaît laissez-moi savoir ce que toutes les mesures que je peux utiliser pour évaluer les modifications.Tout ce que je peux comprendre, c'est que je peux réduire le nombre de chaînes comparées (c'est-à-dire le dictionnaire des formes complètes acceptables d'abréviations) en vérifiant si les caractères des abréviations sont dans le même ordre dans la chaîne. –

+0

Désolé d'être si en retard dans la réponse. Les modifications apportées en réponse. –

+0

Merci Breck, va réfléchir sur ces lignes et voir comment le système fonctionne. –