IMDB影評分析實驗

2021-09-27 01:58:39 字數 3803 閱讀 8978

資料集資源:

該資料集中包含了5萬條影評(包括正面評價和負面評價),利用這5萬條影評進行資料分析。

資料格式:

5萬條影評分別處於5萬個txt檔案中

工作步驟如下:

3-將處理後的文字進行特徵提取並向量化

4-進**感的分類

# -*-coding: utf-8 -*-

# @time:2019/9/1016:11

# @author superxjz

# @func

import pandas as pd

import os

import numpy as np

from nltk.corpus import stopwords

import re

from sklearn import model_selection

from sklearn import svm

from sklearn.metrics import accuracy_score

import nltk

from sklearn.feature_extraction.text import countvectorizer

from sklearn.ensemble import randomforestclassifier

from sklearn.*****_bayes import gaussiannb

from sklearn.metrics import confusion_matrix

from sklearn.metrics import precision_score

import gensim

#第一步---對原始數加工成**乙個csv檔案

defdatatoexcel()

:#建立資料的形式

data = pd.dataframe(

)#對檔案進行遍歷

for s in

("test"

,"train"):

for l in

("pos"

,"neg"):

path =

"./aclimdb/%s/%s"

%(s, l)

#遍歷文字文件

forfile

in os.listdir(path)

:with

open

(os.path.join(path,

file),

"r",encoding=

"utf-8"

)as fr:

#將文字中的句子讀出來

sentence = fr.read(

)if l==

"pos":[

[sentence,1]

],ignore_index=

true

)if l==

"neg":[

[sentence,0]

], ignore_index=

true

)#給**設定列名

data.columns=

["review"

,"label"

]#將資料的順序打亂

np.random.seed(0)

data = data.reindex(np.random.permutation(data.index)

)#將資料儲存成csv檔案

data.to_csv(

"./data.csv"

) filepath=

"./data.csv"

#將檔案的路徑返回

return filepath

defcleartext

(text)

:#讀取資料

#data = pd.read_csv(filepath,encoding="utf-8")

text = re.sub(r"[^a-za-z]"

," "

, text)

words = text.lower(

).split(

) words =

[w for w in words if w not

in eng_stopwords]

# ','.join('abc')-----'a,b,c'

return

" ".join(words)

#第三步進行特徵向量的建立

defbulidvec

(text,model)

:#定義乙個陣列

vec =

wordlist = text.split(

)for word in wordlist:

word = word.replace(

"\n"

," "

)try:)

except keyerror:

continue

return vec

#測試#datatoexcel()

if __name__==

"__main__"

:#第一步

# nltk.download()

filepath = datatoexcel(

)#第二步

data = pd.read_csv(filepath, encoding=

"utf-8"

) eng_stopwords =

set(stopwords.words(

"english"))

data[

"clear_review"

]= data.review.

(cleartext)

#第三步

vectorizer = countvectorizer(max_features=

5000

) x = vectorizer.fit_transform(data.clear_review)

.toarray(

)# x = data["array"].values

y = data[

"label"

].values

#對影評資料進行分析

x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y, test_size=

0.30

, shuffle=

true

)# clf = svm.svc(c=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr', probability=true)

# clf = randomforestclassifier(n_estimators=100)

clf = gaussiannb(

) clf = clf.fit(x_train, y_train)

pred = clf.predict(x_test)

print

("源標籤資料"

,y)print

("**標籤資料"

,clf.predict(x)

)print

("混淆矩陣"

,confusion_matrix(data.label, clf.predict(x)))

print

("精確度"

, precision_score(y, clf.predict(x)))

print

("精確度2"

,precision_score(y_test, clf.predict(x_test)

))

Spark影評分析

表結構 求被評分次數最多的 10 部電影,並給出評分次數 電影名,評分次數 import org.apache.spark.object test 電影id,電影名 val rate rdd2.map.map x x,1 reducebykey x,y x y sortby x x.2,false,...

IMDB評分排名演算法

由於影片資料的更新和所得評分的不斷變化,和 必定是份動態的名單,但大部分出色 或者說是受大眾歡迎的 影片的位置會相對不變,於是這份 榜單也就有了窺視大眾電影口味的意義。評選最佳 部電影時只考慮正式的投票者的投票結果。分值系統採用 分制,最低為 令人厭惡 的 分,最高為 出類拔萃 的 分。值得注意的是...

影評情感分類(基於IMDB資料集)

回顧以前的筆記 在keras中,內建了imdb電影評分資料集,來進行評價 安裝keras conda install kerasconda就幫依賴全部搞定,記得加源 匯入imdb from keras.datasets import imdb資料集簡要說明 在資料中不是單詞,而是單詞的索引 一共就5...