• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Triton

[Python] Corrector ortográfico

1 mensagem neste tópico

import re, string, collections

def words(text): return re.findall('[a-z]+', text.lower())

def train(features):
   model = collections.defaultdict(lambda: 1)
   for f in features:
       model[f] += 1
   return model

NWORDS = train(words(file('Documents/holmes.txt').read()))

def edits1(word):
   n = len(word)
   return set([word[0:i]+word[i+1:] for i in range(n)] + ## deletion
              [word[0:i]+word[i+1]+word[i]+word[i+2:] for i in range(n-1)] + ## transposition
              [word[0:i]+c+word[i+1:] for i in range(n) for c in string.lowercase] + ## alteration
              [word[0:i]+c+word[i:] for i in range(n+1) for c in string.lowercase]) ## insertion

def known_edits2(word):
   return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in NWORDS)

def known(words): return set(w for w in words if w in NWORDS)

def correct(word):
   return max(known([word]) or known(edits1(word)) or known_edits2(word) or [word],
              key=lambda w: NWORDS[w])

Uso:

>>> correct('speling')

'spelling'

>>> correct('korrecter')

'corrector'

Retirado de Norvig.

O site não está disponível neste momento porque está a ser massacrado pelo Digg effect.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora