Анализ настроений в CSV-файле с использованием textblob

Я использовал анализ настроений в файле CSV, и на выходе выводится полярность и субъективность предложения. Как я могу получить вывод в формате таблицы вместе с классификацией предложения как положительного, отрицательного или нейтрального, добавленного к нему?

    import csv
    from textblob import TextBlob

    infile = 'sentence.csv'

    with open(infile, 'r') as csvfile:
        rows = csv.reader(csvfile)
    for row in rows:
        sentence = row[0]
        blob = TextBlob(sentence)
        print (sentence)
        print (blob.sentiment.polarity, blob.sentiment.subjectivity)

вывод для моего кода:

    i am very happy
    1.0 1.0
    its very sad
    -0.65 1.0
    they are bad
    -0.6999999999999998 0.6666666666666666
    hate the life
    -0.8 0.9
    she is so fantastic
    0.4 0.9

Заранее спасибо.


person N V Sindhu    schedule 16.01.2018    source источник
comment
вы знакомы с pandas фреймами данных?   -  person Usernamenotfound    schedule 16.01.2018
comment
Я новичок, но я могу понять это   -  person N V Sindhu    schedule 16.01.2018
comment
@Usernamenotfound Я пробовал это с помощью панд, но не могу сделать это для CSV-файла. я могу сделать это для отдельных предложений. Спасибо   -  person N V Sindhu    schedule 16.01.2018


Ответы (1)


Я бы рекомендовал создать список списков и импортировать его в кадр данных pandas, чтобы получить структуру таблицы.

import csv
from textblob import TextBlob
import pandas as pd
import numpy as np

infile = 'sentence.csv'
bloblist = list()

with open(infile, 'r') as csvfile:
    rows = csv.reader(csvfile)

for row in rows:
    sentence = row[0]
    blob = TextBlob(sentence)
    bloblist.append((sentence,blob.sentiment.polarity, blob.sentiment.subjectivity))

Это даст вам список списков с именем bloblist Преобразуйте его в кадр данных pandas, например

df = pd.DataFrame(bloblist, columns = ['sentence','sentiment','polarity'])

После добавления этого вы можете создавать собственные вычисления следующим образом:

df['positive'] = np.where(df.sentiment > .5,1,0)
person Usernamenotfound    schedule 16.01.2018
comment
обязательно сделаю это - person N V Sindhu; 17.01.2018