資料集資源:
該資料集中包含了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...