文字情感分類(二) 深度學習模型

2021-07-22 09:34:16 字數 2819 閱讀 8466

原文寫的不錯:

源**有改動。

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

'''created on sep 6, 2016

@author: zhangdapeng

'''from __future__ import absolute_import #匯入3.x的特徵函式

from __future__ import print_function

import sys

reload(sys) #重新載入sys

sys.setdefaultencoding("utf8") #設定預設編碼格式

import pandas as pd #匯入pandas

import numpy as np #匯入numpy

import jieba #匯入結巴分詞

import os.path

from keras.preprocessing import sequence

from keras.optimizers import sgd, rmsprop, adagrad

from keras.utils import np_utils

from keras.models import sequential

from keras.layers.core import dense, dropout, activation

from keras.layers.embeddings import embedding

from keras.layers.recurrent import lstm, gru

neg=pd.read_excel('neg.xls',header=none,index=none)

pos=pd.read_excel('pos.xls',header=none,index=none) #讀取訓練語料完畢

pos['mark']=1

neg['mark']=0

#給訓練語料貼上標籤

pn=pd.concat([pos,neg],ignore_index=true) #合併語料

neglen=len(neg)

poslen=len(pos) #計算語料數目

cw = lambda x: list(jieba.cut(x)) #定義分詞函式

#comment = pd.read_csv('a.csv', encoding='utf-8')

d2v_train = pd.concat([pn['words'], comment['words']], ignore_index = true)

w = #將所有詞語整合在一起

for i in d2v_train:

w.extend(i)

dict = pd.dataframe(pd.series(w).value_counts()) #統計詞的出現次數

del w,d2v_train

dict['id']=list(range(1,len(dict)+1))

get_sent = lambda x: list(dict['id'][x])

maxlen = 50

print("pad sequences (samples x time)")

pn['sent'] = list(sequence.pad_sequences(pn['sent'], maxlen=maxlen))

x = np.array(list(pn['sent']))[::2] #訓練集

y = np.array(list(pn['mark']))[::2]

xt = np.array(list(pn['sent']))[1::2] #測試集

yt = np.array(list(pn['mark']))[1::2]

xa = np.array(list(pn['sent'])) #全集

ya = np.array(list(pn['mark']))

print('build model...')

# model = sequential()

# model.add(embedding(len(dict)+1, 256))

# model.add(lstm(256, 128)) # try using a gru instead, for fun

# model.add(dropout(0.5))

# model.add(dense(128, 1))

# model.add(activation('sigmoid'))

model = sequential()

model.add(embedding(input_dim=len(dict)+1, output_dim=256, input_length=maxlen))

model.add(lstm(128)) # try using a gru instead, for fun

model.add(dropout(0.5))

model.add(dense(1))

model.add(activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', class_mode="binary")

model.fit(xa, ya, batch_size=16, nb_epoch=10) #訓練時間為若干個小時

classes = model.predict_classes(xa)

acc = np_utils.accuracy(classes, ya)

print('test accuracy:', acc)

參考:

python 文字情感分類

對於乙個簡單的文字情感分類來說,其實就是乙個二分類,這篇部落格主要講述的是使用scikit learn 來做文字情感分類。分類主要分為兩步 1 訓練,主要根據訓練集來學習分類模型的規則。2 分類,先用已知的測試集評估分類的準確率等,如果效果還可以,那麼該模型對無標註的待測樣本進行 下面實現了svm,...

針對深度學習的文字分類模型盤點

優勢 短文本分類 可參照 優點 訓練速度快 優點 對文件的分類 雙向的lstm,可以獲得豐富的詞彙表示 attention階段 詞在句子中的重要程度 以雙向lstm編碼句子,獲得句子的資訊表徵,將前向最後時刻和後向最後時刻拼接,乘以fc之後,對tensor做softmax,得到類別。優勢 rnn捕捉...

aspect level 的文字情感分類試驗結果1

前段時間準備了資料,試了一下 基於attention model的aspect level文字情感分類 用python keras實現 這篇文章裡面的模型。結果和文章裡差不多,驗證集準確率在75 80 左右。但仔細去看模型 的結果,這個資料其實並不好。剔除掉單個aspect的句子,多aspect句子...