Bonjour,
connaissez-vous un outil permettant de faire de la correction grammaticale depuis Python ?
Je viens de découvrir GRAC mais le projet est abandonné depuis 2005...
A défaut, connaissez-vous des façons de coder ce genre de chose ?
Bonjour,
connaissez-vous un outil permettant de faire de la correction grammaticale depuis Python ?
Je viens de découvrir GRAC mais le projet est abandonné depuis 2005...
A défaut, connaissez-vous des façons de coder ce genre de chose ?
Salut
N'y a-t-il pas des API pour attaquer le grammar checker d'Open Office?
- W
Note: Pour WORD, c'est simple: COM
Bonjour,
il y a bien ceci mais c'est en Java... Peut-on communiquer avec des classes Java ?
En fait, je n'avais pas lu cette page. On peut utiliser le logiciel en ligne de commande. Je vais tester cela.
Finalement, j'ai fait ceci :
Le fichier TXT est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #! /usr/bin/env python import os pathLanguageToolJar = r"LanguageTool-1.1/LanguageTool.jar" pathFile = "test.txt" sortie = os.popen("java -jar {0} -l fr -c utf8 {1}".format(pathLanguageToolJar, pathFile)) print(sortie.read())
Le code renvoie :Voici un petit textes, histoire de voir ce qu'il se passent.
Le seul souci que j'ai c'est qu'avec Python 3, il semble y avoir un problème d'encodage car j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Expected text language: French Working on test.txt... 1.) Line 1, column 10, Rule ID: ACCORD_NOMBRE[1] Message: «*petit*» et «*textes*» ne semblent pas bien accordés en nombre Voici un petit textes, histoire de voir ce qu'il se passent. ^^^^^^^^^^^^ 2.) Line 1, column 47, Rule ID: ACCORD_R_PERS_VERBE[3] Message: Vérifiez l'accord entre le pronom «*il*» et le verbe «*passent*». ...oici un petit textes, histoire de voir ce qu'il se passent. ^^^^^^^^^^^^^ Time: 316ms for 1 sentences (3.2 sentences/sec)
Ce qui renvoie cette erreur c'est l'instruction sortie.read()... Je vais voir si cela se "répare"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Traceback (most recent call last): File "/Users/cbal/Documents/myWorld/python/tutos/languageTool/test.py", line 11, in <module> print(sortie.read()) File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/codecs.py", line 300, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 112-113: invalid data
IMPORTANT ! Il faut que les mots soient correctement orthographiés. Donc en pratique, on utilisera par exemple pyEnchant pour l'orthographe, suivi de ce qui est ci-dessus pour la grammaire.
MISE A JOUR DU MARDI 2 NOVEMBRE 2010 : ajout d'infos sur les erreurs "grammaticales".
Enfin bon pour Python3 !
La sortie est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #! /usr/bin/env python3 # Sources : # http://docs.python.org/py3k/library/subprocess.html?highlight=subprocess#using-the-subprocess-module # http://www.developpez.net/forums/d922907/autres-langages/python-zope/general-python/affichage-resultat-commande-popen/#post5208308 import shlex import subprocess pathLanguageToolJar = r"LanguageTool-1.1/LanguageTool.jar" pathFile = "test.txt" # " -Dfile.encoding=UTF-8" given in the mailing list of LanguageTool. command_line = 'java -Dfile.encoding=UTF-8 -jar "{0}" -l fr -c utf8 "{1}"'.format(pathLanguageToolJar, pathFile) args = shlex.split(command_line) out=subprocess.Popen(args,stdout=subprocess.PIPE) (sout,serr)=out.communicate() # sout contains BYTES... sout = sout.decode('utf-8') print(sout)
Nous avons enfin des "strings" que je préfère aux "bytes"...Expected text language: French
Working on test.txt...
1.) Line 1, column 10, Rule ID: ACCORD_NOMBRE[1]
Message: «*petit*» et «*textes*» ne semblent pas bien accordés en nombre
Voici un petit textes, histoire de voir ce qu'il se passent.
^^^^^^^^^^^^
2.) Line 1, column 47, Rule ID: ACCORD_R_PERS_VERBE[3]
Message: Vérifiez l'accord entre le pronom «*il*» et le verbe «*passent*».
...oici un petit textes, histoire de voir ce qu'il se passent.
^^^^^^^^^^^^^
Time: 333ms for 1 sentences (3.0 sentences/sec)
Pour savoir ce que signifie chacune des erreurs, il faut regarder le fichier grammar.xml dans le dossier languageTool/LanguageTool-1.1/rules/fr.
Partager