原文**:
import pandas as pd
import jieba
import re
#邏輯回歸建模需要的庫
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import countvectorizer
from sklearn.linear_model import logisticregression
import numpy as np
from pandas import dataframe
df1 =
df2 =
data = pd.merge(df1,df2,how = 'outer')
print(data.shape)
#劃分等級
def rating(e):
if '50' in e:
return 5
if '40' in e:
return 4
if '30' in e:
return 3
if '20' in e:
return 2
if '10' in e:
return 1
data['new_rating'] = data['rating'].map(rating)
print(data.head())
#剔除中性的評價
new_data = data[data['new_rating'] != 3]
print(new_data['sentiment'].value_counts())
#分詞def cut_word(text):
text = jieba.cut(str(text), cut_all = false)
return " ".join(text)
#刪除數字
def remove_num(new_short):
return re.sub(r'\d+','',new_short)
#刪除字母
def remove_word(new_short):
return re.sub(r'[a-z]+','',new_short)
#邏輯回歸分析與建模
#第一步需要對分析好的資料進行資料劃分,分為訓練集和測試集
train_data, test_data = train_test_split(new_data, train_size = 0.8,random_stat=0)
#文字提取
transfer = countvectorizer()
train_word = transfer.fit_transform(train_data['new_short'])
test_word = transfer.transform(test_data['new_short'])
#稀疏矩陣
print('new_data:\n', train_word.toarray())
#特徵值
print('feature_name:\n',transfer.get_feature_names())
#第二步對分詞後的文字進行特徵提取,可以生成乙個對應的稀疏矩陣,並且得到稀疏矩陣對應的特徵值
#第三步利用邏輯回歸建模,即讓訓練集中的特徵值和目標值進行擬合,從而生成乙個模型
x_train, x_test,y_train,y_test = train_test_split(new_data['new_short'],new_data['sentiment'],train_size = 0.8, random_state = 0)
x_train = train_word
x_test = test_word
model = logisticregression()
model.fit(x_train,y_train)
y_predict = model.predict(x_test)
print('布林比對:\n',y_predict==y_test)
score = model.score(x_test,y_test)
print('模型準確率:\n',score)
example = test_data[50:55]
example[['short','new_rating','sentiment']]
possibility = model.predict_proba(test_word)[:,1]
test_data.loc[:,'possibility'] = possibility
print(test_data.head())
爬取少年的你的豆瓣短評
首先這是目標網頁,然後為了簡單決定用最快的提取辦法,我一直覺得爬蟲不一定需要多複雜,往往簡單的幾行 就能完成我們的需求。決定用requests爬取10頁,然後正則提取,資料存到csv中。直接上 import requests import pandas as pd import re defget ...
機器學習 情感分析小案例
對發帖情感進行分析。字段說明 announce id欄位代表使用者id,user name欄位代表使用者名稱,topic欄位代表發帖主題,body欄位代表發帖內容,post type欄位代表發帖話題是否與工作相關,sentiment欄位表明發帖情感色彩,ip欄位代表使用者ip位址。關於classif...
機器學習 LSTM應用之情感分析
1.概述 在情感分析的應用領域,例如判斷某一句話是positive或者是negative的案例中,咱們可以通過傳統的standard neuro network來作為解決方案,但是傳統的神經網路在應用的時候是不能獲取前後文字之間的關係的,不能獲取到整個句子的乙個整體的意思,只能通過每乙個詞的意思來最...