我們在之前一直提到,要用 PTT 文章來找出一些股市訊號,那文章怎麼找出一些特地的訊息,其實有蠻多種方式可以進行。第一種就是純文字的部分,可以用 “語意理解”、“關聯法則”或是最簡單的 rule-based pattern 去比對。另外,也可以把文字轉換成數值,利用分類、分群等方式來進行判別。
在之前我們有提到,這整個流程我們會用文字進行分類,將文章分類出好與壞 (也就是 正、負 兩個類別),這是一個分類問題,先把它訂為是一個兩類別的分類問題就好。
我們知道在訓練一個分類器之前需要訓練資料集和測試資料集,那我們到哪裡找這兩個資料?好問題 !!
沒有這東西
什麼,沒有這東西,那接下來我們要搞什麼?哦 .. 沒有東西那就自己生吧 (沒錯,就是自己產生)。那我們要怎麼做?有個最土法煉鋼的方式就是自己標記。是的,天降大任於斯人也,必先苦其心志、勞其筋骨、餓其體膚 ….. 要認命一點了,凡事都只能靠自己。
我相信看到這裡你一定有個問題,明明現在就可以用 Zero-Shot 來做不用訓練集的事情,為何我們還要做這個苦工?恩 … 好問題,這東西可以留到明年我再來試試,因為 zero-shot 我承認我還沒有很熟,就先不用在這裡了。
為了方便我們建立這些資料集,我自己也寫了一個方便用來標記的 application (詳細的部分再下一章會介紹) ,我們先稱它為『PTT文章標記工具』,簡稱『標記工具』。這個標記工具可以載入我們之前已經下載回來的文章、股票代號等資訊,然後一篇一篇的把資料顯示出來。
中間我先穿插一下我自己標記資料的規則。每載入一篇文章後,標記工具會自動把文章內提到的公司名稱、代號以及數字 (可能的股價)列出來。因為這些文章不是即時的,而是過去的文章,所以我可以把當日之後某段時間的股價也拿出對照一下;例如說如果我今天標記到 2018年06月18日的文章好了,那標記工具會先把包含在文章內的公司名稱、代號以及四個股價指數拉出來在板上,這四個指數分別是:
此時我會依據這四個數值來判斷該篇文章是該標記正類或是負類。當選好要標記的類別後按下 “下一步” 標記工具會依據你標記上的類別(正、負類別)即時的儲存在 tagging.txt 這個紀錄檔以及 history.txt 檔,這樣下次可以把紀錄檔載入後再直接從上次的結束位置繼續。例如說我今天標記了 100 篇文章,全部已經累計了 5000篇文章,累了,想暫停一下,那下次只要再載入 history.txt 這個檔案,那就可以從第 5001 篇文章開始進行標記。
history.txt 的格式很簡單,只有三個欄位:
載入時只會讀取最後一筆,以這個例子來說就是 Stock_1601.json 這個檔,文章則是從 M.1514945617.A.954 的下一筆開始進行。若 M.1514945617.A.954 已經是 Stock_1601.json 檔案內的最後一筆,那就會往下一個檔案 Stock_1602.json 的第一筆開始讀取。
tagging.txt 多了幾個欄位,但也不會複雜,包含的欄位如下:
比較要注意的是“標記類別”與“類別種類”。標記類別有三種狀況,除了上面提到正類與負類兩個類別,當無法選出類別時會被記錄為 “ignore”。
而『公司數量』的部分,如果文章內文被 pattern 只辨識出單個公司名稱或代號,則會紀錄為 “single” 若是辨識出多餘單個公司名稱 (有兩個以上的公司名稱)則會紀錄為 “multiple”。之所以多要記錄這筆資料,是為了之後改善分類器效能使用,等到最後幾天我們將文章計算完後討論到如何改善時,這個欄位就會用到了。
免責聲明:本文章提到的股市指數與說明皆為他人撰寫文章內容,包括:選股條件,買入條件,賣出條件和風險控制參數,只適用於文章內的解釋與說明,此提示及建議內容僅供參考之用,並不構成投資研究、認購、招攬或邀約任何人士投資任何投資產品或交易策略,亦不應視為投資建議。