PTT-Stock/README.md at master - GitHub

文章推薦指數: 80 %
投票人數:10人

PTT中的Stock 版長期為熱門看板,同時約有千人至萬人不等同時在線,時常會有板友分享自己的選股標的、市場看法等。

我們認為這些看法或是群眾的互動有可能是有價值的, ... Skiptocontent {{message}} kuo23 / PTT-Stock Public Notifications Star 1 Fork 3 Code Issues 0 Pullrequests 0 Actions Projects 0 Wiki Security Insights More Code Issues Pullrequests Actions Projects Wiki Security Insights Permalink master Branches Tags Couldnotloadbranches Nothingtoshow Loading {{refName}} default Couldnotloadtags Nothingtoshow {{refName}} default Loading PTT-Stock/README.md Gotofile Gotofile T Gotoline L Copypath Copypermalink     Cannotretrievecontributorsatthistime 巨量資料分析導論-期末報告 PTT討論與股價的關係 一、研究動機 1.PTT介紹 2.研究目標 二、如何爬蟲PTT 1.套件介紹 2.爬標題 3.爬內文 三、文本分析 1.SnowNLP套件介紹 2.自訂語庫 3.參數定義與權重設計 參數定義 權重設計 四、實證結果與準確度 五、改進 Reference 458lines(381sloc) 15.3KB Raw Blame OpenwithDesktop Viewraw Viewblame 巨量資料分析導論-期末報告 PTT討論與股價的關係 組員: 產碩108洪意茹 財管107郭銘翔 財管107李權原 一、研究動機 1.PTT介紹 批踢踢實業坊,簡稱批踢踢、PTT,是一個臺灣電子布告欄(BBS)。

建立在台灣學術網路的資源之上,以學術性質為原始目的,提供線上言論空間。

目前在批踢踢實業坊與批踢踢兔註冊總人數約150萬人,尖峰時段兩站超過15萬名使用者同時上線,擁有超過2萬個不同主題的看板,每日超過2萬篇新文章及50萬則推文被發表,是台灣使用人次最多的網路論壇之一。

2.研究目標 PTT中的Stock版長期為熱門看板,同時約有千人至萬人不等同時在線,時常會有板友分享自己的選股標的、市場看法等。

我們認為這些看法或是群眾的互動有可能是有價值的,像是績效比較好的知名版友發布標的時可能造成哄抬股價的"抬轎"現象,又或是有板友提出領先市場的見解,又或是PTT對於市場而言是反指標。

我們想要研究這些網站資訊是否能作為一項投資策略的依據。

二、如何爬蟲PTT 1.套件介紹 使用套件 requests:產生Http請求,下載網站資料 BeautifulSoup:讀取HTML原始碼,自動進行解析並產生一個BeautifulSoup物件,此物件中包含了整個HTML文件的結構樹。

又由於PTT是屬於bbs留言板,網站架構簡單,也沒有驗證機器人,比較好爬。

2.爬標題 從網頁版開始爬: PTT的網頁板將每篇留言版的文章轉成網頁架構,每篇文章都有獨立的網址,很好爬。

把每天貼文的推文數、標題、內文連結、日期爬下來。

defget_articles(url): r=requests.get(url,"html.parser",cookies={'over18':'1'}) r.encoding="UTF-8" soup=BeautifulSoup(r.text,'lxml') divs=soup.find_all("div","r-ent") articles=[] foriinrange(0,len(divs)): push=0 ifdivs[i].find("div","nrec").string: try: push=int(divs[i].find("div","nrec").string) exceptValueError: pass ifdivs[i]("a"): date=divs[i].find("div","date").string.strip() href=urllib.parse.urljoin('https://www.ptt.cc/',divs[i].find('a')['href']) title=divs[i].find('a').string content=get_content(href) articles.append({ 'date':date, 'push':push, 'title':title, 'link':href, 'content':content }) returnpd.DataFrame(articles)[['date','push','title','link','content']] 執行的結果 get_articles('https://www.ptt.cc/bbs/Stock/index.html') 日期 推文數 標題 連結 內文 0 6/24 11 [新聞]中華電信再招考271人年薪至少16個月 https://www.ptt.cc/bbs/Stock/M.1529844863.A.6E... ※[本文轉錄自cjol信箱]作者:orz44444(台灣會亂是因為修羅... 1 6/24 19 [新聞]傳比特大陸將砍50%訂單券商:台積電Q3 https://www.ptt.cc/bbs/Stock/M.1529847007.A.F9... 1.原文連結:http://news.ltn.com.tw/news/busin... 2 6/24 20 [新聞]茂迪屏縣種電跨出不利耕地綠能區 https://www.ptt.cc/bbs/Stock/M.1529847524.A.69... -------------------------------發文提醒---------... 3 6/24 5 Re:[新聞]傳比特大陸將砍50%訂單券商:台積電Q3 https://www.ptt.cc/bbs/Stock/M.1529851666.A.A0... 2330從2018年4月26日的222點到現在6月22日,這中間最高不超過233... 4 6/24 17 Re:[標的]2049上銀 https://www.ptt.cc/bbs/Stock/M.1529853748.A.01... 各位前輩晚安2049上銀因爲S大關係,版上不少人上車其中不乏被... 5 6/24 18 [新聞]光磊滿手單大舉擴產 https://www.ptt.cc/bbs/Stock/M.1529854152.A.44... 1.原文連結:https://goo.gl/4a6GNV2.原文內容:近... 6 6/25 0 [公告]lilylemon違反板規4-4水桶一週 https://www.ptt.cc/bbs/Stock/M.1529856101.A.7D... 主旨:lilylemon違反板規4-4水桶一週說明:經板主巡視版面,lily... 7 6/25 6 Re:[請益]宏達電為什麼不會倒?? https://www.ptt.cc/bbs/Stock/M.1529856261.A.1D... ※引述《gokuhwanlai(你今天范特西了嗎?)》之銘言::個人有個疑問.... 8 6/25 9 [標的]1909榮成 https://www.ptt.cc/bbs/Stock/M.1529856532.A.61... --------------------------------------------... 9 6/25 0 [公告]alberchi違反板規4-2警告一次 https://www.ptt.cc/bbs/Stock/M.1529857094.A.0E... 1.主旨:alberchi違反板規4-2警告一次2.說明:經板主巡視板... 10 6/25 3 [新聞]日出手管制比特幣爆賣壓 https://www.ptt.cc/bbs/Stock/M.1529857926.A.7E... 1.原文連結:http://tinyurl.com/yby7jjus... 11 6/25 0 [標的]本週程式選股結果 https://www.ptt.cc/bbs/Stock/M.1529860487.A.52... 1.標的:本週程式選股結果2.分類:有的多/有的空3.分析/正文... 12 6/25 1 [標的]本週股票多空表 https://www.ptt.cc/bbs/Stock/M.1529860517.A.7D... 1.標的:本週股票2.分類:有的多/有的空3.分析/正文:... 13 6/25 2 Re:[請益]100萬元用來投資股票、創業或留學較好呢? https://www.ptt.cc/bbs/Stock/M.1529860635.A.06... ※引述《pipiboygay(喜歡男人的男生)》之銘言::非常辛苦的還完全部的... 14 6/25 6 Re:[標的]2049上銀 https://www.ptt.cc/bbs/Stock/M.1529860690.A.62... 我在S大發上銀文的前一天有在起漲點社團問2049我想買零股因為四月的時候... 15 1/25 43 [公告]精華區導覽Q&A https://www.ptt.cc/bbs/Stock/M.1422199105.A.84... 關鍵字查詢:使用"/"於本文搜尋1.請將頁面跳離關鍵字區2.輸入"/"出... 16 12/18 0 [公告]Stock板規(20151218修訂) https://www.ptt.cc/bbs/Stock/M.1450418190.A.2F... main_contenterror 17 6/22 0 [閒聊]2018/06/22盤後閒聊 https://www.ptt.cc/bbs/Stock/M.1529647207.A.8D... 難道今天只有我賠錢?https://i.imgur.com/k8N7Q6o.jpg... 3.爬內文 在爬完文章列表還有文章內容後,還要爬每篇文章的下方推文,這些推文可以幫助我們了解鄉民對於這篇文章的看法,更重要的是情緒的判讀。

例: 爬完推文如下 Crawler_PTT_Push('https://www.ptt.cc/bbs/Stock/M.1529844863.A.6E8.html') push message time 0 推 :要噴了 06/2420:57 1 推 :CHT真的超爽 06/2421:06 2 推 :噴個鬼啊XD 06/2421:06 3 推 :快進場 06/2421:09 4 推 :以前就這樣啦@@ 06/2421:09 5 推 :我以為對員工越壞的越會噴xD 06/2421:19 6 推 :真是血汗 06/2421:29 7 推 :中華電不會噴 06/2421:30 8 推 :之前從100噴到113現在回檔了 06/2422:32 9 → :爛公司已報名 06/2422:55 10 推 :看到那些老賊的嘴臉不爭氣的報名了……有讀書 06/2500:44 11 → :會可以參加嗎 06/2500:44 12 推 :馬的正職根本超少一堆血汗派遣 06/2500:51 以上爬完資料後,再對這些文字資料進行文本分析。

三、文本分析 1.SnowNLP套件介紹 SnowNLP是一個python套件,可以用來處理中文文本,主要功能內容包括:中文分詞、情感分析、提取關鍵詞、提取大綱等等。

本次報告內容著重在使用情感分析的部分,套件的內建指令會對文本打0-1的分數,0-0.5為負面,0.5-1為正面;內建語庫則是針對買賣購物。

2.自訂語庫 情緒分析參考的字典語庫本來用套件的內建的字典,但是由於以下原因,我們決定自訂語庫: 內建字典收錄詞彙很多,我們認為加入自定義的股票版關鍵字對於情緒分析的影響並不大。

股票版的鄉民用詞具有蠻高的重複性,每則推文表達多空用詞接近,我們認為可以快速提高準確度。

舉例 多方用詞:起飛、電梯向上、大漲、火熱、低調噓、短線看多等等 空方用詞:倒貨、出貨、睡公園、快逃R、電梯向下、怕 我們透過爬蟲放入多篇個股相關的新聞、常見推文等作為股票版用語的訓練,幫助我們準確的分析股票版鄉民的意見。

#應回傳0-1之間的情緒值,經我們字典訓練意為多空判斷值 emotion_analysis('起飛囉') >0.773593997384181 emotion_analysis('出貨文') >0.29646853146853172 emotion_analysis('持續成長') >0.9278816405829792 3.參數定義與權重設計 參數定義 情感分析原始分數 自製標籤 0-0.5 負面,設為-1 0.5-1 正面,設為1 權重設計 每一篇貼文都有標題、本文、留言、推文數等架構,我們可以先分成兩大部分。

標題與本文:通常標題會與本文相關。

由於本文的組成較為複雜,因此我們會先對本文截取一個摘要,並分別對摘要以及標題進行情感分析,此部分權重為0.6。

推文:每一則推文我們都個別做情感分析,再透過推為1、噓為-1(因為噓文的人通常是在反串)、箭頭為0來做為分數加總的正負號依據。

舉例來說: 噓:全力做多ㄏㄏ 經過情感分析判斷這則留言是看多,但此留言為噓文,因此會透過加負號的概念讓分數轉為看空。

而此部分的權重為0.4。

將兩部分加總後,即可得到該則貼文的情感分析分數,然後再依推文數加權平均當天所有貼文的分數作為當天的總分,分數會落在-1到1之間,進而得到對於隔天多空預測之分類,例如小於0為預測隔天大盤會跌,大於0為預測隔天大盤會漲,漲跌分類為跟前一天大盤收盤價直接比較。

四、實證結果與準確度 預測出來的每天都是負的,也就是說我們每天做出來都覺得明天大盤會跌QQ,分析後覺得有可能的原因如下, 第一,雖然本文看多,但若底下很多人都留言負面的話,就會對分數計算會有加成效果,會導致分數無法真實呈現。

第二,因為我們只預測隔天,所以若做出來準確度高的話就表示大盤是momentum,但結果顯示大盤並不是喔~,所以可能預測天數也有關係。

第三,PTT的設計制度會有反串與跟風等等現象,且真正具專業度與公信力的評論相對較稀有,導致雜訊變多。

後來我們有微調分數,向右平移0.5,目的是為了讓門檻降低,類似標準化的概念,也就是說如果原始分數靠近0.5(跌但機率小),則有機會變成小漲。

在調整前準確度(47%)(等於每天都看空大盤的勝率) 調整後準確度(53%)(略大於一邊壓) 五、改進 字典庫應該可以擴充更多資料,加強準確度 標題的分類可以加入探勘 預測標的可以貼近原構想,例如炒作股、飆股等,大盤可能會雜訊多 或是改爬專業度較高的網站,例如cMoney等 Reference 簡報連結 參考資料:SnowNLP使用範例 Go Youcan’tperformthatactionatthistime. Yousignedinwithanothertaborwindow.Reloadtorefreshyoursession. Yousignedoutinanothertaborwindow.Reloadtorefreshyoursession.



請為這篇文章評分?