Как разбить каждое предложение на отдельные слова и средний показатель полярности на каждое предложение и добавить в новый столбец в кадре данных? - PullRequest
0 голосов
/ 28 августа 2018

Я могу успешно разбить предложение на отдельные слова и взять каждое среднее значение полярности каждого слова, используя этот код. Работает отлично.

import statistics as s
from textblob import TextBlob

a = TextBlob("""Thanks, I'll have a read!""")
print(a)

    c=[]
    for i in a.words: 
        c.append(a.sentiment.polarity)
        d = s.mean(c)


d = 0.25
a.words = WordList(['Thanks', 'I', "'ll", 'have', 'a', 'read'])

Как мне передать приведенный выше код в df, который выглядит следующим образом ?:

ДФ

     text
1    Thanks, I’ll have a read!

но взять среднее значение каждой полярности на слово?

В шкафу я могу применить полярность к каждому предложению для каждого предложения в df:

def sentiment_calc(text):
    try:
        return TextBlob(text).sentiment.polarity
    except:
        return None

df_sentences['sentiment'] = df_sentences['text'].apply(sentiment_calc)

1 Ответ

0 голосов
/ 30 августа 2018

У меня сложилось впечатление, что полярность настроения работает только для типа TextBlob.

Так что моя идея здесь состоит в том, чтобы разбить текстовый блоб на слова (с помощью функции split - см. Документ здесь ) и преобразовать их в объекты TextBlob. Это делается в списке понимания:

[TextBlob(x).sentiment.polarity for x in a.split()]

Итак, все выглядит так:

import statistics as s
from textblob import TextBlob
import pandas as pd

a = TextBlob("""Thanks, I'll have a read!""")

def compute_mean(a):
    return s.mean([TextBlob(x).sentiment.polarity for x in a.split()])

print(compute_mean("Thanks, I'll have a read!"))

df = pd.DataFrame({'text':["Thanks, I'll have a read!",
    "Second sentence",
    "a bag of apples"]})

df['score'] = df['text'].map(compute_mean)
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...