簡體   English   中英

使用Python和Textblob進行情感分析時出現“ blob = TextBlob(tweet [text])”錯誤

[英]Error with “ blob = TextBlob(tweet[text])” in sentiment analysis using Python and Textblob

我正在一個項目中,在該項目中我從Twitter提取推文,並對特定的關鍵字進行情感分析以得出結論。 不幸的是,我已經陷入困境。 我有一個情緒分析代碼:

當我使用此blob = TextBlob(tweet[text])blob = TextBlob(tweet[text])我收到以下錯誤:

追溯(最近一次通話最近):文件“ C:/Users/Michael/python/Sentiment2.py”,行65,在blob = TextBlob(tweet [text])NameError:未定義名稱“ text”

import json
import re
import operator 
from textblob import TextBlob
from collections import Counter
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import string
import os, sys, codecs
import csv
import sys
from nltk import bigrams

emoticons_str = r"""
    (?:
        [:=;] # Eyes
        [oO\-]? # Nose (optional)
        [D\)\]\(\]/\\OpP] # Mouth
    )"""

regex_str = [
    emoticons_str,
    r'<[^>]+>', # HTML tags
    r'(?:@[\w_]+)', # @-mentions
    r"(?:\#+[\w_]+[\w\'_\-]*[\w_]+)", # hash-tags
    r'http[s]?://(?:[a-z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-f][0-9a-f]))+', # URLs

    r'(?:(?:\d+,?)+(?:\.?\d+)?)', # numbers
    r"(?:[a-z][a-z'\-_]+[a-z])", # words with - and '
    r'(?:[\w_]+)', # other words
    r'(?:\S)' # anything else
]

tokens_re = re.compile(r'('+'|'.join(regex_str)+')', re.VERBOSE | re.IGNORECASE)
emoticon_re = re.compile(r'^'+emoticons_str+'$', re.VERBOSE | re.IGNORECASE)

def tokenize(s):
    return tokens_re.findall(s)

def preprocess(s, lowercase=False):
    tokens = tokenize(s)
    if lowercase:
        tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens]
    return tokens
punctuation = list(string.punctuation)
stop = stopwords.words('english') + punctuation + ['rt', 'via'] 
fname = 'python.json'
with open(fname, 'r') as f:
    lis=[]
    neg=0.0
    n=0.0
    net=0.0
    pos=0.0
    p=0.0
    count_all = Counter()
    cout=0
    for line in f:
        try:
            tweet = json.loads(line)
        except:
            continue
        # Create a list with all the terms
        blob = TextBlob(tweet[text])
        cout+=1
        lis.append(blob.sentiment.polarity)
        #print blob.sentiment.subjectivity
        #print (os.listdir(tweet["text"]))
        if blob.sentiment.polarity < 0:
            sentiment = "negative"
            neg+=blob.sentiment.polarity
            n+=1
        elif blob.sentiment.polarity == 0:
            sentiment = "neutral"
            net+=1
        else:
            sentiment = "positive"
            pos+=blob.sentiment.polarity
            p+=1

        # output sentiment

    print("Total tweets"),len(lis)
    print("Positive"),float(p/cout)*100,"%"
    print("Negative"),float(n/cout)*100,"%"
    print("Neutral"),float(net/len(lis))*100,"%"
    #print lis
        # determine if sentiment is positive, negative, or neutral

        # output sentiment
        #print sentiment

改變這個

# Create a list with all the terms
blob = TextBlob(tweet[text])

# Create a list with all the terms
blob = TextBlob(tweet['text'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM