Как отобразить значения анализа настроений в круговой диаграмме, используя matplotlib в Python 3.6? - PullRequest
0 голосов
/ 20 января 2019

Основная задача - отобразить положительные, отрицательные и нейтральные значения анализа настроений любого пользовательского ввода на круговой диаграмме. Хотя в коде нет ошибок, на круговой диаграмме нейтральное значение отображается только как 100% от всей диаграммы и классифицирует вход как нейтральный, даже если в качестве входных данных введен отрицательный или положительный.

Я попытался изменить условные операторы и передать саму основную входную переменную в Textblob. Однако ожидаемые результаты не были получены.

from textblob import TextBlob
import matplotlib.pyplot as plt

def percentage(part,whole):
    return 100*float(part)/float(whole)


inp = input("Enter something:")

positive = 0
negative = 0
neutral = 0
polarity = 0


for word in inp:
    analyzer = TextBlob(word)
    polarity += analyzer.sentiment.polarity
    if analyzer.sentiment.polarity > 0:
    positive += 1
    elif analyzer.sentiment.polarity < 0:
    negative += 1
    elif analyzer.sentiment.polarity == 0:
    neutral += 1

positive = percentage(positive,(positive + negative + neutral))
negative = percentage(negative,(positive + negative + neutral))
neutral = percentage(neutral,(positive + negative + neutral))

positive = format(positive,'.2f')
negative = format(negative,'.2f')
neutral = format(neutral,'.2f')

if (polarity > 0):
    print("Positive")
elif (polarity < 0):
    print("Negative")
elif (polarity == 0):
    print("Neutral")

labels = ['Positive ['+str(positive)+'%]', 'Negative ['+str(negative)+'%]', 
'Neutral ['+str(neutral)+'%]']
sizes = [positive, negative, neutral]
colors = ['blue','red','yellow']
patches, texts = plt.pie(sizes, colors=colors, startangle=90)
plt.legend(patches,labels,loc="best")
plt.title("Polarity Pie Chart")
plt.axis('equal')
plt.tight_layout()
plt.show()

Ожидаемый результат - правильная классификация и отображение положительных, отрицательных и нейтральных значений на круговой диаграмме. Но выходные данные, независимо от контекста ввода, классифицируются только как нейтральные, а круговая диаграмма также отображает только нейтральные значения.

1 Ответ

0 голосов
/ 16 апреля 2019

positive = format(positive,'.2f') .... Этот оператор преобразует число в строку, ..so при сравнении с " if (polarity > 0) --> print("Positive")" он сравнивается как строка ..

Повторить как " positive = float(format(positive, '.2f'))

...