文字探勘(文字前處理、斷詞)

Benny
數據領航員
Published in
8 min readFeb 11, 2023

什麼是文字探勘?

簡介

文字探勘就是從文章中萃取高品質資訊的過程,也可以稱為文字資料探勘、文字分析。常見的應用有詐騙偵測、獲取卓越商業情報、改善客戶服務、選情分析。

文字探勘 vs 資料探勘

對於初次接觸資料科學領域的夥伴,很常會分不清文字探勘與資料探勘的差異。事實上以一張圖就能解釋這兩者的差異。

簡單來說文字探勘是一項比資料探勘還要難的技術,因為通常非結構式的資料會比結構式的資料更髒更混亂,甚至是有時候因為語意上的問題,連人類也傷透腦筋。

舉例來說:請判斷以下這篇短文中,美女究竟是同意還是不同意?

有人向一位認識的美女發了一段簡訊:「今晚滾床單嗎?」

美女回覆:「滾!」

接著又發:「那是去我家,還是去你家?」

美女回「去你的!」

…..真是開心!!

作者:羅凱揚(台科大企管系博士)、蘇宇暉(台科大管研所博士候選人)

雖然文字探勘這項技術十分困難,但是目前拜文字探勘技術的進步、搜尋引擎的崛起、NLP技術的成長,目前網路上已經有許多現成的套件(本篇會以jieba作為範例)能讓我們做文字分析。歡呼🥳🥳🥳🥳

文字探勘過程與步驟

文字探勘的流程大概分為5步驟

第一步:資料蒐集 GATHER

簡單來說就是蒐集資料,資料來源通常來自公司的問卷、新聞、網頁、電子郵件、Word 檔案、PDF 檔案、部落格、社交媒體。

第二步:資料預處理 PREPROCESS

整理來自多個資料來源的非結構化文字資料、從資料中提取並僅保留相關的資訊,以便幫助識別特定字詞的詞根、將預處理的內容轉換為適合分析的結構化格式。

第三步:資料搜尋 INDEX

將資料以更輕量化的方式儲存,以便日後查找及搜尋。

第四步:資料挖掘 MINING

這步驟包含資料檢索、資料提取、分群與分類。

第五步:資料分析 ANALYSIS

常見的有預測性分析、詞彙分析、資料可視化。

文字探勘優勢

如今,世界各地的企業幾乎每分鐘都會產生大量資料,只要上網、在線上空間進行操作就會產生資料。這些資料來自多個來源,並儲存在資料倉儲和雲端平台上。傳統的方法和工具有時無法分析如此龐大的資料,而且這些資料每分鐘都呈指數增長,給公司帶來了重大挑戰。 以金融業為例子:

以公司防詐騙來看,

保險業與金融業持有大量的文字資料,若將這些資料結構化並使用文字探勘工具和技術對其進行文字分析,能有助於此類公司偵測和防止欺詐。文字探勘還可幫助公司更快地處理保固或保險理賠。

以公司獲取商業情報來看,

文字探勘技術能有效的幫助企業獲取卓越的商業情報,因為它可以讓公司深入洞察客戶/買家行為和市場趨勢,還能幫助組織對其自身業務及其競爭對手,進行優勢、劣勢、機會、威脅 (SWOT) 分析以便在市場中獲得優勢。

以公司改善客戶服務來看,

許多公司會用文字分析軟體查看來自客戶調查、意見回饋表、語音電話、電子郵件、聊天當中的文字資料。文字探勘和分析的目標是減少對客戶來電或查詢的回應時間,並使解決客戶投訴的週轉過程更快、更有效,這有利於留住客戶、減少客戶流失和更快解決投訴。

文字前處理

說了這麼多,我們直接進入實戰吧!要對非結構化的文字資料進行分析,第一件事情是對文字資料抽取結構化的量化數值特徵。除了用「文字探勘分析器」簡單分析字數、句數之外,最常見的分析方式就是斷詞和詞性分析。

而最常見的套件就是Jieba ,它不只可搭配「非結構化資料分析:文本分類」等機器學習來使用,更可以用在質性研究的內容分析、文本分析或敘說分析上。

斷詞

Step 1:首先記得要先在終端機輸入pip install jieba

Step 2 : 先用jieba.cut做斷詞,然後輸出結果為generator,所以需要在用for 迴圈將單個字輸出

Step 3 :因為jieba 是中國的字典所以在做繁體中文的斷詞的時候,要從github下載對繁體中文表現較好的字典。指令如下:jieba.set_dictionary('./dict.txt.big')

Step 4 :因為有時候斷詞的結果不盡理想,所以我們會自己新增一個txt檔存放新字詞指令:jieba.load_userdict("userdict.txt")

Step 5 :動態加入新字jieba.add_word("國立台灣大學")

import jieba
input_string = '小明碩士畢業於國立臺灣大學,現在在日本東京大學進修深造'
cutted_words = jieba.cut(input_string)
words = [word for word in cutted_words]
jieba.set_dictionary('./dict.txt.big')
jieba.load_userdict("userdict.txt")
jieba.add_word("國立台灣大學")


print(words)
['小明', '碩士','畢業','於','國立臺灣大學', '現在', '在', '日本','東京大學','進修','深造']

補充

文字前處理的部分除了中文斷詞以外,還有英文的移除停用字(stopwords)、移除標點符號(punctuation)、移除常用字(frequent words)。

舉例而言:

“Nick likes to play football, however he is not too fond of tennis.”

這句話的 to is too of 這幾個詞在分析上是沒有意義的,因此我們需要移除。

“Nick likes play football, however he not fond of tennis.”

接著我們要將 , . 移除。

“Nick likes play football however he not fond tennis”

“Nick likes play basketball however he not fond soccer”

“Ben hates to play basebsall”

當我們的句子變多時,就可以去計算有哪些字的出現頻率過高。通常頻率過高的重複字對於分析沒有意義,所以會將它移除。

{Nick : 2 ,likes : 2 ,play : 3 ,however : 2 ,not fond : 2 ,he : 2}

“football tennis”

“basketball soccer”

“Ben hates basebsall”

剩下我們主要要分析的目標。

教育部補助大專院校STEM領域及女性研發人才培育計畫目標為建構一個「以智慧物聯技術與實務應用為基礎的教育環境和實作場域」,並規劃出符合此STEM教育領域的創新特色課程,以畢業前進入企業實習的方式,讓學生了解相關產業界所面對的問題,再輔以業界實作場域的教育訓練活動,共同帶領學生發展出動手做、判斷與解決問題的相關技能;本計畫也規劃讓學生以專題實作的組隊方式,跟業界協力領導學生對外參與智慧物聯技術的應用競賽,不僅可以累積學生實務開發的能力,更能激發其潛能來幫助企業解決所面臨的難題。

Data Science Meetup 台灣資料科學社群的使命是「為資料科學人士與企業創建經濟機會」。我們相信大數據蘊藏著巨量的信息和價值,如何處理好大數據並發掘其潛藏的商業價值,就要靠資料科學有效的應用。21世紀是資料科學決勝時代,我們社群將為大家提供與資料科學相關的最新技術和資訊實戰攻略,並透過全球業界人士和學者幫助相關職業規劃與挑戰,社群活動包含

  • 台北實體版聚
  • 線上版聚
  • Mentorship Program

歡迎加入我們社團瞭解更多資訊: https://www.facebook.com/groups/datasciencemeetup/

--

--

Benny
數據領航員

東吳大學資料科學系|Machine Learning & Deep Learning|數據領航員🖊Editor|目前是資料科學界的小菜雞~期許自己能成為獨當一面的資料科學家~|📩️GitHub : benny-liang0623 & 📭 LinkedIn : Tien Chun (Benny) Liang