Pre Process bei csv dateien
Verfasst: Sonntag 13. Juni 2021, 20:22
Ich versuche leerzeichen, satzzeichen usw. aus der Tabelle zu entfernen(Für einen SpamSchutz)
Aber immer wenn ich das Script ausführe sieht er das lambda bzw das sms bei lowercase als float und wirft anschließend einen Fehler(da float nicht iterable sind)
Nach meinem Verständnis sollte es trotzdem gehen daher die Frage was falsch ist bzw. was ich ändern kann um dieses Problem zu "umschiffen"
import string
import nltk
import math
import csv
import pandas as pd
import numpy as np
# read data
data = pd.read_csv('spam-sms.data', header=None, names=['Class', 'SMS'], engine='python')
data.head()
# load stopwords and punctuation
nltk.download('stopwords')
nltk.download('punkt')
stopwords = nltk.corpus.stopwords.words('english')
punctuation = string.punctuation
# pre-process
def pre_process(sms):
lowercase = "".join([char.lower() for char in sms if char not in punctuation])
tokenize = nltk.tokenize.word_tokenize(lowercase)
remove_stopwords = [word for word in tokenize if word not in stopwords]
return remove_stopwords
data['Pre-Processed'] = data['SMS'].apply(lambda x: pre_process(x))
Aber immer wenn ich das Script ausführe sieht er das lambda bzw das sms bei lowercase als float und wirft anschließend einen Fehler(da float nicht iterable sind)
Nach meinem Verständnis sollte es trotzdem gehen daher die Frage was falsch ist bzw. was ich ändern kann um dieses Problem zu "umschiffen"
import string
import nltk
import math
import csv
import pandas as pd
import numpy as np
# read data
data = pd.read_csv('spam-sms.data', header=None, names=['Class', 'SMS'], engine='python')
data.head()
# load stopwords and punctuation
nltk.download('stopwords')
nltk.download('punkt')
stopwords = nltk.corpus.stopwords.words('english')
punctuation = string.punctuation
# pre-process
def pre_process(sms):
lowercase = "".join([char.lower() for char in sms if char not in punctuation])
tokenize = nltk.tokenize.word_tokenize(lowercase)
remove_stopwords = [word for word in tokenize if word not in stopwords]
return remove_stopwords
data['Pre-Processed'] = data['SMS'].apply(lambda x: pre_process(x))