第 13 章:文字分析

此章節主要介紹 SAS 平台如何進行文字分析的應用

基本介紹

首先文字分析是個非常有趣的研究領域,它涉及許多應用,所謂文字分析,又稱文字探勘,主要使用演算法將非結構化的文字轉換為可以進行分析的結構化的資料,並且應用統計、機器學習方法以及自然語言處理技術,其特點主要有:

  1. 針對文件檔中的語料庫 (Corpus) 進行操作。

  2. 建立字典 (Dictionary) 或詞彙表 (Vocabulary) 以識別相關術語 (Term)。

  3. 產生指標 (Metrics) 量化各種語料庫中文件檔中的內容。

  4. 針對每個文件檔相對於語料庫匯出結構向量 (Structured Vector) 。

  5. 使用適合的分析方法 (Analytical Methods) 基於目標的測量結構向量進行分析。

其中字典的概念可以被認為是詞彙,而每個文字檔集合具有詞彙表,這是每個文件中包含的所有術語的聯合,而文字探勘主要是將匯出字典或詞彙表作為分析相關的術語進行分析,文字探勘與一組文件檔一起使用,該每組文件檔集合可以是動態的,即文件檔可以增加到集合中,我們可以使用該集合來訓練模型,同時可以申請模型至新文件檔,並且匯入集合中,新的文件檔的評分與其相關與集合中的原始文件檔進行比較,若新的文件檔包含新術語,則為文字在該文件用於新的訓練步驟之前,所以文字探勘確實使用字典或詞彙表來代表分析中使用的術語集合,請注意若術語不在字典則會被忽略不使用。

接著我們能夠僅使用 SAS 文字探勘工具組中的節點執行文字探勘的訓練,SAS 文字探勘節點可以匯入和匯出資料,以及我們更能夠套用預測建模節點。雖然有許多的商業文字探勘產品具有強大的文字分析功能,但是大多數缺乏文字之外的進階分析,像是使用決策樹或神經網路針對新的文件檔進行評分呈現出新的效果,以利改善文字探勘的結果,而 SAS Enterprise Miner 則可以使用來自預測模型中文字分析的衍生變數,並且使用在原始語料庫上訓練的模型針對它們進行評分,最終我們可以透過增加在新文件檔的語料庫上重新訓練和更新模型。至於在 SAS Enterprise Miner 中與資料探勘工具相關的節點主要有:

  1. 文字分群 (Text Cluster)

  2. 文字過濾 (Text Filter)

  3. 文字匯入 (Text Import)

  4. 文字解釋 (Text Parsing)

  5. 文字規則建立 (Text Rule Builder)

  6. 文字主題 (Text Topic)

  7. 高效能文字探勘 (HP Text Miner)

  8. 資料分區節點 (Data Partition Node)

  9. 決策樹節點 (Decision Tree Node)

  10. 回歸節點 (Regression Node)

  11. 基於記憶推理節點 (Memory-Based Reasoning node)

  12. 評分節點 (Score node)

再來資料探勘主要有兩大領域,分別為:

  1. 無監督學習:模式發現或探索性分析

  2. 監督學習:預測建模

所謂無監督學習主要是沒有目標變數,並且以某種形式的執行識別或定義同類群體、群集或細分等分析,像是查找在購物籃分析中實體之間的連接或關聯,此外還能夠用於查看具有相關且感興趣內容之文件檔的資訊檢索,用於將文件檔分群成自然發生之群組的 提取主題或概念,以及用於識別可能存在的異常文件與需要特殊處理相關的案件,像是不滿意的客戶、欺詐活動、…等等,此外異常檢測有時可能是建立不存在之目標變數的第一步。

所謂監督學習主要是有目標變數,並且以某種形式的開發了預測或分類模型,輸入變數與值相關聯目標變數,模型產生一個預測給定輸入集的目標值。除了傳統輸入變數之外的資料,許多預測建模或分類主要透過文字合併更進一步強化應用程式,像是客戶傾向模型、住院預測模型、保險欺詐模型、客戶情緒分類模型、…等,其關鍵重點是預測建模應用其中可以使用非結構的文字資訊來導出新類型的輸入變數,預測建模需要標記資料具有已知目標變數的結果。

再來對於分析領域不熟悉的使用者通常對噪音有一種天真的概念為理解人類語言的計算機和機器人,我們期望在掌握文字探勘之後,將可以完美地完成根據對在線調查的回應預測客戶行為,這種期望是不現實的,因為現實是噪音隨處存在。在預測建模中的信號與噪聲相結合才會產生目標,也就是目標 (Target) = 信號 (Signal) + 噪音 (Noise),所謂信號為系統變化且可預測,而所謂噪聲為隨機變化且不可預測,最佳實務中最常見的情況是信號和噪聲的混合,我們能夠更準確地預測,預測的好壞取決於資料是否由主導系統變化或隨機變化。

最後文字探勘之文件分離主要有三種類型,分別為沒有混合主體的完美分離,主體混合很少的良好分離以及主體的大量混合的不良分離,而當沒有目標變數可用時,我們仍然可以調查是否發生自然分離,在許多分析目標的資料中像是欺詐案件為不同尋常維度空間,但在許多方面看起來很正常,此時欺詐案件就是目標變數,但是欺詐案件量通常很少,此時將會大幅影響欺詐模型的成效,此時我們應該採取什麼調整方法呢?過度取樣 (Oversampling) 也許是個適合的調整 方法之一。

整合應用

首先文字是人工產生最大的資料來源,其每天以指數倍數成長,像是發送電子郵件、在社群媒體上發貼文、與聊天機器人或數位助理進行互動、…等文字記錄,而當我們透過網際網路不斷傳輸和儲存這些資訊時,其中越來越多的知識、觀點和經驗將會被擷取為非結構化的文字資料,此時企業要如何透過文字資料進行分析,以利帶來業務轉型或創新價值。所謂文字分析主要是針對文字資料手動審查和分類該內容,以利企業組織擴大閱讀,以及用於量化文字資料隱藏在其中所代表的人類行為模式,同時文字分析為非結構化資料提供了結構,因此能夠進行分析。至於自然語言處理 (Natural Language Processing,NLP) 是文字分析過程的基礎,其主要執行語言分析,以利幫助機器閱讀文字資料,更進一步幫助機器識別和理解語言的結構,同時透過與自然語言相關的機器學習演算法自動提取關鍵特徵和關係概念。此外當企業使用非結構化文字資料作為最大的資料來源,這時文字分析功能將會是企業部署人工智慧應用的核心關鍵,文字分析的結果將能應用於各種業務情境,像是快篩金融詐欺、追蹤服務品質、量化客戶回饋、改善運營流程、增強預測模型準確性、… 等,更多資訊請參考官方白皮書

接著在 SAS Viya 分析平台中的 SAS Visual Text Analytics (VTA) 產品將能夠透過自然語言處理找出重要的資訊,並且整合機器學習演算法和語言規則的方法,加強文字分析的結果。若我們透過 SAS Visual Text Analytics (VTA) 產品進行文字分析時,則主要有四個階段,分別為:

  1. 文字資料準備:主要透過自然語言處理技術將文字資料自動分為預先定義的概念,像是日期、時間、測量、金錢、組織、百分比、人員、位置… 等。

  2. 文字資料剖析:主要透過自然語言處理技術將文字資料自動分為段落、句子、詞語、…等有意義的元素。

  3. 文字主題指派:主要透過特徵擷取技術將文字資料自動根據相關術語指派為相關主題。

  4. 文字分類評估:主要透過文字建模技術將文字資料自動依主題進行文字分類為相關類別。

此外透過 SAS Visual Text Analytics (VTA) 產品所提供的視覺化網站操作界面將能夠以人工的方式自訂類別,以利企業組織發現文字資料中趨勢和模式,同時 SAS Viya 平台支持整個分析生命週期,從資料準備到探索分析,再將模型投入正式以實現價值,透過協同合作的分析平台中建立,管理和共享內容,以及基於開放式的架構,企業組織中的使用者將能夠選擇使用開發源始碼 Python 和 R 進行整合應用,更多資訊請參考官方網站

再來我們透過 SAS Model Studio 工具建立文字分析專案,預設會產生「資料節點」->「概念節點」->「文字剖析節點」->「情緒節點」->「主題節點」->「類別節點」的管線,然而一開始必須先指定資料中一個資料欄位為文字角色,再切換至管線頁籤執行管線,當管線成功執行之後,我們將能在類別節點上按右鍵選擇「結果」來查看「類別」節點的結果,結果主要包括「摘要」頁籤和「輸出資料」頁籤,在摘要頁籤中主要顯示的元件數取決於是否存在自動產生的類別,如果在管線執行期間沒有建立類別,則僅顯示「類別評分程式碼」,此時我們需要將主題節點的特定主題增加為類別之後,再重新執行管理,當建立類別之後,將會顯示「對自動產生類別的診斷計數」和「對自動產生類別的診斷度量」圖表,其中「對自動產生類別的診斷計數」圖表主要會按照類別顯示真陽性,偽陰性和偽陽性的文件數量,「對自動產生類別的診斷度量」圖表主要會按照類別顯示 F 量值、召回和精準度,至於計數和度量的定義,請參考下表。

類型

名稱

說明

計數

真陽性 (True Positives,TP)

主要為我們想要檢索所請求的資訊。

計數

偽陰性 (False Positives,FP)

主要為我們期望避免檢索與請求無關的資訊。

計數

偽陽性 (False Negatives,FN)

主要為我們期望避免遺漏與請求相關的資訊。

計數

真陰性 (True Negatives,TN)

主要為我們不想要檢索不相關的資訊。

度量

誤分類率 (Misclassification)

主要為錯誤分類的分數,公式為 (FP + FN) / (TP + TN + FP + FN)。

度量

精度度 (Precision)

主要為檢索到的相關文檔的分數,公式為 TP / (TP + FP)。

度量

召回 (Recall)

主要為檢索到的相關文件的分數,公式為 TP / (TP + FN)。

度量

F 量值 (F-Measure)

主要為精度和召回的調和平均數,公式為 (2 × Precision × Recall) / (Precision + Recall)。

最後 SAS Visual Text Analytics (VTA) 產品除了有提供自然語言處理的功能之外,更有提供專有的規則編寫語法,稱為 LITI,全名為 Language Interpretation for Textual Information,以利幫助我們從非結構化文字資料中提取所需的資訊,這種組合主要包括規則建立工具和自動規則產生等支援功能,並且應用了統計機器學習所提供的功能,同時基於規則的方法,以提高提取的透明度。因此我們主要將 LITI 語法用於撰寫概念規則,然而有許多不同類型的規則可用於提取概念,並且我們能夠在每個自訂概念中指定多個規則,至於有哪些常見的規則類型,請參考下表。

規則類型

描述和基本語法

CLASSIFIER

主要識別文本中匹配的單個術語或字串,基本語法為 CLASSIFIER:string<,information>。

CONCEPT

主要參考其它概念來識別相關資訊,基本語法為 CONCEPT:argument-1。

C_CONCEPT

主要返回僅在指定上下文中發生的匹配資訊,基本語法為 C_CONCEPT:_c{argument}。

CONCEPT_RULE

主要使用布林運算元來確定匹配項目,基本語法為 CONCEPT_RULE:(… 。

NO_BREAK

主要透過確保僅在找到整個字符串時發生匹配來防止部分匹配,基本語法為 NO_BREAK:_c{argument}。

REGEX

主要透過正規表達式來識別文本中匹配的系列文字類型的資訊模式,基本語法為 REGEX:regular-expression。

REMOVE_ITEM

主要當一個單詞是多個概念的唯一識別時確保正確匹配,基本語法為 REMOVE_ITEM:(ALIGNED, “_c{concept name}”,<”argument”>)。

當然我們除了能夠新增自訂概念的規則,更能夠新增類別的規則,然而類別規則僅解析為「True」或「False」布林值,當為「True」時的結果是匹配,反之當為「False」時的結果是不匹配。類別規則比 LITI 規則更易於編寫,至於有哪些常見用於撰寫類別規則的布林運算子類型,請參考下表。

運算子類型

說明

AND

如果文字資料中出現所有參數,則匹配。

OR

如果文檔中至少出現一個參數,則匹配。

NOT

如果文字資料中沒有出現參數,則匹配。

ORD

如果所有參數都按照規則中指定的順序發生,則匹配。

SENT

如果所有參數以任何順序出現在同一個句子中,則匹配。

PAR

如果所有參數都出現在單個段落中,則匹配。

DIST_n

如果所有參數都出現在彼此的 n 個 Token 內,而不管它們的順序如何,則匹配。

此外更多有關自訂概念規則和類別規則的最佳實務,建議請參考官方出版的「SAS Text Analytics for Business Applications」書籍。

總結我們透過 SAS Visual Text Analytics (VTA) 產品以簡單手動和複雜自動的方式針對文字資料進行分析,以及針對文字資料自動識別概念、剖析文字、提取主題和匹配類別。

開始使用

  • 輸入過濾日期區間,像是從【1/1/2019】至【1/1/2019】,點選【EXPORT RESULTS】。

  • 點選【CSV】,點選【Filtered dataset (xxx complaints)】,按下【Start Export】。

  • 開始下載 CSV 檔案。

  • 確認 CSV 檔案。

  • 登入至 SAS Viya 分析平台。

  • 在畫面左上方點選【顯示應用程式功能表】鈕。

  • 選取【管理資料】。

  • 選取【匯入】頁籤,點選【本機檔案】。

  • 選取 CSV 檔案,按下【開啟】鈕。

  • 按下【選取目的地】鈕。

  • 選取【CASUSER (xxx)】,點選【選取】。

  • 修改【目標表格名稱】為【CFPB】,點選【取代檔案】。

  • 修改【檔案規格】中的【來源編碼】為【latin1】,按下【匯入項目】鈕。

  • CSV 檔案上傳成功。

  • 選取【建置模型】。

  • 按下【新增專案】。

  • 輸入【名稱】為【CFPB】。

  • 按下【瀏覽】。

  • 在【篩選框】輸入【CFPB】關鍵字,點選【CFPB】資料,按下【確定】鈕。

  • 修改【專案語言】為【英文】,按下【儲存】鈕。

  • 勾選【Consumer complaint narrative】變數名稱。

  • 選取【角色】為【文字】。

  • 選取【管線】頁籤。

  • 按下【執行管線】鈕。

  • 確認管線正常執行。

  • 選取【概念】節點,按下右鍵點選【結果】。

  • 按下【關閉】。

  • 選取【概念】,勾選【包含預先定義的概念】和【允許自動概念規則產生】。

  • 選取【概念】節點,按下右鍵點選【執行】。

  • 選取【概念】節點,按下右鍵點選【結果】。

  • 查看【概念】的結果,按下【關閉】鈕。

  • 選取【概念】節點,按下右鍵點選【開啟】。

  • 選取【預先定義的概念】,目前總共有 9 個。

  • 按下【新增概念】鈕。

  • 輸入【名稱】為【INTEREST_RATE】,按下【確定】。

  • 輸入【規則】,按下【驗證規則】鈕。

CONCEPT_RULE:(SENT,(DIST_6, "_c{nlpPercent}",(OR,"rate","apr","interest","introductory")))
  • 按下【執行節點】鈕。

  • 選取【相符】,查看相符的文字資料,按下【關閉】鈕。

  • 選取【文字剖析】節點,勾選【啟用拼字錯誤偵測】。

  • 選取【文字剖析】節點,按下右鍵點選【執行】。

  • 選取【文字剖析】節點,按下右鍵點選【結果】。

  • 查看【文字部析】的結果,按下【關閉】鈕。

  • 選取【文字剖析】節點,按下右鍵點選【開啟】。

  • 查看【文字剖析 - 管理詞語】的結果。

  • 在【保留的詞語】的【篩選框】中輸入【loan】。

  • 勾選【mortgage loan】詞語。

  • 按下【顯示相似性評分】鈕。

  • 查看與詞語【mortgage loan】相似的詞語。

  • 按下【顯示詞語對應】鈕。

  • 查看與詞語【mortgage loan】對應的關聯圖,按下【關閉】鈕。

  • 選取【相符】頁籤。

  • 按下【文件檢視】鈕,按下【關閉】鈕。

  • 選取【情緒】節點,按下【刪除】。

  • 按下【刪除】鈕。

  • 選取【主題】節點,點選【執行】。

  • 選取【主題】節點,點選【結果】。

  • 查看【主題】結果,按下【關閉】鈕。

  • 選取【主題】節點,按下右鍵點選【開啟】。

  • 查看【主題】資訊。

  • 在【詞語】的【篩選框】中輸入【mortgage loan】關鍵字。

  • 勾選【mortgage loan】,按下【從詞語建立主題】鈕。

  • 按下【執行節點】鈕。

  • 選取【相符】頁籤,查看相符【mortgage loan】主題的文字資料。

  • 按下【將主題增加為規則】鈕,按下【關閉】。

  • 選取【類別】節點,按下右鍵點選【執行】。

  • 選取【類別】節點,按下右鍵點選【結果】。

  • 查看【類別】結果,按下【關閉】鈕。