Bonjour, je suis nouvelle sur le forum, et linguiste, et je fais du python depuis deux ans (je ne connais pas encore bien l'objet). Je suis actuellement en stage, et pour les besoins du programme que j'essaie de réaliser, j'ai besoin de compter les mots de chaque ligne d'un fichier. Mais je ne lis pas un fichier qui ne contient que des mots: il y a du bruit qui vient de balises html, même si j'en ai supprimé une grosse partie.
J'ai besoin de savoir si ma ligne contient bien des vrais mots, et si oui, combien;
Le problème auquel je suis confrontée vient des mots composés, mais seulement ceux avec deux tirets, par exemple: "c'est-à-dire", qui est compté comme un seul mot, à cause du "c'" et moi j'en veux deux.
Je réussis à compter tous les autres mots, en parcourant ma ligne, que je découpe comme ça:
re.split(" |'") et avec quelques instructions pour définir si le mot est bien composé d'une suite de caractères alphanumériques (oui parce que je dois compter "9" comme un mot), et ensuite je fais un search avec cette expression régulière :
"[A-Za-z][a-z]+-[a-z]+" pour trouver les mots composés. Mais pour "c'est-à-dire", ça ne fonctionne pas. J'ai essayé cette expression:
"[A-Za-z][a-z]+-[a-z]+-[a-z]+" mais ça me compte toujours un seul mot.
Je me demandais si quelqu'un voit une erreur dans l'expression régulière?
Ou si il y a une autre solution...
On m'a proposé une fonction qui utilise NLTK :
http://stackoverflow.com/questions/5...-an-input-file
Mais ça me paraît compliqué et j'aurais aimé éviter d'utiliser une bibliothèque externe... Enfin, je ne sais pas trop mais j'ai peur que ce soit trop lourd, parce que j'utilise déjà une autre bibliothèque externe dans la suite de mon programme.
Je vous remercie d'avance si vous pouvez m'aider.
Partager