工作詳述
1.專題需求:
老師主要讓我們各自尋找跟幼兒或嬰兒有關的網站,在找到適合的網站以後,完成對於該網站的所有資料爬取,並把抓到的資料轉成JSON檔以方便日後作處理。
而我找到的網站是親子天下,而親子天下起源於雜誌媒體和書籍出版,進而擴大成為華文圈影響力最大的教育教養品牌,也是最值得信賴的親子社群平台。 我們希望,提供給學校和家庭,專業可信賴的教育教養解決方案。 從線上(online)到實體(offline),分齡分眾供應親子家庭最體貼合身的優質內容、活動、產品與服務。
圖2圖3圖4為嬰幼兒相關資訊網站。
我們目前都是一個禮拜開會一次,每次開會的時候我們都會跟老師報告上禮拜的進度,在大家都爬完至少兩個網站的時候,老師開始跟我們講下一步要做些什麼事。
把這些網站的資料存成JSON檔以後,就要把這些JSON存到資料庫裡面,再把資料運用在我們網站的功能中,便是我們專題最後的成果,所以組員四個人分成兩個人一組,開始各自做各組需的功能,而
3
我跟另外一位負責的是給文章一個適合的標籤。要怎麼給標籤呢?首
先,我們需要用到的東西有word2vec和tf-idf還有jiaba,然而為什麼要給文章標籤?因為並不是每個網站的文章都有標籤如ptt,媽媽經等等,所以我們要利用有標籤的網站ex親子天下,母乳協會,該類型網站的現有標籤,來作成一個字典檔,負責給沒有標籤的文章籤。
2.程式:
我到現在主要還是用python的程式語言,主要用途就是網站爬取還有寫出網站功能。
圖5圖6圖7是嬰兒與母親的程式碼
透過上面的程式我完成了對嬰兒與母親網站還有親子天下的所有資料爬取,並把我爬下來的資料順利轉成JSON檔。
圖7圖8是嬰兒與母親的JSON檔
接下來完成網站的抓取後,我接著去研究jiaba還有word2vec這兩個套件。Jieba,就是一個開源的、可在 Github 上找到的斷詞專案。主要功能當然就是斷詞,其處理速度可是非常非常地快,遠比我使用的其他斷詞工具更迅速。不只如此,我個人認為它的準確率也相當之高,在某些類型的文件甚至還贏過台灣中研院開發的 CKIP。而word2vec是 Google 於 2013 年由 Tomas Mikolov 等人所提出,透過學習大量文本資料,將字詞用數學向量的方式來代表他們的語意。並將字詞嵌入到一個空間後,讓語意相似的單字可以有較近的距離。舉例來說,輸入一個詞彙 “wine”,則模型訓練產生的結果,可能會預測在 “wine” 附近有較高機率出現的字是 “grape”, “Bordeaux”,而一些字詞像是 “NLP”, “AI” 可能出現的機率就會比較小。至於怎樣算是 “wine” 這個字的「附近」呢?我們則可在訓練模型時定義一個範圍,比如說在一句話中,”Wine”的前後 5 個字都算是她的附近,這個範圍,我們稱為“window size”。
圖9圖10為jiaba和word2vec部分程式碼。
黃榆程:
我們與老師討論後訂定主題為”幼兒相關網站的資料彙集與統合”並利用統整好的資料為基礎建立一個網站以供使用者查詢,我們的目前所進行或完成的工作如下:
-
找尋與育兒相關之網站:
-
利用 python 進行網路爬蟲將網站上的資訊爬取下來並輸出成 Json 格式檔以便分析
圖11為 PTT BabyMother 論壇
圖12為 Babyhome 論壇網站
圖13為伊莉討論區的育兒父母版
圖14為範例輸出檔示意圖
在討論完專題的雛型之後,我們在一次分工每個人個別負責不同部分,我是負責把我自己抓取的三個網站(PTT、Babyhome、伊莉討論區)的資料和焦榮安(親子天下、Mababy)合併,並匯入到資料庫,用來當作以後建立的網站的資料庫。
圖15為匯入資料庫的部分程式
圖16為資料庫圖片
圖16
圖17為在php myadmin中資料庫的相關數據
鄭云瑄:
1.專題需求:
在寒假時,使用 Python 語言抓取 PTT 的分類看板,並將抓到的資訊用JSON 的格式儲存下來。而在1082學期的時候在抓取網路上相關嬰幼兒以及懷孕的網站,將資訊同樣以 Json 的格式儲存下來,以利往後的內容分析。
圖18圖19圖20為 PTT 分類看板示意圖與嬰幼兒相關資訊網站。
經過我們專業實習的第一個學期後,我們與老師共同討論出一個專題的雛型,並且在暑假期間維持每週開會一次,向老師討論進度以及遇到的問題。
我們一組四人在1082學期的時候,各自在網路上抓取相關嬰幼兒以及懷孕生產主題的網頁文章、討論版資料,(如:Mobile01的媽媽寶寶親子版、PTT的Baby Mother版、台灣母乳協會等),並存取成了JSON檔。而後,我們要將這些抓取下來的資料存入資料庫中,以滿足我們最後的成果網站上功能需求。
因此,我們在暑假期間分成了兩個小組,其中我所負責的小組則是要對這些網頁文章資料進行TF-IDF分析並且以文字雲的方式呈現出來,而TF-IDF分析就是對所有的文章進行分析,評估一個字詞對於一個文章或是一個文章總集中的其中一份文章的重要程度,字詞的重要性會隨著他在文章中出現的次數成正比增加,也同時會隨著字詞在文章總集中出現的頻率成反比,最後可以取得必要的特徵向量,作為後續延伸的文字雲的依據。
2.程式:
撰寫 Python 語言,在1082學期時,將 PTT 以及相關嬰幼兒網站中可見的所有資訊(如:文章的標題、作者、內容、留言、網址)擷取下來。
接著將資料逐筆寫入串列,最終匯出成JSON的格式儲存,作為之後分析的資料數據。
圖21圖22為程式碼以及輸出結果範例。
而在暑假期間,撰寫一個程式,利用python與MYSQL的連接,將抓到的網頁文章資料全數匯入資料庫,以利後續的資料搜尋以及取用。
圖23圖24圖25圖26為程式碼示意圖以及結果。
過了第一個學期之後實習,老師給了我們明確方向,希望我們可以往那個方向去做努力以及把抓下來的資料整合成一個單一網站。所以我們暑假的每個禮拜四都還是會跟老師開會檢討跟討論進度或是跟老師求解在撰寫程式時遇到的問題。
為了把我們抓下來的資料整合成一個網站,老師在暑假期間把我們4個人分成兩組,而我所負責的小組是要對我們所抓下來的文章先進行斷詞,然後再對我斷詞下來的每個單字進行TF運算,完成之後,在做IDF運算,最終把兩者結合做成TF-IDF分析(Term Frequency - Inverted Document Frequency)
圖30為TF-IDF分析示意圖
我們所做的事情是,對所有的文字進行分析與運用,進而取得必要的特徵向量,作為後續分類的參考依據。TF-IDF 是一種常用於資訊檢索與文字探勘的統計方法,用來評估「詞」對於「文件」的重要程度,所以TF-IDF方法裡面關鍵的部分是「詞」和「文件」。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在資料中出現的頻率成反比下降。
2.程式:
在寒假前,將 PTT 以及相關嬰幼兒網站中可見的所有資訊(如:文章的標題、作者、內容、留言、網址)抓下來。
接著將資料寫進一個dict的結構下,配合著KEY寫進JSON裡面,最終匯出成JSON的格式儲存,作為之後分析的資料數據或是我上所提到的TF-IDF運算也是從這裡的JSON抓來的。
圖31為抓取文章內重要訊息的部分(如:作者或是內文等等重要訊息)。
圖32為持續抓取下一頁的部分程式碼
圖33為抓下來存進JSON的資料
因為第一次報告到現在有一段時間,在這之間我發現我乘是遇到很多問題,所以我在爬蟲的過程中有修改我的程式,讓他跑起來不會花更多時間,在這之中也發現自己在資料型態還有結構上有很大的問題,有時候無法好好解決,或是跟老師討論問題的時候,都會在這方面出差錯。
而在暑假期間,因為我們需要把資料寫進資料庫裏頭,也就是MYSQL,所以需要寫一個PYTHON讀取JSON然後把它寫進資料庫裏頭,方便後續的查詢或是存取資料。
而我專門負責的部分是做關於TF-IDF運算的部分,需要把文章一個一個的斷詞,然後再把他們存成一個list之後才可以在我寫好的TF-IDF函式裡面使用。
圖34為TF-IDF的程式碼
圖35為用Jieba做文章斷詞並把他append進list的部分
圖36為上面程式跑完,並且讓他執行前50個標籤的Json檔Weights是字的權重