首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >情感分析python 3亚马逊

情感分析python 3亚马逊
EN

Stack Overflow用户
提问于 2018-01-18 23:38:36
回答 1查看 313关注 0票数 2

我是python编程的新手,我想根据亚马逊的评论,通过word2vec做一个情感分析。我的问题是,我创建了三个函数,因为我必须获取评论的评论并拆分单词。

代码语言:javascript
复制
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup

import nltk
from nltk.corpus import stopwords 
from nltk.stem.porter import PorterStemmer
from nltk.stem import SnowballStemmer

data = pd.read_csv('Reviews.csv') 
print(data.head(4))

data['pos'] = np.where(data['Score'] > 3, 1, 0) 
#suddivion the file that analyzed by the score ( from 1 to 5)
X_train, X_test, y_train, y_test = train_test_split(data['Text'],data['pos'], test_size = 0.2, random_state=0) 


nltk.download()
# now start the problems
def pulitoretesto (prim_testo, rmv_stpwrds=False, stemming=False, split_testo=False):

    testo = BeautifulSoup(prim_testo, 'lxml').get_text() 
    lett = re.sub("[^a-zA-Z]", " ",testo)  
    pr = lett.lower().split() 

    if rmv_stpwrds: 
        stop = set(stopwords.words("english"))
        pr= [a for a in pr if not w in stop]

    if stemming==True: 
        eliminsuf = SnowballStemmer('english') 
        pr = [eliminsuf.stem(a) for a in pr]  

    if split_testo==True:  
        return (pr)

    return( " ".join(pr))   
X_train_nuovo = [] 

for x in X_train:
       X_train_nuovo.append(pulitoretesto(x))   
print(' nuova X_train :\n',  X_train_nuovo)

X_test_nuovo = []

 for x in X_test:
     X_test_nuovo.append(pulitoretesto(x)) 

  tokenizer=nltk.data.load('tokenizers/punkt/english.pickle')

def parsfrasi(revi,tokenizer, rmv_stpwrds=False):
    prmtv_frs=tokenizer.tokenize(revi.strip()) 
    frasi = []
    for prmtv_frs1 in prmtv_frs : 
        if len(prmtv_frs1) > 0 :
            frasi.pulitoretesto(prmtv_frs1, rmv_stpwrds, split_testo=True )
    return frasi 

frasi = []
for revi in X_train_nuovo:
    frasi += parsfrasi(revi, tokenizer)

当我将代码放在这里时: AttributeError:'list‘对象没有'pulitoretesto’属性,感谢everybody =)

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 23:47:33

我不确定到底发生了什么,但函数中的一行代码是

代码语言:javascript
复制
frasi = []

然后你就做了

代码语言:javascript
复制
frasi.pulitoretesto(prmtv_frs1, rmv_stpwrds, split_testo=True )

这是无法完成的,因为frasi被声明为列表

如果您想调用函数'pulitoretesto‘并将其添加到frasi,请执行以下操作:

代码语言:javascript
复制
frasi.append(pulitoretesto(prmtv_frs1, rmv_stpwrds, split_testo=True))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48325011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档