7
votes

JustAdistrAction: Tokenizing English sans houtespaces. MURAKAMI SHYPMAN

Je me demandais comment vous irait de goûter des chaînes en anglais (ou dans d'autres langues occidentales) si les espaces blanchisseurs ont été supprimés?

L'inspiration de la question est le personnage de l'homme de mouton dans le roman Murakami ' danse de danse danse '

Dans le roman, l'homme de mouton est traduit comme disant des choses comme:

"Likewesaid, NOUS NOUS NOUS NOUVELLES DE TRYTORECONNECTYOU, TOWHATYOUWANT", dit l'homme du mouton. "Butwecan'ddoIt seul. Yougottaworktoo."

Donc, une certaine ponctuation est conservée, mais pas tous. Assez pour un humain à lire, mais quelque peu arbitraire.

Quelle serait votre stratégie de construction d'un analyseur pour cela? Combinaisons communes de lettres, nombre de syllabes, grammaires conditionnels, look-avance / derrière des expansions, etc.?

Plus précisément, Python-sage, comment structureriez-vous un flux de traduction (pardonner)? Ne pas demander une réponse dûment remplie, tout simplement sur la manière dont votre processus de pensée irait de briser le problème.

Je le demande de manière frivole, mais je pense que c'est une question qui pourrait obtenir des réponses intéressantes (NLP / crypto / fréquence / sociale). Merci!


0 commentaires

4 Réponses :


4
votes

J'ai fait quelque chose comme ça pour travailler il y a environ huit mois. Je viens d'utiliser un dictionnaire de mots anglais dans une haquetable (pour O (1) de recherche). J'irais une lettre par lettre correspondant à des mots entiers. Cela fonctionne bien, mais il y a de nombreuses ambiguïtés. (Cul peut être un cul frappé ou comme merde). Résoudre ces ambiguïtés nécessiterait une analyse de la grammaire beaucoup plus sophistiquée.


3 commentaires

Vous pouvez essayer un arbre de radiocommunication à la lettre par lettre. Cela vous permettrait également de dire facilement s'il y avait des matchs potentiels plus longs.


Oh wow. J'avais pensé à quelque chose comme ça (un arbre avec 26 enfants sur chaque noeud, était ma pensée), mais mon patron a dit que c'était une idée ridicule. Je dois arrêter de l'écouter. > :(


+1 J'avais vraiment pensé à quelque chose comme ça il y a un moment. J'ai même couru dans les mêmes problèmes: "Bonjour là-bas" == "Hithere" == "frappé ici". "Pour l'obtenir" == "ensemble" == "ensemble".



2
votes

Tout d'abord, je pense que vous avez besoin d'un dictionnaire de mots anglais - vous pouvez essayer certaines méthodes qui s'appuient uniquement sur une analyse statistique, mais je pense qu'un dictionnaire a de meilleures chances de bons résultats.

Une fois que vous avez les mots, vous avez deux approches possibles:

Vous pouvez classer les mots dans les catégories de grammaire et utiliser une grammaire formelle pour analyser les phrases - évidemment, vous ne recevriez pas de match ni de matchs multiples - je ne connais pas la technique qui vous permettrait de desserrer la grammaire règles en cas de non-match, mais je suis sûr qu'il doit y en avoir.

D'autre part, vous pouvez simplement prendre un grand corpus de texte anglais et calculer des probabilités relatives de certains mots qui sont à côté de l'autre - obtenir une liste de paires et triples de mots. Étant donné que cette structure de données serait plutôt grande, vous pouvez utiliser des catégories de mots (grammaticales et / ou basées sur la signification) pour le simplifier. Ensuite, vous construisez simplement un automate et choisissez les transitions les plus probables entre les mots.

Je suis sûr qu'il y a beaucoup d'approches plus possibles. Vous pouvez même combiner les deux que j'ai mentionnés, construisant une sorte de grammaire avec du poids attaché à ses règles. C'est un champ riche pour expérimenter.


0 commentaires

1
votes

Je ne sais pas si cela vous aide beaucoup, mais vous pourrez peut-être utiliser Ce correcteur orthographique d'une certaine manière.


0 commentaires

1
votes

Ceci est juste un code rapide que j'ai écrit que je pense que je pense travailler assez bien pour extraire des mots d'un extrait comme celui que vous avez donné ... ce n'est pas complètement pensé, mais je pense que quelque chose aurait fonctionné sur ces lignes Impossible de trouver un type de solution pré-emballé

if cur_char == ',' or cur_char =='.':
   #do action to start new "word" automatically


0 commentaires