1. 程式人生 > >基於LSTM的研報分類系統

基於LSTM的研報分類系統

下面是基於東方財富中巨集觀研究的研報分類系統介紹:

一、該系統是由以下幾步組成:

(1)爬蟲
(2)文字處理
(3)word2vec詞向量訓練
(4)Lstm模型訓練
(5)基於模型的新文字預測

二、執行該系統需要安裝的包

(1)爬蟲中需要安裝:selenium和PhantomJS,本人的安裝環境是mac下的anaconda,安裝過程可以參考:https://blog.csdn.net/lilong117194/article/details/83277075
(2)word2vec的訓練過程,需要安裝的包有jieba,這個包的安裝很簡單。
(3)lstm的訓練過程,需要安裝tensorflow和keras,mac下的安裝也很簡單

三、各個.py檔案的說明

(1)reptile.py:爬蟲檔案
下面是各個函式的說明

  • get_page_url(self,url,num):模擬滑鼠點選網頁,獲取指定頁的網址。
    引數url:網頁地址,num:指定的網頁數,也即是第幾頁,如下所示
    在這裡插入圖片描述
  • download_report(self,text_link,re_sum_info):下載指定網頁的研報文字。
  • get_report_page(self,page_start,page_end):以起始和終止頁面數為爬取標準
  • get_report_date(self,start_date,end_date):以起始和終止時期為爬取標準

(2)del_Ds_store.py:輔助檔案,該檔案的作用是刪除mac系統下自動生成的.Ds_store檔案,不去除的話會影響文字處理(windows下不會生成該檔案)。
(3)filename_mod.py:輔助檔案,該檔案的作用是給新增的人工打標籤重新命名,然後加入打過標籤的文字庫。
(4)

interface.py:介面檔案,即其他檔案會呼叫該檔案的函式

  • __init__(self):大部分的引數調整都在這裡
  • tokenizer(self,text):對文字分詞並去掉空格
  • load_w2v_file(self,w2v_file_path):載入訓練檔案
  • text_proce(self,text_raw):# 對文字進行處理
  • file_test_vec(self,w2indx,file_reshape):測試文字的向量化
  • word2vec_train(self,combined):詞向量訓練
  • create_dictionaries(self,model=None,combined=None):建立詞語字典,並返回每個詞語的索引,詞向量,以及每個句子所對應的詞語索引
  • test(self):該檔案僅做測試用
    (6)lstm.py:lstm模型的訓練
  • splice_data(self,path):該函式初步處理訓練資料
  • load_train_file(self):拼接訓練檔案和檔案的標籤
  • parse_dataset(self,combined):得到每篇文字在詞典中的索引列表
  • train_data_struc(self,combined):lstm模型訓練資料的結構化
  • get_train_data(self,word_index,word_vectors,struc_w2index,y):
    index_dict:所有的詞索引列表(詞:索引), word_vectors:所有詞的詞向量, combined:所有文字的索引值。該函式得到的結果才是用於lstm網路結構的結構化資料
  • train_lstm:網路訓練函式,網路的引數也是在這裡除錯。

(7)main_test.py:這裡是總的呼叫,爬蟲、詞向量訓練、lstm模型訓練、新文字預測都是在這個檔案裡。

(8)terminal.py:該檔案主要是預測新文字分類,也是最簡單的介面呼叫。

四、各個資料夾的說明

spider_report:該資料夾下是爬取的6000個研報文字,主要用於詞向量的訓練。
word2vec_model:是word2vec訓練儲存的資料和模型
train_data:用於進行lstm訓練的打過標籤的文字
lstm_model:是lstm訓練儲存的資料和模型
test_report:爬取的用於預測的文字
測試程式碼:輔助處理文字的一些程式碼。

由於這裡的訓練文字,是需要人工打標籤的,所以只給出了少部分用作訓練,準確率會有一定的限制。