Comprobador de terminología simple

Estoy buscando una herramienta simple que verifique la terminología del texto en función de una lista de reemplazo.

Ejemplo de una definición de reemplazo:

  • permitido: aplicación
  • no permitido: aplicación; considerar: aplicación
  • no permitido: programa; considerar: aplicación
  • permitido: programa de bonificación
  • no permitido: programa de recompensas; considerar: programa de bonificación

Texto de ejemplo:

Nuestra aplicación es compatible con el programa de recompensas.

Recomendaciones:

error: error de la aplicación
: programa de recompensas

Texto sugerido:

Nuestra aplicación es compatible con el programa de bonificación.

No encontrar:

error: programa

Tenga en cuenta cómo el software tiene que considerar plazos más largos sobre plazos cortos, de lo contrario habría demasiados falsos positivos.

Requisitos:

  • edición simple de la lista de reemplazo con herramientas gratuitas o Microsoft Office
  • formato legible por máquina de la lista de reemplazo para que podamos escribir herramientas que respalden el flujo de trabajo
  • ejecutar en Windows
  • es gratis/de código abierto
  • encuentra errores como se explicó anteriormente
  • resaltado de color
    • rojo: error
    • verde: término reconocido
    • Estoy buscando algún tipo de informe, no una modificación del archivo original. Puede ser un informe temporal que se muestra en la pantalla. No hay necesidad de ser salvado.
  • hace sugerencias como se explicó anteriormente
  • si se aplican varias sugerencias, deje que el usuario elija cuál tomar

Ya he probado:

  • TermXAct (alemán), pero a) es comercial y b) no prefiere los plazos largos a los cortos y c) no tiene todas las funciones
"Resaltado en color": ¿está solicitando un documento de salida (un informe) que tenga este resaltado o que se modifique el documento original para usar este resaltado?
@Kodiologist: gracias por la pregunta. Estoy buscando algún tipo de informe. Puede ser un informe temporal que se muestra en la pantalla. No hay necesidad de ser salvado.

Respuestas (1)

Aquí se explica cómo hacerlo en Python 3. Este programa tiene todas las funciones solicitadas, excepto el resaltado de color, porque la consola Win32 solo admite color a partir de la actualización Threshold 2 para Windows 10. La mayor parte de la complejidad del programa es para manejar el caso. de múltiples sugerencias.

 import sys, re, collections

 context_size = 30

 defs_path, doc_path = sys.argv[1:]

 defs = collections.defaultdict(list)
 with open(defs_path, 'rt') as o:
     for l in o:
         bad, _, good = l.strip().partition(' -> ')
         defs[bad].append(good)

 with open(doc_path, 'rt') as o:
     doc = o.read()

 def replacement_f(m):
     print('\nerror:', m.group())
     candidates = defs[m.group()]
     if len(candidates) == 1:
         print('Replacing with:', candidates[0])
         return candidates[0]
     print('There are multiple possible replacements.')
     print('Context:', re.sub(r'\s+', ' ', doc[
         max(m.start() - context_size, 0) :
         min(m.start() + context_size, len(doc))]))
     print('Candidates:', dict(enumerate(candidates)))
     while True:
        n = input('Enter a number: ')
        if n.isdigit() and int(n) < len(candidates):
            return candidates[int(n)]
 doc = re.sub(
     '|'.join(re.escape(bad) for bad in
         sorted(defs.keys(), key = len, reverse = True)),
     replacement_f,
     doc)

 print('\nResult:\n')
 print(doc)

Ahora suponga que tiene un archivo defs.txtcomo este:

app -> application
program -> application
bounty program -> bonus program
supports -> can use
supports -> has support for

y un archivo input.txtcomo este:

Our app supports the bounty program.

Si el programa de Python se llama script.py, puede ejecutarlo con el comando:

python3 script.py defs.txt input.txt

El resultado se ve así:

error: app
Replacing with: application

error: supports
There are multiple possible replacements.
Context: Our app supports the bounty program. 
Candidates: {0: 'can use', 1: 'has support for'}
Enter a number: 0

error: bounty program
Replacing with: bonus program

Result:

Our application can use the bonus program.
Guau, sabía que no era tan difícil de implementar, pero me sorprende lo breve que puede ser. Estoy en un entrenamiento para los próximos 3 días. Probaré la solución cuando vuelva a la oficina,