深度學習——如何用LSTM進行文字分類

龍騰AI技術發表於2022-10-21

簡介

主要內容包括


如何將文字處理為Tensorflow LSTM的輸入

如何定義LSTM

用訓練好的LSTM進行文字分類


程式碼

匯入相關庫

#coding=utf-8

import  tensorflow  as  tf

from  tensorflow.contrib  import  learn

import  numpy  as  np

from  tensorflow.python.ops.rnn  import  static_rnn

from  tensorflow.python.ops.rnn_cell_impl  import  BasicLSTMCell

資料


# 資料

positive_texts  [

"我 今天 很 高興" ,

"我 很 開心" ,

"他 很 高興" ,

"他 很 開心"

]

negative_texts  [

"我 不 高興" ,

"我 不 開心" ,

"他 今天 不 高興" ,

"他 不 開心"

]

label_name_dict  {

0 "正面情感" ,

1 "負面情感"

}

配置資訊


配置資訊

embedding_size  50

num_classes  2

將文字和 label 數值化

# 將文字和label數值化

all_texts  positive_texts  negative_textslabels  [ 0 len (positive_texts)  [ 1 len (negative_texts)

max_document_length  4

vocab_processor  learn.preprocessing.VocabularyProcessor(max_document_length)

datas  np.array( list (vocab_processor.fit_transform(all_texts)))

vocab_size  len (vocab_processor.vocabulary_)

定義 placeholder( 容器 ) ,存放輸入輸出

# 容器,存放輸入輸出

datas_placeholder  tf.placeholder(tf.int32, [ None , max_document_length])

labels_placeholder  tf.placeholder(tf.int32, [ None ])


詞向量處理

# 詞向量表

embeddings  tf.get_variable( "embeddings" , [vocab_size, embedding_size],  initializer = tf.truncated_normal_initializer)

# 將詞索引號轉換為詞向量[None, max_document_length] => [None, max_document_length, embedding_size]

embedded  tf.nn.embedding_lookup(embeddings, datas_placeholder)

將資料處理為 LSTM 的輸入格式

# 轉換為LSTM的輸入格式,要求是陣列,陣列的每個元素代表某個時間戳一個Batch的資料

rnn_input  tf.unstack(embedded, max_document_length,  axis = 1 )


定義 LSTM

# 定義LSTM

lstm_cell  BasicLSTMCell( 20 forget_bias = 1.0 )

rnn_outputs, rnn_states  static_rnn(lstm_cell, rnn_input,  dtype = tf.float32)

#利用LSTM最後的輸出進行預測

logits  tf.layers.dense(rnn_outputs[ - 1 ], num_classes)

predicted_labels  tf.argmax(logits,  axis = 1 )

定義損失和最佳化器

# 定義損失和最佳化器

losses tf.nn.softmax_cross_entropy_with_logits(

labels = tf.one_hot(labels_placeholder, num_classes),

logits = logits

)

mean_loss  tf.reduce_mean(losses)

optimizer  tf.train.AdamOptimizer( learning_rate = 1e-2 ).minimize(mean_loss)

執行

with  tf.Session()  as  sess:

# 初始化變數

sess.run(tf.global_variables_initializer())

訓練 # 定義要填充的資料

feed_dict  {

datas_placeholder: datas,

labels_placeholder: labels

}

print ( "開始訓練" )

for  step  in  range ( 100 ):

_, mean_loss_val  sess.run([optimizer, mean_loss],  feed_dict = feed_dict)

if  step  10  ==  0 :

print ( "step =  {} \tmean loss =  {} " .format(step, mean_loss_val))

預測

print ( "訓練結束,進行預測" )

predicted_labels_val  sess.run(predicted_labels,  feed_dict = feed_dict)

for  i, text  in  enumerate (all_texts):

label  predicted_labels_val[i]

label_name  label_name_dict[label]

print ( " {}  =>  {} " .format(text, label_name))

 

分享安排:

目標:

1.掌握大資料建模分析與使用方法。

2.掌握大資料平臺技術架構。

3.掌握國內外主流的大資料分析與BI商業智慧分析解決方案。

4.掌握大資料分析在搜尋引擎、廣告服務推薦、電商資料分析、金融客戶分析方面的應用。

5.掌握主流的基於大資料Hadoop和Spark、R的大資料分析平臺架構和實際應用。

6.掌握基於Hadoop大資料平臺的資料探勘和資料倉儲分散式系統平臺應用,以及商業和開源的資料分析產品加上Hadoop平臺形成大資料分析平臺的應用剖析。

7.掌握常見的機器學習演算法。


具體內容:

一、大資料概述:1.大資料及特點分析;2.大資料關健技術;3.大資料計算模式;4.大資料應用例項

二、大資料處理架構Hadoop:1.Hadoop專案結構;2.Hadoop安裝與使用;3.Hadoop叢集的部署與使用;4.Hadoop 代表性元件

三、分散式檔案系統HDFS :1.HDFS體系結構;2.HDFS儲存;3.HDFS資料讀寫過程

四、分散式資料庫HBase :1.HBase訪問介面;2.HBase資料型別;3.HBase實現原理;4.HBase執行機制;5.HBase應用

五、MapReduce :1.MapReduce體系結構;2.MapReduce工作流程;3.資源管理排程框架YARN ;4.MapReduce應用

六、Spark :1.Spark生態與執行架構;2.Spark SQL;3.Spark部署與應用方式

七、IPython Notebook執行Python Spark程式:1.Anaconda;2.IPython Notebook使用Spark;3.使用IPython Notebook在Hadoop YARN模式執行

八、Python Spark整合開發環境 :1.Python Spark整合開發環境部署配置;2.Spark資料分析庫MLlib的開發部署

九、Python Spark決策樹二分類與多分類 :1.決策樹原理;2.大資料問題;3.決策樹二分類;4.決策樹多分類

十、Python Spark支援向量機 :1.支援向量機SVM 原理與演算法;2.Python Spark SVM程式設計

十一、Python Spark 貝葉斯模型 :1.樸素貝葉斯模型原理;2.Python Spark貝葉斯模型程式設計

十二、Python Spark邏輯迴歸 :1.邏輯迴歸原理;2.Python Spark邏輯迴歸程式設計

十三、Python Spark迴歸分析 :1.大資料分析;2.資料集介紹;3.Python Spark迴歸程式設計

十四、Spark ML Pipeline 機器學習流程分類 :1.機器學習流程元件:StringIndexer、OneHotEncoder、VectorAssembler等

2.使用Spark ML Pipeline 機器學習流程分類程式設計

十五、Python Spark 建立推薦引擎 :1.推薦演算法;2.推薦引擎大資料分析使用場景;3.推薦引擎設計

十六、專案實踐:1.日誌分析系統與日誌挖掘專案實踐;2.推薦系統專案實踐


學習可關注人工智慧技術與諮詢,更多詳情可諮詢152-3187-5710(v同號),qq群:189696007。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021344/viewspace-2919545/,如需轉載,請註明出處,否則將追究法律責任。

相關文章