Je suis nouveau au traitement de texte Python, j'essaie de mot de mot dans le document de texte, a environ 5000 lignes.Stemming mots avec NLTK (python)
J'ai écrit ci-dessous le script
from nltk.corpus import stopwords # Import the stop word list
from nltk.stem.snowball import SnowballStemmer
stemmer = SnowballStemmer('english')
def Description_to_words(raw_Description):
# 1. Remove HTML
Description_text = BeautifulSoup(raw_Description).get_text()
# 2. Remove non-letters
letters_only = re.sub("[^a-zA-Z]", " ", Description_text)
# 3. Convert to lower case, split into individual words
words = letters_only.lower().split()
stops = set(stopwords.words("english"))
# 5. Remove stop words
meaningful_words = [w for w in words if not w in stops]
# 5. stem words
words = ([stemmer.stem(w) for w in words])
# 6. Join the words back into one string separated by space,
# and return the result.
return(" ".join(meaningful_words))
clean_Description = Description_to_words(train["Description"][15])
Mais quand je teste des résultats mots ne sont pas découlaient, quelqu'un peut me aider à savoir ce qui est question, je fais quelque chose de mal dans la fonction « Description_to_words »
Et, quand j'exécute la commande de tige séparément comme ci-dessous cela fonctionne.
from nltk.tokenize import sent_tokenize, word_tokenize
>>> words = word_tokenize("MOBILE APP - Unable to add reading")
>>>
>>> for w in words:
... print(stemmer.stem(w))
...
mobil
app
-
unabl
to
add
read
c'est tout simplement génial. Merci beaucoup pour ta réponse. Ça marche. Je suis très heureux :) – user3734568
juste une question que nous pouvons utiliser la même logique dans la lemmatisation word.lemmatize() correct – user3734568
@ user3734568 oui, vous pouvez, juste en changeant 'stemmer.stem (w)' à 'lemmatizer.lemmatize (mot) ' –