[python] Come sbarazzarsi della punteggiatura usando il tokenizzatore NLTK?



Answers

Non hai davvero bisogno di NLTK per rimuovere la punteggiatura. Puoi rimuoverlo con Python semplice. Per le stringhe:

import string
s = '... some string with punctuation ...'
s = s.translate(None, string.punctuation)

O per unicode:

import string
translate_table = dict((ord(char), None) for char in string.punctuation)   
s.translate(translate_table)

e quindi utilizzare questa stringa nel tokenizer.

Il modulo stringa PS ha alcuni altri set di elementi che possono essere rimossi (come le cifre).

Question

Sto appena iniziando a utilizzare NLTK e non capisco come ottenere un elenco di parole dal testo. Se uso nltk.word_tokenize() , ottengo un elenco di parole e segni di punteggiatura. Ho bisogno solo delle parole invece. Come posso eliminare la punteggiatura? Anche word_tokenize non funziona con più frasi: i punti vengono aggiunti all'ultima parola.




Ho appena usato il seguente codice, che ha rimosso tutta la punteggiatura:

tokens = nltk.wordpunct_tokenize(raw)

type(tokens)

text = nltk.Text(tokens)

type(text)  

words = [w.lower() for w in text if w.isalpha()]



Uso questo codice per rimuovere la punteggiatura:

import nltk
def getTerms(sentences):
    tokens = nltk.word_tokenize(sentences)
    words = [w.lower() for w in tokens if w.isalnum()]
    print tokens
    print words

getTerms("hh, hh3h. wo shi 2 4 A . fdffdf. A&&B ")

E se vuoi verificare se un token è una parola inglese valida o meno, potresti aver bisogno di PyEnchant

Tutorial:

 import enchant
 d = enchant.Dict("en_US")
 d.check("Hello")
 d.check("Helo")
 d.suggest("Helo")



Related