對發帖情感進行分析。
字段說明:announce_id欄位代表使用者id,user_name欄位代表使用者名稱,topic欄位代表發帖主題,body欄位代表發帖內容,post_type欄位代表發帖話題是否與工作相關,sentiment欄位表明發帖情感色彩,ip欄位代表使用者ip位址。
關於classify.xls檔案 提取碼:fkwq
stopwords.txt 檔案 提取碼:05z1
相關**
import pandas as pd
import jieba
from sklearn.feature_extraction.text import countvectorizer
from sklearn.decomposition import truncatedsvd
from sklearn import model_selection, metrics
from sklearn.*****_bayes import bernoullinb
# 讀入classify檔案,sheetname設為classify
df = pd.read_excel(
'classify.xls'
, sheet_name=
'classify'
)# print(df)
# 對post_type特徵做頻數統計
# print(df['post_type'].value_counts())
# 刪去user_name、post_type、ip特徵
df.drop(columns=
['user_name'
,'post_type'
,'ip'
], inplace=
true
)# print(df)
# 對body特徵進行中文分詞處理
df['body'
]= df[
'body'].
map(
lambda x:jieba.lcut(x)
)# print(df['body'].head())
# 讀取停用詞表,剔除停用詞
s =''
with
open
('stopwords.txt'
,'r'
, encoding=
'utf8'
)as r:
for i in r.readlines():
s += i.strip(
)df[
'body'
]= df[
'body'].
map(
lambda x:
[i for i in x if
(i not
in s)
and(
len(i)
>1)
])# print(df['body'].head())
# 將剔除停用詞後的body特徵轉換為矩陣向量
list1 = df[
'body'].
map(
lambda line:
' '.join(line)
)cv = countvectorizer(
)w = cv.fit_transform(list1)
# 降維處理得到特徵x
svd = truncatedsvd(50)
x = svd.fit_transform(w)
# 切片sentiment特徵作為目標標籤y
y = df[
'sentiment'
]# 按照8:2劃分資料集
train_x, test_x, train_y, test_y = model_selection.train_test_split(x, y, test_size=
0.2, random_state=0)
# 建立樸素貝葉斯分類模型
model = bernoullinb(
)model.fit(train_x, train_y)
# 進行模型訓練和**
h = model.predict(test_x)
# 列印混淆矩陣和分類報告
print
('classification_report:\n'
, metrics.classification_report(test_y, h)
)print
('confusion_matrix:\n'
, metrics.confusion_matrix(test_y, h)
)
基於Python的情感分析案例
情感極性分析的目的是對文字進行褒義 貶義 中性的判斷。在大多應用場景下,只分為兩類。例如對於 喜愛 和 厭惡 這兩個詞,就屬於不同的情感傾向。示例1 好評 示例2 差評 讀取文字檔案 def text f1 open e 工作檔案 情感分析案例1 good.txt r encoding utf 8 ...
TensorFlow機器學習小案例(五)
1 損失函式 表示用來 值與已知答案進行比較差距,在神經訓練網路時,通過不斷改變神經所有引數,使損失函式不斷減少。從而提高準確率的神經網路模型。2 學習率 進行更新引數,學習率大了,優化的引數不怎麼改變,學習率小,優化引數變化大,影響誤差。3 滑動平均 增強滑動增強模型的泛化能力。4 正則化 在損失...
機器學習 LSTM應用之情感分析
1.概述 在情感分析的應用領域,例如判斷某一句話是positive或者是negative的案例中,咱們可以通過傳統的standard neuro network來作為解決方案,但是傳統的神經網路在應用的時候是不能獲取前後文字之間的關係的,不能獲取到整個句子的乙個整體的意思,只能通過每乙個詞的意思來最...