Dus ik heb een dataset waarvan ik stopwoorden wil verwijderen uit het gebruik van
stopwords.words('english')
Ik heb moeite om dit in mijn code te gebruiken om deze woorden gewoon te verwijderen. Ik heb al een lijst met de woorden uit deze dataset, het deel waar ik mee worstel is het vergelijken met deze lijst en het verwijderen van de stopwoorden.
Alle hulp wordt op prijs gesteld.
Antwoord 1, autoriteit 100%
from nltk.corpus import stopwords
# ...
filtered_words = [word for word in word_list if word not in stopwords.words('english')]
Antwoord 2, autoriteit 9%
Je zou ook een set diff kunnen doen, bijvoorbeeld:
list(set(nltk.regexp_tokenize(sentence, pattern, gaps=True)) - set(nltk.corpus.stopwords.words('english')))
Antwoord 3, autoriteit 8%
Om alle soorten stopwoorden, inclusief nltk stopwoorden, uit te sluiten, kunt u zoiets als dit doen:
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]
Antwoord 4, autoriteit 6%
Ik neem aan dat je een lijst met woorden (word_list) hebt waaruit je stopwoorden wilt verwijderen. Je zou zoiets als dit kunnen doen:
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
Antwoord 5, autoriteit 4%
Er is een heel eenvoudig lichtgewicht python-pakket stop-words
speciaal voor dit doel.
Installeer eerst het pakket met:
pip install stop-words
Dan kunt u uw woorden in één regel verwijderen met behulp van lijstbegrip:
from stop_words import get_stop_words
filtered_words = [word for word in dataset if word not in get_stop_words('english')]
Dit pakket is erg licht om te downloaden (in tegenstelling tot nltk), werkt voor zowel Python 2
als Python 3
en heeft stopwoorden voor veel andere talen, zoals :
Arabic
Bulgarian
Catalan
Czech
Danish
Dutch
English
Finnish
French
German
Hungarian
Indonesian
Italian
Norwegian
Polish
Portuguese
Romanian
Russian
Spanish
Swedish
Turkish
Ukrainian
Antwoord 6, autoriteit 2%
Gebruik de bibliotheek textcleanerom stopwoorden uit uw gegevens te verwijderen.
Volg deze link:https://yugantm.github.io/textcleaner/documentation. html#remove_stpwrds
Volg deze stappen om dit met deze bibliotheek te doen.
pip install textcleaner
Na installatie:
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
Gebruik bovenstaande code om de stopwoorden te verwijderen.
Antwoord 7, autoriteit 2%
Hier is mijn mening hierover, voor het geval je het antwoord meteen in een string wilt krijgen (in plaats van een lijst met gefilterde woorden):
STOPWORDS = set(stopwords.words('english'))
text = ' '.join([word for word in text.split() if word not in STOPWORDS]) # delete stopwords from text
Antwoord 8
u kunt deze functie gebruiken, u zou moeten opmerken dat u alle woorden moet verlagen
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
Antwoord 9
met behulp van filter:
from nltk.corpus import stopwords
# ...
filtered_words = list(filter(lambda word: word not in stopwords.words('english'), word_list))
Antwoord 10
Hoewel de vraag een beetje oud is, is hier een nieuwe bibliotheek, die het vermelden waard is, die extra taken kan uitvoeren.
In sommige gevallen wilt u niet alleen stopwoorden verwijderen. U wilt liever de stopwoorden in de tekstgegevens zoeken en deze in een lijst opslaan zodat u de ruis in de gegevens kunt vinden en deze interactiever kunt maken.
De bibliotheek wordt 'textfeatures'
. U kunt het als volgt gebruiken:
! pip install textfeatures
import textfeatures as tf
import pandas as pd
Stel bijvoorbeeld dat u de volgende reeks strings hebt:
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
Bel nu de functie Stopwoorden () en geef de gewenste parameters door:
tf.stopwords(df,"text","stopwords") # extract stop words
df[["text","stopwords"]].head() # give names to columns
Het resultaat wordt:
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]
Zoals u kunt zien, heeft de laatste kolom de stopwoorden die in die docute (record) zijn opgenomen.
Antwoord 11
Als uw gegevens worden opgeslagen als een Pandas DataFrame
, kunt u remove_stopwords
uit Textero gebruiken die de NLTK-stopwoordenlijst met standaard .
import pandas as pd
import texthero as hero
df['text_without_stopwords'] = hero.remove_stopwords(df['text'])
Antwoord 12
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
example_sent = "This is a sample sentence, showing off the stop words filtration."
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(example_sent)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
filtered_sentence = []
for w in word_tokens:
if w not in stop_words:
filtered_sentence.append(w)
print(word_tokens)
print(filtered_sentence)
Antwoord 13
Ik zal je een voorbeeld laten zien
Eerst extraheer ik de tekstgegevens uit het dataframe (twitter_df
) om verder te verwerken als volgt
from nltk.tokenize import word_tokenize
tweetText = twitter_df['text']
Vervolgens gebruik ik de volgende methode om te tokeniseren
from nltk.tokenize import word_tokenize
tweetText = tweetText.apply(word_tokenize)
Vervolgens, om stopwoorden te verwijderen,
from nltk.corpus import stopwords
nltk.download('stopwords')
stop_words = set(stopwords.words('english'))
tweetText = tweetText.apply(lambda x:[word for word in x if word not in stop_words])
tweetText.head()
Ik denk dat dit je zal helpen
Antwoord 14
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