Le paquet nltk
est spécialisée dans la gestion du texte et a diverses fonctions que vous pouvez utiliser pour texte « tokenize » en mots.
Vous pouvez utiliser le RegexpTokenizer
ou le word_tokenize
avec une légère adaptation.
Le plus simple et le plus simple est le RegexpTokenizer
:
import nltk
text = "[email protected] said: I've taken 2 reports to the boss. I didn't do the other things."
result = nltk.RegexpTokenizer(r'\w+').tokenize(text)
qui retourne:
`['asdf', 'gmail', 'com', 'said', 'I', 've', 'taken', '2', 'reports', 'to', 'the', 'boss', 'I', 'didn', 't', 'do', 'the', 'other', 'things']`
Ou vous pouvez utiliser le word_tokenize
un peu plus intelligent qui est capable de diviser la plupart des contractions comme didn't
en did
et n't
.
import re
import nltk
nltk.download('punkt') # You only have to do this once
def contains_letters(phrase):
return bool(re.search('[a-zA-Z]', phrase))
text = "[email protected] said: I've taken 2 reports to the boss. I didn't do the other things."
result = [word for word in nltk.word_tokenize(text) if contains_letters(word)]
qui retourne:
['asdf', 'gmail.com', 'said', 'I', "'ve", 'taken', 'reports', 'to', 'the', 'boss', 'I', 'did', "n't", 'do', 'the', 'other', 'things']
Regardez comme un emploi pour regex. –