2019年10月4日-6日python
Python爬蟲與文本分析工做坊 & 課題申報高級研修班web
這篇文章是公衆號關注者郝童鞋今早發給個人,在此謝謝郝童鞋。正則表達式
文章基於簡單算法和人工判斷,使用多階段剔除法,構建了 中文金融情感詞典CFSD(ChineseFinancialSentimentDictionary)
, 這個詞典能幫到那些想用文本分析研究會計金融領域的中文文檔的研究者。CFSD詞典有1489個負面詞,1108個正面詞。而且簡單討論了CFSD詞典的應用領域。算法
本篇教程主要分爲兩部分:微信
這篇論文如何構建
中文金融情感詞典
app大鄧將論文附錄中的詞典整理好給你們用機器學習
1、構建中文金融情感詞典
情感分析目前有兩大方式,情感詞典法和機器學習法。基於情感詞典的文本分析,必需要有好用的詞典。但因爲語言差別,英文的情感詞典沒法直接應用於中文的情感分析,並且目前中文的情感詞典(如HOWNET、DLUTSD、NTUSD)都是通用性詞典(大可能是形容詞副詞),並非專業領域詞典。Loughran和 McDonald (2011)曾經指出研究商業領域問題的文本數據不該該使用非商業領域數據集構建出的詞典。編輯器
所以本文做者使用HOWNET、DLUTSD、NTUSD三種詞典做爲初始詞典,並蒐集了在線路演紀要(online roadshow transcripts)、業績說明電話會議紀要(earnings conference call transcripts)、IPO招股報告(IPO prospectus)及公司年報構建了基礎語料庫。基於算法和人工判斷, 使用多階段剔除法來構建 中文金融情感詞典CFSD
。具體步驟:post
合併HOWNET、DLUTSD、NTUSD三個情感詞典,去除重複詞學習
收集了1411篇在線路演紀要、7138篇業績說明電話會議紀要、2043IPO招股報告和29737公司年報。jieba被用於分割文檔,構建
基礎語料
計算步驟1全部的詞在
基礎語料
中的詞頻,詞頻數爲0的詞語不予考慮,剔除掉。與金融不相關的詞語也剔除掉,最終構建了CFSD0.0
版本中文金融情感詞典。全部的CFSD0.0版本的詞語都來自與三個通用情感詞典(HOWNET、DLUTSD、NTUSD),但這三個詞典並不包含金融領域常出現的正面詞和負面詞。咱們人工向
CFSD0.0
版情感詞典加入了金融領域最經常使用的100個正面詞100個負面詞,構建出CFSD0.1
版中文金融情感詞典.Gensim是python中的一個文本分析庫,在本步驟主要用來經過大量的語料訓練處詞向量。詞向量可使用餘弦cos計算出類似性。在本步驟,計算出CFSD0.1版中每一個詞的詞向量,進而從
基礎語料
中發現每一個詞(CFSD0.1中的詞)最類似的50個詞。剔除掉與金融不關的詞(包括類似詞、同義詞),構建出CFSD0.2版的中文金融情感詞典
合併
CFSD0.0、CFSD0.1、CFSD0.2
,剔除掉重複詞,最終構建出CFSD中文金融情感詞典
構件好的CFSD詞典有1489個負面詞,1108個正面詞。
2、詞典整理到csv文件中
論文後面富有CFSD情感詞典,以下
我想先將這些內容所有複製到txt中,正面詞表複製粘貼到 正面詞典.txt
, 負面詞表複製粘貼到 負面詞典.txt
。
經過中文正則表達式 [\u4e00-\u9fa5]+
把txt文件裏面全部的中文詞抽取出來,存到csv文件中。開始~
import jiebaimport reimport csvdef extract_keywords(infile, outfile, header): raw_kws_string = open(infile).read() kws = re.findall('[\u4e00-\u9fa5]+', raw_kws_string) csvf = open(outfile, 'w', encoding='gbk', newline='') writer = csv.writer(csvf) writer.writerow((header,)) for kw in set(kws): writer.writerow((kw,)) csvf.close()extract_keywords(infile = '正面詞典.txt', outfile = '正面詞典.csv', header = 'postive')extract_keywords(infile = '負面詞典.txt', outfile = '負面詞典.csv', header = 'negative')
如今咱們的項目文件夾中出現了 正面詞典.csv、負面詞典.csv
, 如今咱們能夠試着讀取一下 正面詞典.csv
import pandas as pd#正面詞典.csv中有1109個詞df = pd.read_csv('正面詞典.csv', encoding='gbk')len(df)
Run
1109
負面詞典.csv中有1488個詞
df2 = pd.read_csv('負面詞典.csv', encoding='gbk')len(df2)
Run
1488
詞典中的詞數與論文中的 1108和 1489有出入,應該是複製粘貼時不夠自信。下面咱們看看詞典中的內容
#正面詞典前5df.head(5)
#負面詞典前5df2.head(5)
至於在python中如何使用這些詞典進行文本分析和情感計算, !插播廣告^_^
2019年10月4日-6日,杭州
諮詢請加微信,記得備註」工做坊」
1
歡迎掃碼諮詢!!
本文分享自微信公衆號 - 大鄧和他的Python(DaDengAndHisPython)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。