iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
6
Modern Web

從LINE BOT到資料視覺化:賴田捕手系列 第 1

第 01 天:Python:Anaconda 環境配置

第 01 天:Python:Anaconda 環境配置

「眷養草尼馬就像一場球賽,孩子。那就像一場球賽,而每位選手都得遵守比賽規則。」
「是的,先生。我知道這就像是場球賽,我了解的。」
球賽個鬼。球賽?如果你碰巧有個妹妹,而她也很貼心的願意幫忙你一起照顧這些活潑好動的草尼馬們,那我承認,這確實挺像一場球賽的,一場你可以樂在其中,好好享受的球賽。但現實是,你發現了嗎?你沒有妹妹。那還有什麼樂在其中好談?還有什麼享受好談?球賽?門都沒有。

~節錄自《賴田捕手》

  聊天機器人(chatbot)近年來火速竄紅,一個接一個的社群平台,從大家相當熟悉的 Facebook、LINE、Skype、Twitter、WhatsApp、WeChat、到包括 Slack、Alexa 和 Cortana 等等,都紛紛推出自己的聊天機器人。以 Facebook 為例,自從自 2016 年推出以來,到 2018 年 5 月,其註冊在線的機器人帳號就已突破了 300,000 名。究其主要原因,除了有趣新奇、能夠快速提供回應之外,在商業上,對於多屬於制式回應的服務,也有相當潛力可以大幅降低營運成本。➀
  而 AI 產業的指標 Google,也在 2017 年底發表了用來評估聊天機器人效能的平台 Chatbase,用來幫助了解客戶的使用習慣,分析聊天機器人無法正確處裡的個案比例等等。發展至今,這個分析平台已經可以適用於各種語音以及各式訊息平台。可以說,各行各業都在探討藉由聊天機器人發展出新的商業模式以及新的商業契機。聊天機器人的工作,從查詢天氣、查找餐廳、購買衣服、預定票券,幾乎無所不包,就連心理諮商,都有專業的團隊利用本身的知識,打造出以認知行為為手段的聊天機器人 Woebot,希望藉著無所不在的聊天機器人,作為第一道防護網,治療並幫助憂鬱症患者。➁
  好了,閒話少敘。我這次參加鐵人賽,打算選擇 Python 作為主要的程式語言,實作一隻 LINE BOT。在程式語言的這個領域裡,開源一直是一個很重要的精神,它不斷引領一代又一代的碼農們,開疆拓土,同時又不忘留下正確的路標,將前進的方向,指引給後來的人們。因此如今的網路上,已經可以找到不少詳實的文獻,記載著各式聊天機器人的養成方式。➂ 而我呢,在做出第一隻 LINE BOT 之後,覺得實在有趣極了,就開始幫它加裝配備。從鉛筆、擦子、筆記本,到現在,直尺、圓規、麥克筆,它也都拿得穩穩當當,儼然成為我生活中不可或缺的小幫手。因此想利用這次鐵人賽的機會,把做一隻 LINE BOT 的程序有系統的記錄下來,將手頭上好不容易掌握住的東西梳理一遍,也算是權充感謝。
  下面是我這次鐵人賽預計會涵蓋到的內容和進度:

  1. Python
    1. Anaconda, Jupyter Notebook
    2. Python basics
    3. Regular Expression
  2. LINE-BOT-SDK
    1. LINE Developers, Git, Heroku
    2. echo BOT
    3. LINE Messaging API
  3. PostgreSQL
    1. Heroku Postgres Add-ons
    2. PostgreSQL basics
    3. psycopg2 basics
  4. Flask
    1. CDN inheritance
    2. Jinja
    3. Flask-Login
  5. Data Visualization
    1. Javascript
    2. Chart.js
    3. noUiSlider

  為了讓之後的學習更順利,一開始稍微熟悉一下 Python 是很重要的。因此關於 Python 的部分,我會從環境的建置、程式碼編輯器、到一些 Python 基本的語法,以及字串的選擇與操作開始講起。接著馬上來利用 Git 和 Heroku 的幫忙,實作出第一隻 LINE 聊天機器人。為了讓這個聊天機器人可以記得大家跟他聊過的天,我們接著要幫他加裝資料庫,也就是用來記東西的地方。這裡,我們選用 Heroku 官方支援的外掛 PostgreSQL 加上 psycopg2,在網路上找一處可以讓聊天機器人安心紀錄訊息的地方。記錄完訊息了,聊天機器人可以輕鬆的讀寫這些訊息,但這些訊息我們也非常感興趣,我們也想看聊天機器人究竟偷偷記下了些什麼。因此我們用 Python 架設網站的工具 Flask,把資料庫裡的訊息放在我們的網站上。最後,再用 Javascript 的小工具,把一大筆一大筆的資料有系統的分類,讓他們以漂亮的圖表呈現在我們面前。

  千里之行,始於足下。我們今天就從建置Python環境開始。
  為了能夠快速安全的將 Python 環境建置完成,我們找來 Anacond 幫忙。Anaconda是一個免費開源的 Python 發行版本,同時也內建了許多進行資料科學(data science)研究時常用的工具。➃ 講了這麼多,其實我也不是聽得很懂到底是什麼意思,只知道免費開源這四個關鍵字。因此第一步,先去 Anaconda 官網下載符合目前電腦的安裝檔。記得要選對安裝檔啊。不知道為什麼,我用的是 windows,但每次點進去,預設的載點都是 macOS 的安裝檔。
https://ithelp.ithome.com.tw/upload/images/20190909/20120178uRhY1TKRU1.png
  圖一、下載 Anaconda 安裝檔

  下載完畢後,執行它,靜待安裝,最後就大功告成!➄
https://ithelp.ithome.com.tw/upload/images/20190909/20120178IpspsCst87.png
https://ithelp.ithome.com.tw/upload/images/20190909/20120178xQyPngMWv4.png
https://ithelp.ithome.com.tw/upload/images/20190909/20120178NyinopZyyt.png
https://ithelp.ithome.com.tw/upload/images/20190909/20120178emiyzmgzqJ.png
https://ithelp.ithome.com.tw/upload/images/20190909/20120178BOy6MX0YB8.png
  圖二、Anaconda 安裝流程

  安裝好 Anaconda 後,可以看到應用程式多了 Anaconda Navigator 和 Anaconda Prompt。點下去,若能執行,就代表安裝成功了。
https://ithelp.ithome.com.tw/upload/images/20190909/20120178cWE0p9Khdd.png
  圖三、點下去,若能執行,就代表安裝成功了!

  Anaconda 最方便的一點是可以自由創建許多環境。有點像是,在玩 RPG 遊戲時,你可以自由創造許多新角色,對於某一個角色,技能要點什麼就點什麼,裝備想穿什麼就穿什麼,不必擔心影響到其他角色,萬一長歪了,不喜歡就砍掉。Anaconda 裡的環境也是一樣。你可以同時創建許多不同環境,用來執行不同的任務。在其中一個環境裡,Python 想選哪個版本就選哪個版本,模組包想裝什麼就裝什麼,不需要擔心玩壞自己的電腦。
  因此今天的第二步,就是要來嘗試新建一個環境。這也不難。約略有兩種方式可以達成這個目的。比較潮一點的方式是用 GUI 圖形介面 Anaconda Navigator。比較樸素一點的方式是用 Anaconda Prompt。
  先看看潮一點的方式究竟是多潮。
  Anaconda Navigator 用力點下去之後,就會出現一個美輪美奐的介面,用來顯示以及變更關於 Anaconda 的各種設定。我們想要創造一個新的環境(environment),那麼就點選 Environments 分頁,如下圖。分頁裡面顯示的是目前我們建置的所有環境,以及環境中已經安裝好的各種套件。
https://ithelp.ithome.com.tw/upload/images/20190909/20120178emExbjMp3f.png
  圖四、Anaconda Navigator 的 Environments 分頁

  要創造新環境也很簡單。create 點下去,name 的欄位填入你想取的名字,Python 版本選 3.7,按 OK,等待一下,新的環境就建置完成了。
https://ithelp.ithome.com.tw/upload/images/20190909/20120178y5Q6JwBWHb.png
  圖五、選擇新環境的名稱及 Python 版本

  要使用我們新建置完成的環境,就用滑鼠點選它的名字,等待系統將該環境中安裝的套件解析完畢,按右邊的三角形,選 Open Terminal 就成了。你會看到一個像是命令提示字元的視窗跳出來,上面寫著:

(ironman_env) C:\Users\MyName>

  是不是很簡單呢?
https://ithelp.ithome.com.tw/upload/images/20190909/20120178sKJQhzgqOg.png
  圖六、啟動新建置完成的環境

  接著來介紹樸素一點的方式。首先點了 Anaconda Prompt 後,應該會跳出一個像命令提示字元的視窗。不要害怕,我們沒有要對它做什麼,只是輸入幾行英文字而已。下面是一開始看起來的樣子。

(base) C:\Users\MyName>

  我們可以試著輸入一些英文字看看。輸入conda -V查看目前 conda 的版本。

(base) C:\Users\MyName>conda -V
conda 4.7.10

  原來是 4.7.10 版啊~那試著輸入conda update --all將環境中所有安裝的套件都更新。

(base) C:\Users\MyName>conda update --all

  輸入了以後,電腦會開始檢查有哪些套件需要更新,彼此之間的相容性等等的。檢查結束,它會很有禮貌地詢問您是否要繼續更新:

Proceed ([y]/n)? 

  若無疑問,就按 Enter 繼續執行,將環境中所有安裝的套件都更新。再來一個常用的指令conda env list

(base) C:\Users\MyName>conda env list
# conda environments:
#
base                  *  C:\Users\Meng-Huan\Anaconda3

  查看目前我們的 Anaconda 中建立的環境。當然是,只有 base (假設我們還沒建立新環境)!相同的,我們來試著建立一個新的環境,當作接下來實作 LINE 聊天機器人的實驗場!

(base) C:\Users\MyName>conda create –n ironman_env

  用create這個關鍵字告訴 conda 我們想要新建一個環境,-n告訴 conda 我們接下來輸入的參數ironman_env指的是名字。因此,發現了嗎?ironman_env可以換成任何你開心的名字。但是不要加空白鍵。Enter 按下去之後,視窗會跳出一連串的訊息,告訴你各種資訊,可以試著讀一讀。不過重點在最下面:

Proceed ([y]/n)? 

  是否繼續呢?一樣的,如果一切沒問題,就 Enter 按下去,Yes 到底囉~完成後,會告訴你下面的訊息:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate ironman_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

  也就是說,想要進入這個新建置的環境,只要輸入conda activate ironman_env就行囉!

(base) C:\Users\MyName>conda activate ironman_env

(ironman_env) C:\Users\MyName>

  今天就先到這吧!

參考文獻:
Facebook 聊天機器人突破 300,000 隻
Woebot
卡米狗ChatBot&ChatbaseLINE Bot tutorial on Github
Anaconda 官方網站Anaconda 安裝教學
Anaconda 安裝流程

註:對於此系列文有興趣的讀者,歡迎參考由此系列文擴編成書的 LINE Bot by Python,以及最新的系列文《賴田捕手:追加篇》
第 31 天 初始化 LINE BOT on Heroku
第 32 天 快速回覆 QuickReply 介紹
第 33 天 妥善運用 Heroku APP 暫存空間
第 34 天 妥善運用 LINE Notify 免費推播
第 35 天 製造 Deploy to Heroku 按鈕


下一篇
第 02 天:Python:Jupyter Notebook 介面操作
系列文
從LINE BOT到資料視覺化:賴田捕手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

請問作者吸了什麼?
我也想來一點

謝謝阿志的提問!
抱歉回答慢了

關於這個問題,我想我必須得感謝史上最年輕的特級廚師☆劉昴星!
沒有他,我就沒有辦法完成這個系列文

感謝劉昴星

https://ithelp.ithome.com.tw/upload/images/20200118/20120178U0CN5BFP0u.jpg

我要留言

立即登入留言