自 序 Chapter 01 Python 簡介 1-1 何謂程式設計 1-2 Python 程式設計的特點 1-3 選擇 Python 作為第一種程式語言的理由 1-4 安裝Python 與環境設定 1-5 安裝編輯器:Visual Studio Code 1-6 建置Anaconda 開發環境 Chapter 02 資料型態 Chapter 03 流程控制 Chapter 04 串列與迴圈 Chapter 05 元組、字典與集合 Chapter 06 函式 Chapter 07 錯誤與例外 Chapter 08 網頁爬蟲的簡單範例 Chapter 09 向伺服器發送請求的方式 Chapter 10 萃取有用資訊 Chapter 11 爬取「PChome 24h 購物」的商品資料 Chapter 12 爬取「Google 學術搜尋」的論文資料 Chapter 13 爬取「PTT 八卦版」的PO 文資料 Chapter 14 書籍比價爬蟲 Chapter 15 製作文字雲 在正式介紹 Text Mining 的演算法前,我們先來談談如何把文字表示成數字 為什麼要用數字表示呢?因為電腦只能理解數字,不論在後續的演算法處理,亦或是近期火紅的深度學習,都必須使用數字來表示文字,讓電腦讀懂意涵,畢竟電腦還是看不懂文字的! 這裡用一個最簡單的例子來理解,如何把文字編碼成數字: 以下有三個句子 (已經做好斷詞處理) 1. 我 愛 吃 香蕉 我們抓出上面兩個句子中不重複的詞,就是所謂的 bag-of-word (詞袋, BOW),就像把詞都丟到袋子裡一樣,我們就會得到有五個詞在我們的袋子裡 (這裡用Python的list表示) ["我", "愛", "吃", "香蕉", "蘋果", "好"] 其中所有的文檔裡面,總共只有六個單詞,因此每個單詞就可以用長度為6的一維向量(vector)去表示
# 長度為3的一維向量(vector) 以下是每個文字的向量表示,也某種程度的把文字轉換成數字了 我:[1, 0, 0, 0, 0, 0] # 因為“我”在詞袋中在第一個位置,因此擺上1 假設現在有一個句子是 “吃蘋果”,經過斷詞後,這個句子就可以被編碼成 # 吃 蘋果 以上的文字編碼方式稱為 One-Hot Encoding (獨熱編碼),是很簡單將文字轉換成數字的方式! 這時,敏銳的你發現到了,這只是給他一個編號而已呀,純粹代表這個詞有在文檔中出現過!好像也沒抽取到什麼特徵! 也許我們嘗試著找一些特徵,看看怎麼來編碼他… 也許…這個詞在文件中出現的次數,好像可以當作一個特徵呦! 這次我們採用 詞袋模型 (Bag-of-Word) 編碼! 首先拿出剛剛的詞袋,並統計一下每個詞在所有句子中出現的次數,也就是計算詞頻(word frequecy, wf),然後把詞依照詞頻大小去排序,並給他一個索引(index)
{"我": 2, "愛": 2, "吃": 3, "香蕉": 2, "蘋果": 1, "好": 1}
{"吃": 0, "我": 1, "愛": 2, "香蕉": 3, "蘋果": 4, "好": 5} 其中這個索引(index),就表示向量陣列中的第index位置,並在這個index填上1,表示這個詞在句子中有出現 以”蘋果”這個詞為例,索引為4,因此在陣列中(向量長度與詞袋長度相同) index為4的地方填上1來表示這個詞 # 蘋果 “蘋果好吃,我愛吃” 這句來說,句子會被編碼成 # 蘋果 好 吃 我 愛 吃 這樣一來,我們好像就有稍微考慮到詞出現的頻率當作特徵,進而把句子進行編碼!不過當然還有很大的改進空間 先來稍微總結一下 One-Hot Encoding (獨熱編碼) 與 詞袋模型 (Bag-of-Word) 編碼 的特點跟缺點
特點:
缺點:
2. 詞袋模型 (Bag-of-Word) 編碼 特點:
缺點:
了解基本的文字的數字表示法後 接下來的文章會介紹許多文字中特徵抽取的演算法 喜歡的話請留下您的clap clap !! |