Ich habe einen Dataframe, der täglich Neuigkeiten enthält. Ich versuche, die Intensität des Tagesgefühls zu analysieren : wenn das allgemeine Gefühl des Tages aus den Nachrichten positiv, negativ oder neutral ist. Hier ist der Datenrahmen df_news :
Date name
0 2017-10-20 Gucci debuts art installation at its Ginza sto...
1 2018-08-01 Gucci Joins Paris Fashion Week for Its Spring ...
2 2018-04-20 Gucci launches its new creative hub Gucci ArtL...
3 2017-10-20 Gucci to launch homeware line Gucci Decor - CP...
4 2017-12-07 GUCCI opens new store at Miami Design District...
5 2018-01-12 Gucci opens Gucci Garden in Florence - LUXUO
6 2018-02-26 GUCCI's wild experiment with the Fall Winter 2...
7 2018-08-09 Gucci Revamped London Flagship Store | The Imp...
8 2018-08-01 Alessandro Michele Announces new Gucci Home co...
9 2017-10-20 Before He Picks Up the CFDA’s International Aw...
Mit dem folgenden Code, den er verwendet, versuchte er, die Intensität des Gefühls zu erfassen SentimentIntensityAnalyzer von nltk.sentiment.vader :
from nltk.sentiment.vader import SentimentIntensityAnalyzer
import unicodedata
sid = SentimentIntensityAnalyzer()
for date, row in df_news.T.iteritems():
try:
sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
#print((sentence))
ss = sid.polarity_scores(str(sentence))
df_news.set_value(date, 'compound', ss['compound'])
df_news.set_value(date, 'neg', ss['neg'])
df_news.set_value(date, 'neu', ss['neu'])
df_news.set_value(date, 'pos', ss['pos'])
except TypeError:
print(df_news.loc[date, 'name'])
print(date)
Jedoch bekomme ich für bestimmte Datumsangaben einen TypeError. Dank dem Try-Catch berücksichtigt er dies nicht und zieht mir folgende Tabelle:
name compound neg neu pos
Date
2017-10-20 Gucci debuts art installation at its Ginza sto...
2018-08-01 Gucci Joins Paris Fashion Week for Its Spring ...
2018-04-20 Gucci launches its new creative hub Gucci ArtL... 0.4404 0 0.756 0.244
2017-10-20 Gucci to launch homeware line Gucci Decor - CP...
2017-12-07 GUCCI opens new store at Miami Design District... 0 0 1 0
2018-01-12 Gucci opens Gucci Garden in Florence - LUXUO 0 0 1 0
2018-02-26 GUCCI's wild experiment with the Fall Winter 2... 0 0 1 0
2018-08-09 Gucci Revamped London Flagship Store | The Imp... 0.3182 0 0.602 0.398
2018-08-01 Alessandro Michele Announces new Gucci Home co...
2017-10-20 Before He Picks Up the CFDA’s International Aw...
Ich eliminiere try catch, um zu verstehen, warum es fehlgeschlagen ist. Ich erhalte folgende Fehlermeldung:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-26-2e9dbfc62bce> in <module>
4 for date, row in df_news.T.iteritems():
5 # try:
----> 6 sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
7 #print((sentence))
8 ss = sid.polarity_scores(str(sentence))
TypeError: normalize() argument 2 must be str, not Series
Dann dachte ich, dass das Problem mit den Zeilen war, die keine Strin waren. Aber zum Beispiel beim ersten :
>>>type(df_news['name'][0])
str