Publicidad

(Python) Bloc de notas con corrector ortográfico propio.

Publicado por Daniel1952, 30 Agosto de 2022, 15:04

Tema anterior - Siguiente tema

0 Usuarios y 1 Visitante están viendo este tema.

Daniel1952

Bloc de notas con corrector ortográfico propio.

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 ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Rock Lee

Creo tiene que ver mucho mas de lo que piensas... sin dudas es algo interesante para no ir por lo convencional y probar algo distinto, un pequeño reto para uno y eso ayuda mucho a entender mejor la lógica de atrás. Me gusto mucho tu aporte :D!


Saludos Familia!

Rafaelpa

CitarAclaro que tengo conocimiento de la existencia de las bibliotecas "autocorrect"
"pyspellchecker" "textblob" es para practicar e ir aprendiendo el lenguaje más
en profundidad.-

Si el código arriba del todo pones. Ya no hace falta codificarlo como latino

#!/usr/bin/env python3 o usr/bin/env/python
# -*- coding: utf-8 -*-

Como dices que tu intención es aprender y teniendo en cuenta que el código que has puesto no funciona simplemente porque python te parece más complicado de lo que es realmente.

Por ejemplo: en lugar de print(f'\nLa palabra "{palabra}" existe en el diccionario y es correcta.\n')

print("La palabra "+palabra+" existe en el diccionario y es correcta")
print "La palabra "+palabra+" existe en el diccionario y es correcta" # no hace falta que el print sea una funcion si me apuras
print "La palabra ",palabra," existe en el diccionario y es correcta" # para variables que sean diferentes str las comillas e int si fuesen números por ejemplo

En python no necesita categorizar ni definir las variables. Es un lenguaje que està pensado para tomar todo del modo más simple.

Así que no hace falta tantas funciones y caso de ponerlas las puedes meter todas en unn paquete class que al guardalo ya lo puedes usar como aplicación directamente. Pero aun así, guardado como .py puedes usar las funciones para otra cosa sin tener que volver a reescribir los codigo. Por ejemplo si quieres usar lo mismo en otro idioma. Català por ejemplo.

Un saludo

Te recomeniendo el libro "python fàcil" de Arnaldo Perez Castaño la primera parte es mucho de como meter y sacar datos y la segunda todo tipo de estructura de datos y algoritmos que no dudo te parecerá interesante.
En los 90: Nos decian que Internet conectaría al agricultor con el consumidor. Que cualquier persona podria competir con una multinacional mediante una página web simple. Que los intermediarios se extinguirian. La información libre y accesible implicaría que los paises se fuesen diluyendo.

Hoy: Los intermediarios son monopolísticos. Internet en la práctica menos de diez sitios, perdón aplicaciones privativas. Las fronteras son más duras. Periodistas, artistas, pensadores en todo el mundo sufren la represión de gobiernos y redes. La propiedad es intelectual, la mente de otros, es de alguien.

Temas Similares (5)