易經數字占卜Chatbot

2017-03-19

前言

根據Simon Sinek的黃金圈理論,從裡到外分為三個階層, 分別是why、how以及what;

why代表領導者或品牌的理念和目標,

how是執行理念的方法與過程,

what則代表最終呈現出的產品以及領導風格。

alt tag

Simon Sinek的名言

People don't buy what you do; they buy why you do it.

受到Simon Sinek的黃金圈理論所啟發,這次打算從Why開始寫起。

Why 的部分說明為何要做易經數字占卜Chatbot

How 的部分會簡單敘述我的製作過程

What 的部分可以看到我目前的成果

Why ?

為何要做易經數字占卜Chatbot呢?

這就要從去年輔大校慶前,梅大在臉書上的po文說起

今年校慶無法到校見到系友, 特別開放網路占卦三天(12/3-12/5). 若有需要請私訊

然後我錯過了!!!

留言的部分老師提到

要排隊了. Po 文後, 一直占卦, 還沒停下來

當時我想 何不做一個占卜的Chatbot呢?

但由於那時的我對易經一無所知,所以果斷放棄 (´_ゝ`)

這學期剛好有修梅大的易經資訊學,沒想到第一堂課,老師就教了如何用易經占卜

在興趣使然下,我開始了開發易經數字占卜Chatbot的旅程

How ?

在去年FB Chatbot剛推出的時候,我剛好有走過tutorial,所以我直接有現成的bot可以改改

Server的部分,我將Chatbot部署在Heroku

易經資料的部分由於沒有找到現成的Api可以call,所以打算自己硬幹

在網路上有查到易學網有現成的易經今解可以用,

eee-learning.com/book/neweee01

從網址的結尾發現是有規律的 neweee01到 neweee64, 這樣一來資料的部分就解決一大半了,在來面臨的問題是先天八卦表要怎麼mapping呢? 我的解法比較暴力xDD

我直接看64掛表來一個個掛寫上對應的數字wwwwww

接著只要照簡易數字卦占卜的規則,就能找出卦來

最後使用Cards的形式附加上易學網的易經今解網址就完成了

但是這樣使用者還是無從得知爻辭的部分要參考哪一個

在設計上還需要再friendly一些,

可是要如何得知道變爻的部分呢?

在看了幾篇易經今解後,我找出了內容上大致上的規律

每一篇大致上都會以經文作為開頭

乾,元亨利貞。初九,潛龍勿用。九二,見龍在田,利見大人。九三,君子終日乾乾,夕惕若,厲无咎。九四,或躍在淵,无咎。九五,飛龍在天,利見大人。上九,亢龍有悔。用九,見群龍无首,吉。

從這篇經文中可以看出它的規律可以使用句點將其拆開為

乾,元亨利貞。

初九,潛龍勿用。

九二,見龍在田,利見大人。

九三,君子終日乾乾,夕惕若,厲无咎。

九四,或躍在淵,无咎。

九五,飛龍在天,利見大人。

上九,亢龍有悔。用九,見群龍无首,吉。

找到規律後,我用python寫了爬蟲,

將易學網上共64卦的易經今解資料給爬下來,並輸出成txt,仔細看了這些爬下來的資料,

發現並不是所有的經文都符合上述的規則 (╯‵□′)╯︵┴─┴

像是

元亨,利牝馬之貞。君子有攸往,先迷,後得主利。西南得朋,東北喪朋,安貞吉。初六,履霜,堅冰至。六二,直方大,不習无不利。六三,含章可貞,或從王事,无成有終。六四,括囊,无咎无譽。六五,黃裳,元吉。上六,龍戰于野,其血玄黃。用六,利永貞。

拆解完會得到

元亨,利牝馬之貞。

君子有攸往,先迷,後得主利。

西南得朋,東北喪朋,安貞吉。

初六,履霜,堅冰至。

六二,直方大,不習无不利。

六三,含章可貞,或從王事,无成有終。

六四,括囊,无咎无譽。

六五,黃裳,元吉。

上六,龍戰于野,其血玄黃。

用六,利永貞。

但看似大部分的經文都符合此規則,因此我使用了excel的資料剖析精靈,將txt的資料丟入後,以句號將資料分割成不同的欄位,然後把不合規則的欄位做手動調整,才得出乾淨的資料。

由於這些資料都是只是顯示而已,沒有必要用到資料庫,本來想說直接用js去讀csv,但查了資料感覺好麻煩,還是用json格式最方便,在網路上找了excel to json 的線上工具做了轉換。

最後在js的程式中去讀json的資料。

What ?

以下截圖為目前成果

alt tag

alt tag

點擊 查看爻辭 會跳轉到 eee-learning.com/book/neweee33

alt tag

點擊 查看卦辭 會跳轉到 eee-learning.com/simple64/33

後記

近期 ToDoList

  • 加入使用正規表達式
  • 直接在Cards裡顯示爻辭與卦辭的解釋
  • 加入privacy policy
  • 招募測試人員
  • 提交應用程式進行審查

目前在使用者輸入的部分還沒有做正規表達式的部分, 此外在Cards裡顯示的資訊也不夠完整,我打算再寫爬蟲把 易學網上的資料爬下來進行分析。

在梅大的文中,Alan學長有提到privacy policy的部分,這點要特別注意,由於這個Chatbot有可能變向收集使用者的資料,所以加上privacy policy會比較保險。

在正式上線前會先進行測試,有興趣成為測試者的歡迎mail我 ( ),你們的feedback非常重要!!

未來展望

  • 解卦者的串接
  • 加入Payments的功能

目前自己使用這個Chatbot發現有個問題, 卜卦者可能會看不懂爻辭的解釋,

會需要有經驗的解卦人來做進一步的解釋。 像是我上次占卜要不要換駕訓班的教練,

得到的結果是井卦 (水風井) 的九三

九三,井渫不食,為我心惻。可用汲,王明,並受其福。

《象》曰:井渫不食,行惻也;求王明,受福也。

水井再次湧出甘甜的泉水,可以為人所飲用,然而因為之前水井壞掉,壞名聲在前,所以還不能讓人所接納。若有英明而有眼光的大王來取用,眾人也可以同享福報。

井渫不食,為我心惻:井水清澈乾淨,卻沒人飲用,讓人感到傷心。比喻君子修德有成,但仍懷才不遇,道德不行。渫,音謝,除去污泥,說明井水已經乾淨清澈,可以飲用。心惻,傷心。惻,傷心的樣子。

王明,並受其福:君王英明,有智慧,眾人將會因此而得到其福祉。有智慧的英明君王,當能選用人才,因此而福惠人民。

看完爻辭後,發現還是霧煞煞 ┐(´д`)┌

因此未來如果有機會的話,會想去串接一些有經驗的解卦人,

來為這個服務加值,同時導入Payments的功能,讓這個Chatbot的更加完善。