iT邦幫忙

DAY 10
1

人工智慧 vs.工人智慧系列 第 10

Day 10:真正的工人智慧上線 .. 前

我們在之前一直提到,要用 PTT 文章來找出一些股市訊號,那文章怎麼找出一些特地的訊息,其實有蠻多種方式可以進行。第一種就是純文字的部分,可以用 “語意理解”、“關聯法則”或是最簡單的 rule-based pattern 去比對。另外,也可以把文字轉換成數值,利用分類、分群等方式來進行判別。

在之前我們有提到,這整個流程我們會用文字進行分類,將文章分類出好與壞 (也就是 正、負 兩個類別),這是一個分類問題,先把它訂為是一個兩類別的分類問題就好。

我們知道在訓練一個分類器之前需要訓練資料集和測試資料集,那我們到哪裡找這兩個資料?好問題 !! 沒有這東西
什麼,沒有這東西,那接下來我們要搞什麼?哦 .. 沒有東西那就自己生吧 (沒錯,就是自己產生)。那我們要怎麼做?有個最土法煉鋼的方式就是自己標記。是的,天降大任於斯人也,必先苦其心志、勞其筋骨、餓其體膚 ….. 要認命一點了,凡事都只能靠自己。

我相信看到這裡你一定有個問題,明明現在就可以用 Zero-Shot 來做不用訓練集的事情,為何我們還要做這個苦工?恩 … 好問題,這東西可以留到明年我再來試試,因為 zero-shot 我承認我還沒有很熟,就先不用在這裡了。

為了方便我們建立這些資料集,我自己也寫了一個方便用來標記的 application (詳細的部分再下一章會介紹) ,我們先稱它為『PTT文章標記工具』,簡稱『標記工具』。這個標記工具可以載入我們之前已經下載回來的文章、股票代號等資訊,然後一篇一篇的把資料顯示出來。

中間我先穿插一下我自己標記資料的規則。每載入一篇文章後,標記工具會自動把文章內提到的公司名稱、代號以及數字 (可能的股價)列出來。因為這些文章不是即時的,而是過去的文章,所以我可以把當日之後某段時間的股價也拿出對照一下;例如說如果我今天標記到 2018年06月18日的文章好了,那標記工具會先把包含在文章內的公司名稱、代號以及四個股價指數拉出來在板上,這四個指數分別是:

  • 當日收盤
  • 一個月後的收盤價
  • 二個月後的收盤價
  • 三個月後的收盤價

此時我會依據這四個數值來判斷該篇文章是該標記正類或是負類。當選好要標記的類別後按下 “下一步” 標記工具會依據你標記上的類別(正、負類別)即時的儲存在 tagging.txt 這個紀錄檔以及 history.txt 檔,這樣下次可以把紀錄檔載入後再直接從上次的結束位置繼續。例如說我今天標記了 100 篇文章,全部已經累計了 5000篇文章,累了,想暫停一下,那下次只要再載入 history.txt 這個檔案,那就可以從第 5001 篇文章開始進行標記。

https://ithelp.ithome.com.tw/upload/images/20190906/20119726vKV4cAhAzS.png

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”。之所以多要記錄這筆資料,是為了之後改善分類器效能使用,等到最後幾天我們將文章計算完後討論到如何改善時,這個欄位就會用到了。


上一篇
Day 09:今天漲停還是跌停?
下一篇
Day 11:打造自己的小天地
系列文
人工智慧 vs.工人智慧20

尚未有邦友留言

立即登入留言