2014-04-26 12 views
5

Sto utilizzando NLTK per elaborare del testo estratto da file PDF. Posso recuperare il testo per lo più intatto, ma ci sono molti casi in cui gli spazi tra le parole non vengono catturati, quindi ottengo parole come ifI anziché if I o thatposition anziché that position o andhe's anziché and he's.Tokenizzazione di parole non divisibili da OCR utilizzando NLTK

La mia domanda è questa: come posso utilizzare NLTK per cercare le parole che non riconosce/non ha appreso, e vedere se ci sono combinazioni di parole "vicine" che hanno molte più probabilità di verificarsi? Esiste un modo più aggraziato per implementare questo tipo di controllo piuttosto che marcare semplicemente la parola non riconosciuta, un personaggio alla volta, dividerlo e vedere se fa due parole riconoscibili?

risposta

4

Suggerirei di prendere in considerazione l'utilizzo di pyenchant invece, poiché è una soluzione più robusta per questo tipo di problema. Puoi scaricare pyenchant here. Ecco un esempio di come otterresti i tuoi risultati dopo l'installazione:

>>> text = "IfI am inthat position, Idon't think I will." # note the lack of spaces 
>>> from enchant.checker import SpellChecker 
>>> checker = SpellChecker("en_US") 
>>> checker.set_text(text) 
>>> for error in checker: 
    for suggestion in error.suggest(): 
     if error.word.replace(' ', '') == suggestion.replace(' ', ''): # make sure the suggestion has exact same characters as error in the same order as error and without considering spaces 
      error.replace(suggestion) 
      break 
>>> checker.get_text() 
"If I am in that position, I don't think I will." # text is now fixed 
+1

Grazie per il suggerimento, non avevo pensato di utilizzare un correttore ortografico. La soluzione funziona alla grande, se/quando si installa Pyrighant. Ho avuto molte difficoltà nell'installare le dipendenze di pyenchant (non esiste un "pyenchant di installazione dei pip"). I binari Mac sul sito richiedono Python 2.5 o 2.6, l'indice del pacchetto python fornisce binary per Python 2.7 ma richiede l'uso di Homebrew Python. Il tarball pyenchant-bidst-osx-sources fornito sul sito Web ha un Makefile che soffoca ripetutamente. Finito l'installazione di gettext e glib usando Homebrew, & libiconv & enchant dal sorgente, poi pyenchant con setup.py build/install. – charlesreid1

+0

@ charlesreid1 Wow. Mi dispiace sapere che i binari del Mac non sono all'altezza. Grazie per aver notato il tuo processo qui. Spero che qualcun altro lo troverà utile. –

Problemi correlati