Estoy consiente que esto no tiene mucho que ver con la esencia del foro,
pero necesito de esas mentes brillantes y criteriosas de este para darle
forma a mi proyecto de "bloc de notas" con corrector ortográfico.-
Lo que llevo hecho:
1): Si la palabra está bien escrita(está en el diccionario, todo ok)
2): De no ser así busco una a una las letras(con igual longitud) y si hay 1 o 2
diferencias las incluyo para mostrar posibles palabras correctas.-
Hasta hay está casi correcto, casi porque por momentos aparecen
20 o más coincidencia y no se pueden ni mostrar.-
Pero las dudas me las da las hache al comienzo y en el interior de las palabras.-
¿alguna idea?.-
Mi idea con las haches:
Al inicio: "hirvieron", si la palabra a corregir es "irvieron" fácil, busco palabras en el
diccionario que tengan una letra más y comparo "irvieron" con "irvieron"
y la agrego con un error, pero que pasa si la palabra a corregir es "irbieron"
(lo mando a la primaria, jajajajaj).-
Con una hache intermedia "albahaca" comparo "alba" y "aca" y si coinciden la agrego.-
Les dejo lo que llevo hecho, si alguien desea ayudarme muchas gracias...
Aclaro que tengo conocimiento de la existencia de las bibliotecas "autocorrect"
"pyspellchecker" "textblob" es para practicar e ir aprendiendo el lenguaje más
en profundidad.-
import codecs
def main():
lemario = leer_lemario()
palabra = True
while palabra:
palabra = input("Ingrese la palabra a corregir...: ")
if buscar_palabra(palabra, lemario) == True:
print(f'\nLa palabra "{palabra}" existe en el diccionario y es correcta.\n')
else:
parecidos = buscar_parecidos(palabra, lemario)
if len(parecidos) >= 1 and len(parecidos) <= 10:
print(f'Palabras parecidas:\n{parecidos}\n')
else:
print("Posible faltante de hache...")
def leer_lemario():
lemario = []
with codecs.open('Ortografia.txt', 'r', encoding='utf-8') as archivo:
for linea in archivo:
linea = linea.strip()
if len(linea) > 0:
lemario.append(linea)
return lemario
def buscar_palabra(palabra, lemario):
for lema in lemario:
if palabra == lema:
return True
return False
def buscar_parecidos(palabra, lemario):
parecidos = []
for lema in lemario:
if len(lema) == len(palabra) and letras_distintas(lema, palabra) <= 2:
parecidos.append(lema)
return parecidos
def letras_distintas(palabra, lema):
errores = 0
for i in range(len(palabra)):
if palabra[i] != lema[i]:
errores = errores + 1
return errores
main()
Slds. Daniel ☕☕☕