web-dev-qa-db-fra.com

Comment supprimer des mots vides avec nltk ou python

Donc, j'ai un ensemble de données que je voudrais supprimer les mots vides de l'utilisation

stopwords.words('english')

Je ne parviens pas à utiliser ceci dans mon code pour simplement supprimer ces mots. J'ai déjà une liste des mots de cet ensemble de données, la partie avec laquelle je me bats est la comparaison à cette liste et la suppression des mots vides. Toute aide est appréciée.

95
Alex
from nltk.corpus import stopwords
# ...
filtered_words = [Word for Word in Word_list if Word not in stopwords.words('english')]
181
Daren Thomas

Vous pouvez également faire un diff défini, par exemple:

list(set(nltk.regexp_tokenize(sentence, pattern, gaps=True)) - set(nltk.corpus.stopwords.words('english')))
19
David Lemphers

Je suppose que vous avez une liste de mots (Word_list) dont vous souhaitez supprimer les mots vides. Vous pouvez faire quelque chose comme ça:

filtered_Word_list = Word_list[:] #make a copy of the Word_list
for Word in Word_list: # iterate over Word_list
  if Word in stopwords.words('english'): 
    filtered_Word_list.remove(Word) # remove Word from filtered_Word_list if it is a stopword
14
das_weezul

Pour exclure tous les types de mots vides, y compris les mots vides nltk, vous pouvez faire quelque chose comme ceci:

from stop_words import get_stop_words
from nltk.corpus import stopwords

stop_words = list(get_stop_words('en'))         #About 900 stopwords
nltk_words = list(stopwords.words('english')) #About 150 stopwords
stop_words.extend(nltk_words)

output = [w for w in Word_list if not w in stop_words]
10
sumitjainjr

Utilisez la bibliothèque textcleaner pour supprimer les mots vides de vos données.

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

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

pip install textcleaner

Après avoir installé:

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 vides.

3
Yugant Hadiyal

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
1
Mohammed_Ashour

en utilisant filtre :

from nltk.corpus import stopwords
# ...  
filtered_words = list(filter(lambda Word: Word not in stopwords.words('english'), Word_list))
1
Saeid BK
   import sys
print ("enter the string from which you want to remove list of stop words")
userstring = input().split(" ")
list =["a","an","the","in"]
another_list = []
for x in userstring:
    if x not in list:           # comparing from the list and removing it
        another_list.append(x)  # it is also possible to use .remove
for x in another_list:
     print(x,end=' ')

   # 2) if you want to use .remove more preferred code
    import sys
    print ("enter the string from which you want to remove list of stop words")
    userstring = input().split(" ")
    list =["a","an","the","in"]
    another_list = []
    for x in userstring:
        if x in list:           
            userstring.remove(x)  
    for x in userstring:           
        print(x,end = ' ') 
    #the code will be like this
0
Muhammad Yusuf