I am trying to lemmatize and remove stopwords from a dataset of Dutch tweets in order to perform text analysis. The goal is to achieve the following structure: [['this','is','a','tweet],['this','is','a','tweet],['this','is','a','tweet]] Where then the stopwords are also removed.
The dataset is currently looking like this: [' Wanneer het niet mogelijk is om met de auto naar de teststraat te komen, kun je samen met een telefonisch medewerker de beste optie om je te laten testen bespreken. ^CM', 'De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.\n\nActuele informatie ⤵️\n\n', 'De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. \n\nAlleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.\n\nActuele informatie ⤵️\n\n\nAlleenSamen ']
The code I wrote is this:
import pandas as pd
import re
import numpy as np
import pandas as pd
from pprint import pprint
import gensim
import gensim.corpora as corpora
from gensim.utils import simple_preprocess
from gensim.models import CoherenceModel
import pyLDAvis
import pyLDAvis.gensim
import matplotlib.pyplot as plt
from nltk.corpus import stopwords
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
df = pd.read_excel (r"C:xxxxxxxxxxx")
print (df)
df2_clean = df['text'].replace('https.*[^ ]', '',regex=True)
df2_clean = df2_clean.replace('@([^ ]*)', '',regex=True)
df2_clean = df2_clean.replace('#', '',regex=True)
df2_clean = df2_clean.replace('RT', '',regex=True)
df2_clean = df2_clean.replace('[0-9]+', '', regex=True)
df2_clean
tweets = [line for line in df2_clean]
tweets
import spacy
import nltk
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
nltk.download('wordnet')
stopword_list = stopwords.words('dutch') +
['coronavirus','covid','corona']
#lemmatizer
def lemmatizer(x):
#lemmatize
for x in x:
doc = nlp(x)
print(doc.text)
for token in doc:
lemmatized_list = [token.lemma_]
cleaned_lemmas = [x for x in lemmatized_list if x not in stopword_list]
return cleaned_lemmas
lemmatizer(tweets)
The issue is that I dont get the form returned I want to;it returns like this
Wanneer het niet mogelijk is om met de auto naar de teststraat te komen, kun je samen met een telefonisch medewerker de beste optie om je te laten testen bespreken. ^CM
De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.
Actuele informatie ⤵️
De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag.
Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.
Actuele informatie ⤵️
AlleenSamen
De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.
Actuele informatie ⤵️
AlleenSamen
Heb je klachten als neusverkoudheid, hoesten en/of verhoging. Blijf dan thuis en laat je testen op het coronavirus.
Bel het landelijke gratis telefoonnummer - en maak een testafspraak bij een GGD-locatie in de buurt.
It is not lemmatized, it is not in a list and also the stopwords are still there so the function does not work properly. Thanks in advance for your advice!