天天看點

科普|文本分析淺析——文檔分類

序言

自動文檔分類是一個很好的例子,說明如何善用機器學習和自然語言處理,讓機器更好地處理人類語言。自動分類目的,是給一個文檔或一段文字指派一個或多個類别,以友善對文檔進行歸類和管理。特别是對于出版社、新聞網站、部落格或其他需要處理大量文字内容的人和機構來說,人工對文檔,并進行分組和分類是極其耗費人力和時間的工作。

大體上講,有兩類機器學習方式:監督學習和非監督學習。監督學習方法是在“以往的觀察”之上建立模型,這種“以往的觀察”被稱為訓練集。在做文檔分類時,預先定義好文檔類别,再人工為訓練資料集中每個文檔打上類别标記。建立了訓練資料集之後,接着是用這個人工标記的資料集訓練一個分類器。其思想是:在訓練完成後,這個分類器将能夠預測任何一個給定文檔的類别。

非監督機器學習方式有所不同,它們不需要訓練資料集。以文檔分類來說,類别是事先未知的。非監督學習方式(如聚合和話題模組化),可以在一批文檔中自動發現相似文檔并進行分組。本文将聚焦監督分類方式的機器學習。

科普|文本分析淺析——文檔分類

1什麼是分類器?

分類器的工作是生成“預測”。簡明地說,當分類器對一個新文檔進行分類時,它預先判定這個文檔屬于某個特定類别;并且,分類器通常為這個文檔指定一個類别“标簽”。分類器或許還會根據使用的分類算法或政策給出一個可信度,表明分類标簽正确性有多高。用一個簡單例子就可以很好地解釋分類器是如何工作的。

2分類器如何工作?

如前所述,分類器用于預測,以預測足球比賽是否會正常進行作為一個簡單的例子,就能說明分類器如何工作。首先,我們要建立一個資料集。為此,我們需要記錄室外溫度并統計過去一年中給定比賽夜是否降雨,用這些記錄建立一個天氣情況資料集。然後,我們會根據比賽是否正常進行來“标記”這個資料集,并建立一個訓練資料集用于此後的預測。

在這種情況下,我們有溫度和降雨兩個“特征”來幫助我們預測比賽是否會舉行。如下表所示,任何比賽夜,我們可以參考表格資料來預測比賽是否會如期進行。在這個簡單的例子中,如果溫度低于零度且正在下雨,那麼比賽很有可能會取消。

科普|文本分析淺析——文檔分類

在上表中,每一列稱為一個“特征”,“比賽”那一列被稱為“類别”或“标簽”,其下面的行都被被稱為“執行個體”。這些執行個體可被了解為資料點,而資料點可視為一個向量,形如<特征1,特征2,…,特征n>。

3文檔分類簡易例證

以此類推,将這種預測方法應用于文檔的分類,其中的單詞将被視為“特征”來預測該文檔的類别。還是使用一個簡單例子來說明。假設,我們的訓練集中有如下三個非常簡短的文檔:

科普|文本分析淺析——文檔分類

首先,我們要抽取訓練集三個文檔中的所有單詞,并且據此建立一個表格(或向量):

類别:,tigers,live,in,the,zoo,green,is,a,color,go,to,new,york,city>

然後,我們會對每一個訓練文檔建立一個向量,如果這個單詞存在于該訓練文檔,則取值為1,若不存在則取值為0,并給該文檔一個适當的标記,如下所示。

科普|文本分析淺析——文檔分類

當對未标記過的新文檔“orange is a color”進行分類時,我們會根據已有的類别向量對新文本的單詞做标記,并為該文檔生成一個單詞向量:

科普|文本分析淺析——文檔分類

如果,接下來将未分類文檔中的向量之前三個文檔類别中的向量作比較,我們會看到未知文檔與類别2中文檔的相似度最高。

未知類别文檔類别與類别1的比較(6個比對項)

< 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 >類别1

< 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0>未知類别

未知類别文檔類别與類别2的比較(14個比對項,最相似!!)

< 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0>類别2

未知類别文檔類别與類别3的比較(7個比對項)

< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 >類别3

是以,機器很有可能将新文檔标記為類别2并配以高可信度。在統計自然語言處理的方法中。這是一個非常簡單常見的例子。

4細看現實世界的文本分類

現實中的分類器由三個部分組成,接下來我們會逐一進行介紹,并對分類器的工作原理稍作解釋。

1. 資料集

如前所示,統計分類方法需要人工先對一批文檔标記上恰當的類别。在很大程度上,資料集的品質是一個統計自然語言處理分類器最重要的部分。

資料集需要足夠大,能夠為每一類别提供數量充足的文檔。舉例來說,你希望在文檔的歸類過程中有500種可能涉及到的類别,假設每個類别有100個文檔,那麼總共則至少需要5萬個文檔。

文檔自動分類對資料集的品質也有很高的要求,高品質的資料集才能明顯區分出不同類别文檔的互相差異,清晰的劃分出不同類别。

2. 預處理

在之前簡單的例子中,當建立文檔向量時,我們賦予每一個詞同等的重要性。我們可以做某種預處理,并根據單詞對于待分類分檔的重要性,來賦予它們不同的權重。其中一種常用的方法是tf-idf(term frequency-inverse document frequency, 詞頻-逆向文檔頻率)。某一個單詞的tf-idf權重,會随着這個詞在一篇文檔中出現的次數而增加,也會根據它在整個文檔集合中出現的頻率而降低。對于經常出現在整個文檔集合中的詞(如“a”,“it”等)來說,這樣做會有效降低這類單詞的綜合權重。[譯者注:如果某個詞在一篇文章中出現的頻率(tf)高,但在其它文章中的tf低,則該詞就具有很好的類别區分能力,适合用來分類。]

3.分類算法及政策

在上面的例子中,我們用來分類分檔的算法非常簡單:通過比較文檔向量中比對項的數量,來看它與哪一個類别最為相似,并以此對文檔進行分類。現實情況中,我們或許會把文檔分在兩個甚至兩個以上的類别中,并且會在給定的類别中為一篇文檔賦予多個标簽。我們的分類系統還可能是多層次的結構,并是以分類器也需要在分類過程中考慮到多層次結構的因素。

舉例來說,使用iptc(international press and telecommunications council,國際新聞電訊評議會)的國際主題新聞編碼來設定标簽,我們會給一個文檔同時貼兩個标簽,如“體育事件-世界杯”或“體育-足球”。其中,“體育”和“體育事件”是根類别,而“足球”和“世界杯”是子類别。

有大量的用于分類的算法,如支援向量機、樸素貝葉斯、決策樹等,它們的所能達到的細節早已超出了本文的範圍。

結論

希望你現在對文本分類的基本原理及其工作流程,有更透徹的了解。作為總結,在監督學習中,模型的建立是基于一個訓練集。此後,分類器在這個手工标記過的訓練資料集上進行訓練,并希望可以預測任何給定文檔的類别。影響預測品質最大的因素就是訓練資料集的品質。

原文釋出時間為:2015-06-08

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号

繼續閱讀