Je suis en train d'analyser un texte scientifique lisible par un humain, principalement dans le domaine de la chimie. Ce qui m'intéresse, c'est de décomposer le texte en une liste de mots, de termes scientifiques (plus de détails ci-dessous) et de signes de ponctuation. Ainsi, par exemple, j'attends le texte "bonjour, monde". casser en 4 jetons: 1) "bonjour"; 2) virgule; 3) "monde" et 4) période. Notez que les espaces ne nécessitent pas de jetons spécialisés.Python: question sur l'analyse de texte lisible par l'homme
Le problème est lié aux "termes scientifiques": ce sont des noms de formules chimiques telles que "1-methyl-4-phenylpyridinium". Quiconque a déjà appris la chimie sait que ces formules peuvent être assez longues et contenir des chiffres, des tirets et des virgules, et parfois même des parenthèses, mais je pense qu'il est raisonnable de supposer que ces belles expressions ne peuvent pas contenir d'espaces. Aussi, je crois que ces expressions doivent commencer par un nombre. Je voudrais que chacune de ces expressions sorte comme un seul jeton. Aujourd'hui, j'utilise l'analyse manuelle pour trouver des «morceaux» de texte commençant par un nombre et se terminant par un espace, un saut de ligne ou un signe de ponctuation suivi d'un espace ou d'un saut de ligne.
Je me demandais s'il y avait une solution intelligente (regex ou autre) que je peux utiliser pour marquer le texte selon les spécifications ci-dessus. Je travaille en Python mais cela peut être agnostique.
Une entrée d'exemple (ne pas tenir compte de toute évidence le contenu ...):..
« Bonjour 1-méthyl-4-phénylpyridinium est ultra-mauvaise Cependant, le 1-méthyl-4-phényl-1,2, 3,6-tétrahydropyridine est pire. "
Exemple de sortie (chaque jeton dans sa propre ligne):
Hello
.
1-methyl-4-phenylpyridinium
is
ultra
-
bad
.
However
,
1-methyl-4-phenyl-1,2,3,6-tetrahydropyridine
is
worse
.
Je ne pense pas que vous soyez en train d'affirmer que les noms chimiques commencent par un nombre en attente, voir par ex. cis-2-butène. –