1votos

Corrección ortográfica (Cualquier lenguaje + Pseudocodigo) en Haskell

por josejuan hace 4 años

En general, supongo que lo suyo es usar algún algoritmo como el Bitap, pero con alguna función de distancia de edición es posible también.

Encontrar la palabra mas probable de una lista de palabras, cuando esta puede o no contener errores o caracteres faltantes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import Data.List 
import Data.Function 
import Text.EditDistance 
 
-- Dado un diccionario y una palabra, devuelve alguna de las palabras del diccionario que más se le aproximan: 
revisada :: [String] -> String -> String 
revisada diccionario palabra = head $ sortBy (compare `on` (levenshteinDistance defaultEditCosts palabra)) diccionario 
 
 
 
 
-- por ejemplo, leer diccionario y pedir palabras 
main = do 
  dic <- readFile "kata_anagramas_wordlist.txt" >>= return . lines 
  let corregir = do 
        palabra <- getLine 
        if null palabra 
           then putStrLn "Terminado." 
           else putStrLn (">> " ++ revisada dic palabra) >> corregir 
  corregir 
 
{- 
 
[josejuan@centella Solveet]$ runghc corrector.hs 
cigueña 
>> cigüeña 
calamaza 
>> calabaza 
castana 
>> castaña 
 
Terminado. 
 
-} 
1 comentario
0votos

Escrito por ThinkArts hace 4 años

Hola josejuan. Pero que sencillo lo has hecho, y yo peleando con probabilidades jaja ;). Muy simple, mi punto para vos.
Acabo de aprender la distancia de Levenshtein, gracias!!. Saludos

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.