SVM、隨機森林等分類器對新聞數據進行分類預測
- 2019 年 11 月 20 日
- 筆記
基本步驟如下:
- 從新浪財經、每經網、金融界、中國證券網、證券時報網上,爬取上市公司(個股)的歷史新聞文本數據(包括時間、網址、標題、正文)
- 從Tushare上獲取滬深股票日線數據(開、高、低、收、成交量和持倉量)和基本資訊(包括股票程式碼、股票名稱、所屬行業、所屬地區、PE值、總資產、流動資產、固定資產、留存資產等)
- 對抓取的新聞文本按照,去停用詞、載入新詞、分詞的順序進行處理
- 利用前兩步中所獲取的股票名稱和分詞後的結果,抽取出每條新聞里所包含的(0支、1支或多支)股票名稱,並將所對應的所有股票程式碼,組合成與該條新聞相關的股票程式碼列表,並在歷史數據表中增加一列相關股票程式碼數據
- 從歷史新聞資料庫中抽取與某支股票相關的所有新聞文本,利用該支股票的日線數據(比如某一天發布的消息,在設定N天后如果價格上漲則認為是利好消息,反之則是利空消息)給每條新聞貼上「利好」和「利空」的標籤,並存儲到新的資料庫中(或導出到CSV文件)
- 實時抓取新聞數據,判斷與該新聞相關的股票有哪些,利用上一步的結果,對與某支股票相關的所有歷史新聞文本(已貼標籤)進行文本分析(構建新的特徵集),然後利用SVM(或隨機森林)分類器對文本分析結果進行訓練(如果已保存訓練模型,可選擇重新訓練或直接載入模型),最後利用訓練模型對實時抓取的新聞數據進行分類預測
開發環境Python-v3(3.6)
:
- gensim==3.2.0
- jieba==0.39
- scikit-learn==0.19.1
- pandas==0.20.0
- numpy==1.13.3+mkl
- scipy==0.19.0
- pymongo==3.6.0
- beautifulsoup4==4.6.0
- tushare==1.1.1
- requests==2.18.4
- gevent==1.2.1
* 文本處理(text_processing.py)
- 文本處理包括去停用詞處理、載入新詞、中文分詞、去掉出現次數少的分詞
- 生成字典和Bow向量,並基於Gensim轉化模型(LSI、LDA、TF-IDF)轉化Bow向量
- 計算文本相似度
- 列印詞雲
* 文本挖掘(text_mining.py)
- 從新聞文本中抽取特定資訊,並貼上新的文本標籤方便往後訓練模型
- 從資料庫中抽取與某支股票相關的所有新聞文本
- 將貼好標籤的歷史新聞進行分類訓練,利用訓練好的模型對實時抓取的新聞文本進行分類預測
* 新聞爬取(crawler_cnstock.py,crawler_jrj.py,crawler_nbd.py,crawler_sina.py,crawler_stcn.py)
- 分析網站結構,多執行緒(或協程)爬取上市公司歷史新聞數據
* Tushare數據提取(crawler_tushare.py)
- 獲取滬深所有股票的基本資訊,包括股票程式碼、股票名稱、所屬行業、所屬地區等
* 用法
- 配好運行環境以及安裝MongoDB,最好再安裝一個MongoDB的可視化管理工具Studio 3T
- 先運行
run_crawler_cnstock.py
,run_crawler_jrj.py
,run_crawler_nbd.py
,run_crawler_sina.py
,run_crawler_stcn.py
這5個py文件,而且可能因為對方伺服器沒有響應而重複多次運行這幾個文件才能抓取大量的歷史數據 - 接著運行
run_crawler_tushare.py
從Tushare獲取基本資訊和股票價格 - 最後運行
run_main.py
文件,其中有4個步驟,除了第1步初始化外,其他幾步最好單獨運行 - 注意:所有程式都必須在文件所在目錄下運行