¿Cómo verificar si una oración es correcta (verificación gtwigtical simple en Python)?

¿Cómo comprobar si una oración es válida en Python?

Ejemplos:

I love Stackoverflow - Correct I Stackoverflow love - Incorrect 

Echa un vistazo a NLTK . Tienen soporte para gramáticas que puedes usar para analizar tu oración. Puede definir una gramática, o usar una que se proporciona, junto con un analizador sin contexto. Si la oración analiza, entonces tiene gramática válida; Si no, entonces no lo hace. Es posible que estas gramáticas no tengan la cobertura más amplia (por ejemplo, puede que no sepan cómo manejar una palabra como StackOverflow), pero este enfoque le permitirá decir específicamente qué es válido o no válido en la gramática. El capítulo 8 del libro NLTK cubre el análisis y debe explicar lo que necesita saber.

Una alternativa sería escribir una interfaz python para un analizador de amplia cobertura (como el analizador de Stanford o C&C ). Estos son analizadores estadísticos que podrán entender oraciones incluso si no han visto todas las palabras o todas las construcciones gtwigticales antes. El inconveniente es que a veces el analizador todavía devolverá un análisis de una oración con mala gramática porque utilizará las estadísticas para hacer la mejor estimación posible.

Por lo tanto, realmente depende exactamente de cuál es su objective. Si desea un control muy preciso sobre lo que se considera gtwigtical, use un analizador sin contexto con NLTK. Si desea robustez y amplia cobertura, use un analizador estadístico.

Hay varios servicios web que proporcionan revisión automática y revisión gtwigtical. Algunos tienen una biblioteca de Python para simplificar la consulta.

Por lo que puedo decir, la mayoría de esas herramientas (sin duda después de la fecha límite y LanguageTool) están basadas en reglas. El texto verificado se compara con un gran conjunto de reglas que describen errores comunes. Si una regla coincide, el software lo llama error. Si una regla no coincide, el software no hace nada (no puede detectar errores para los que no tiene reglas).

Después de la fecha límite

 import ATD ATD.setDefaultKey("your API key") errors = ATD.checkDocument("Looking too the water. Fixing your writing typoss.") for error in errors: print "%s error for: %s **%s**" % (error.type, error.precontext, error.string) print "some suggestions: %s" % (", ".join(error.suggestions),) 

Rendimiento esperado:

 grammar error for: Looking **too the** some suggestions: to the spelling error for: writing **typoss** some suggestions: typos 

Es posible ejecutar la aplicación del servidor en su propia máquina, se recomiendan 4 GB de RAM.

LanguageTool

https://pypi.python.org/pypi/language-check

 >>> import language_check >>> tool = language_check.LanguageTool('en-US') >>> text = 'A sentence with a error in the Hitchhiker's Guide tot he Galaxy' >>> matches = tool.check(text) >>> matches[0].fromy, matches[0].fromx (0, 16) >>> matches[0].ruleId, matches[0].replacements ('EN_A_VS_AN', ['an']) >>> matches[1].fromy, matches[1].fromx (0, 50) >>> matches[1].ruleId, matches[1].replacements ('TOT_HE', ['to the']) >>> print(matches[1]) Line 1, column 51, Rule ID: TOT_HE[1] Message: Did you mean 'to the'? Suggestion: to the ... >>> language_check.correct(text, matches) 'A sentence with an error in the Hitchhiker's Guide to the Galaxy' 

También es posible ejecutar el lado del servidor de forma privada.

Jengibre

Además, esta es una biblioteca pirata (que raspa la pantalla) para Ginger, posiblemente una de las opciones de verificación de gramática gratuitas más pulidas que existen.

Microsoft Word

Debería ser posible crear una secuencia de comandos de Microsoft Word y utilizar su función de comprobación de gramática.

Más

Hay una lista curada de revisores de gramática en el sitio web de Open Office . Notado en los comentarios de Patrick.