123 votes

Comment supprimer les mots vides en utilisant nltk ou python ?

J'ai donc un jeu de données dont je voudrais supprimer les mots vides en utilisant la méthode suivante

stopwords.words('english')

Je me demande comment l'utiliser dans mon code pour supprimer simplement ces mots. J'ai déjà une liste des mots de cet ensemble de données, la partie qui me pose problème est la comparaison avec cette liste et la suppression des mots vides. Toute aide est la bienvenue.

4 votes

Où avez-vous trouvé les mots-clés ? Est-ce que ça vient de NLTK ?

41 votes

@MattO'Brien from nltk.corpus import stopwords pour les futurs googlers

13 votes

Il est également nécessaire d'exécuter nltk.download("stopwords") afin de rendre le dictionnaire de mots vides disponible.

5voto

Yugant Hadiyal Points 59

Utilisez nettoyeur de texte pour supprimer les mots d'arrêt de vos données.

Suivez ce lien : https://yugantm.github.io/textcleaner/documentation.html#remove_stpwrds

Suivez les étapes suivantes pour le faire avec cette bibliothèque.

pip install textcleaner

Après l'installation :

import textcleaner as tc
data = tc.document(<file_name>) 
#you can also pass list of sentences to the document class constructor.
data.remove_stpwrds() #inplace is set to False by default

Utilisez le code ci-dessus pour supprimer les mots d'arrêt.

4voto

justadev Points 110

Voici mon point de vue à ce sujet, au cas où vous voudriez obtenir immédiatement la réponse dans une chaîne de caractères (au lieu d'une liste de mots filtrés) :

STOPWORDS = set(stopwords.words('english'))
text =  ' '.join([word for word in text.split() if word not in STOPWORDS]) # delete stopwords from text

0 votes

N'utilisez pas cette approche en français l' ou bien ne sera pas capturé.

2voto

Mohammed_Ashour Points 21

Vous pouvez utiliser cette fonction, vous devriez remarquer que vous devez baisser tous les mots

from nltk.corpus import stopwords

def remove_stopwords(word_list):
        processed_word_list = []
        for word in word_list:
            word = word.lower() # in case they arenet all lower cased
            if word not in stopwords.words("english"):
                processed_word_list.append(word)
        return processed_word_list

2voto

Saeid BK Points 171

En utilisant filtre :

from nltk.corpus import stopwords
# ...  
filtered_words = list(filter(lambda word: word not in stopwords.words('english'), word_list))

3 votes

Si word_list est grande, ce code est très lent. Il est préférable de convertir la liste des mots d'arrêt en un ensemble avant de l'utiliser : .. in set(stopwords.words('english')) .

1voto

Taie Points 33

Bien que la question soit un peu ancienne, voici une nouvelle bibliothèque, qui mérite d'être mentionnée, et qui peut effectuer des tâches supplémentaires.

Dans certains cas, vous ne voulez pas seulement supprimer les mots vides. Vous souhaitez plutôt trouver les mots d'arrêt dans les données textuelles et les stocker dans une liste afin de pouvoir trouver le bruit dans les données et les rendre plus interactives.

La bibliothèque s'appelle 'textfeatures' . Vous pouvez l'utiliser comme suit :

! pip install textfeatures
import textfeatures as tf
import pandas as pd

Par exemple, supposons que vous ayez l'ensemble de chaînes de caractères suivant :

texts = [
    "blue car and blue window",
    "black crow in the window",
    "i see my reflection in the window"]

df = pd.DataFrame(texts) # Convert to a dataframe
df.columns = ['text'] # give a name to the column
df

Maintenant, appelez la fonction stopwords() et passez les paramètres que vous voulez :

tf.stopwords(df,"text","stopwords") # extract stop words
df[["text","stopwords"]].head() # give names to columns

Le résultat sera :

    text                                 stopwords
0   blue car and blue window             [and]
1   black crow in the window             [in, the]
2   i see my reflection in the window    [i, my, in, the]

Comme vous pouvez le voir, la dernière colonne contient les mots vides inclus dans ce document (record).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X