Γνωρίζει κανείς κάποιον τρόπο να ελέγξω την ορθογραφία σε μια λέξη;
Έχω διαβάσει το blog του novig norvig.com/spell-correct.html αλλά είναι μόνο για Αγγλικά, και δεν έχω καταφέρει να το "πειράξω" για να ελέγχει την ορθογραφία σε ελληνικές λέξεις.
Νομίζω ότι φταίει το encoding.
Γνωρίζετε αν έχει γίνει ήδη κάποια δουλειά που θα μπορούσα να βασιστώ;
Ευχαριστώ εκ των προτέρων.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Δε χρειάζεται για όλεςτις λέξεις. Εξαρτάται βέβαια από το πόσο πλήρες θες να είναι.
Εγώ ασχολούμαι με συγκεκριμένο πεδίο γνώσης, οπότε δεν είναι απαραίτητο να μπούν όλες οι λέξεις που υπάρχουν. Δέχομαι και αποδέχομαι το ρίσκο να υπάρχει κάποια λέξη που δεν είναι στο λεξικό, να είναι λάθος γραμμένη κ να τη βγάζει σωστή.
Αυτό άλλωστε αναφέρει και στο blog του norvig, όπου χρησιμοποιεί σαν λεξικό ένα πολύ μεγάλο βιβλίο λογοτεχνίας.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Με μια διαγώνια ματια που έριξα στο link από το site του Norvig, δεν βλέπω για ποιο λόγο να μην τρέχει με ελληνικά. Αν θες ανέβασε το λάθος που σου βγάζει.
edit
Άκυρο εδώ λογικά είναι το λάθος
NWORDS = train(words(file('big.txt').read()))
Αντικατέστησέ το με αυτό:
import codecs
with codecs.open("big.txt", "r", encoding="utf-8") as fd:
text = fd.read()
NWORDS = train(words(text))
def edits1(word):
splits = [(unicode(word[:i]), unicode(word[i:])) for i in range(len(word) + 1)]
deletes = [a + b[1:] for a, b in splits if b]
transposes = [a + b[1] + b[0] + b[2:] for a, b in splits if len(b)>1]
replaces = [a + c + b[1:] for a, b in splits for c in alphabet if b]
inserts = [a + c + b for a, b in splits for c in alphabet]
return set(deletes + transposes + replaces + inserts)
def known_edits2(word):
return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in NWORDS)
def known(words):
a=[]
for i in words:
if i.encode('utf-8') in NWORDS:
a=
return set(a)
def correct(word):
candidates = known([word]) or known(edits1(word)) or [word] or known_edits2(word)
return max(candidates, key=NWORDS.get)
Μέσα στο spelling.txt βαλτε λίγες λέξεις.
Δοκιμάστε να γράψετε λάθος μια από αυτές.
print correct('γεις'.decode('utf-8'))
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.