Skip to content

christinekao88/Model-Ball

Repository files navigation

專題:Model Ball

hackmd-github-sync-badge

目的

選擇前五局的大小分來做分析研究,利用機器學習讓模型判斷出在該比賽條件下,前五局最後的總分會是大於或小於基準。

事前規劃

事前所須的準備資料,主要從兩大方向去進行,一方面是可以量化的數字型態資料,另一方面是無法量化的文字型態資料。

  • 量化資料方面,除了主要的歷史球賽紀錄外,還收集了天氣資料,因為濕度會影響投手投出的球的運行軌跡和轉速;大小分及賠率當做比較基準,最後是球場資料,因為每個球場大小距離都不一樣,這也會影響到我們的判斷結果。

  • 非量化資料方面,選擇了美國最普及的社群媒體 - twitter 來做分析。目的是想要從各大意見領袖的發文中,藉由情感分析去獲取大家對比賽的意見及看法,進而成為不同來源的參考依據。

架構示意圖

  • 量化資料的部份,我們利用python從網路上的數據庫中爬取到原始資料後,先儲放在hadoop叢集上,清洗過後再送入模型中訓練,最後將結果存放至mysql。

  • 非量化資料的部份,一樣是透過python的爬蟲套件從twitter上爬取相關帳號的文章,儲放至ES,當中也有利用到kafka做為溝通媒介分配工作,最後再將分析的結果透過kibana來做視覺化的呈現。

  • 與使用者互動的部份,選擇了最方便普及的linebot,在我們的chatbot上使用者輸入了查詢之後,我們利用了kafka來確保使用者資料不丟失,也利用了redis來增加查詢效率,減少使用者等待的時間。以上除了hadoop我們是選擇在本地端架設之外,其餘的服務我們也都將其包進docker容器化並架設在GCP雲端平台上。

[分工部分]-情感分析

情感分析流程首先為收集推特文章內容,使用到的套件有Tweepy與Twint接著,針對推文的部分做資料處理,處理完之後,利用TextBlob library做情感分析,最後將結果視覺化呈現,使用的是Elasticsearch的Kibana

python code 目錄 - crawling

  • get_id_from_wiki.py - 取得用戶twitter帳號id
  • hello_tweepy_learning.py - tweepy操作方法
  • hello_tweepy_get_user_information.py - 利用tweepy取得用戶twitter information
  • csv_to_json.py - csv轉換成json的資料格式
  • twint_nltk.py - 利用twint取得用戶twitter information

利用下關鍵字的方式去爬取推文,所下的關鍵字包含了MLB 與各球隊隊名,然後利用Tweepy跟Twint來爬取我們感興趣的推文內容

以李奧納多的推文為範例,This is great progress. 我們可以設定This和is為stop word. 然後移除標點符號 剩下的great被判定為positive,progress 被判定為neutral 我們即可認爲這篇推文為一篇正向的推文

python code 目錄 - sentiment analysis

  • NLTK_test_01.py - how to use NLTK packages
  • NLTK_test_02.py - how to use NLTK packages
  • NTLK_twitter.py - twitter's sentiment analysis
  • NLTK to ELK.py - send data to ELK
  • Map_to_ES.py - make fan's map

在清理推文的部分,我們將對情感分析並無影響的部分移除,其中包含像是標點符號,Hashtags, Mentions,(網址) URLs 並且還原縮寫的部分,像是 I can't會還原成 I can not 另外表情符號在推文中是十分常出現的,所以我們也針對了表情符號的部分做文字的轉換

以 "Hello MLB !! 😁 :-) “為例 透過python還原成Hello MLB !! happy face Happy face smiley

我們可以發現,原本的neutral推文約有33萬,經由把表情符號轉換成文字,我們可以多判定了5萬則推文為positive或是negative

在判定推文情緒方面,仍然還是有很多因素造成推文會被判定為neutral,像是推文長度太短,或是推文含有縮寫

還有諷刺性的推文跟看不出明顯情緒的推文

最後視覺化呈現的部分我們呈現了不同語系國家的情感分析,我們可以發現英語在推特的使用還是佔了主要的部分,其次之為日文,然後才是西班牙文,另外也可以觀察到三種情緒分別在不同國家佔的比例

我們也呈現了不同球隊聲量圖與情感分析關係圖,我們可以發現關於芝加哥小熊的推文數量最多,我們也能分別觀察每個球隊三種情緒推文的數量各佔多少

About

This is the first project that I join

Topics

Resources

Stars

Watchers

Forks

Languages