文本數(shù)據(jù)分析(一):基本框架
在文本數(shù)據(jù)分析基本框架中,我們涉及到了六個(gè)步驟:
數(shù)據(jù)收集
數(shù)據(jù)預(yù)處理
數(shù)據(jù)挖掘和可視化
模型構(gòu)建
模型評(píng)估
雖然框架需要迭代,但是我們先將其看作是一個(gè)線性的過(guò)程:

修正過(guò)的文本數(shù)據(jù)處理框架(依然很簡(jiǎn)單……)
很顯然,文本數(shù)據(jù)預(yù)處理位于框架的第二步,這一步所包含的詳細(xì)步驟有以下兩個(gè):
在原始文本語(yǔ)料上進(jìn)行預(yù)處理,為文本挖掘或NLP任務(wù)做準(zhǔn)備
數(shù)據(jù)預(yù)處理分為好幾步,其中有些步驟可能適用于給定的任務(wù),也可能不適用。但通常都是標(biāo)記化、歸一化和替代的其中一種(tokenization, normalization, substitution)。
通常,我們會(huì)選取一段預(yù)先準(zhǔn)備好的文本,對(duì)其進(jìn)行基本的分析和變換,遺留下更有用的文本數(shù)據(jù),方便之后更深入、更有意義的分析任務(wù)。接下來(lái)將是文本挖掘或自然語(yǔ)言處理工作的核心工作。
所以再次重復(fù)以便,文本預(yù)處理的三個(gè)主要組成部分:
標(biāo)記化(tokenization)
歸一化(normalization)
替換(substitution)
在下面介紹預(yù)處理方法的過(guò)程中,我們需要時(shí)刻牢記這三個(gè)概念。
文本預(yù)處理框架
接下來(lái),我們將介紹這個(gè)框架的概念,而不涉及工具。在下一篇文章中我們會(huì)降到這些步驟的安裝過(guò)程,看看它們是如何在Python中實(shí)現(xiàn)的。

文本數(shù)據(jù)預(yù)處理框架
1.標(biāo)記化(Tokenization)
標(biāo)記化是將文本中的長(zhǎng)字符串分割成小的片段或者tokens的過(guò)程。大段文字可以被分割成句子,句子又可以被分割成單詞等等。只有經(jīng)過(guò)了tokenization,才能對(duì)文本進(jìn)行進(jìn)一步的處理。Tokenization同樣被稱作文本分割或者詞法分析。有時(shí),分割(segmentation)用來(lái)表示大段文字編程小片段的過(guò)程(例如段落或句子)。而tokenization指的是將文本變?yōu)橹挥脝卧~表示的過(guò)程。
這一過(guò)程聽(tīng)起來(lái)很直接,但事實(shí)并非如此。在較大的文本中如何識(shí)別句子?你的第一反應(yīng)一定是“用標(biāo)點(diǎn)符號(hào)”。
的確,下面的句子用傳統(tǒng)的分割方法很容易理解:
The quick brown fox jumps over the lazy dog.
但是下面這句呢:
Dr. Ford did not ask Col. Mustard the name of Mr. Smith’s dog.
還有這個(gè):
“What is all the fuss about?” Asked Mr. Peters.
上面的都只是簡(jiǎn)單的句子,那么單詞又怎樣呢?
This full-time student isn’t living in on-campus housing, and she’s not wanting to visit Hawai’i.
我們應(yīng)該意識(shí)到,許多策略不只是針對(duì)句子分割,而是針對(duì)分割的邊界確定之后應(yīng)該做什么。例如,我們可能會(huì)采用一種分割策略,它能夠(正確地)將單詞“she’s”的tokens之間特定邊界標(biāo)識(shí)識(shí)別為撇號(hào)(單獨(dú)用空格標(biāo)記的策略不足以識(shí)別這一點(diǎn))。但是我們可以從多種策略中選擇,例如是將標(biāo)點(diǎn)符號(hào)保留在單詞的某一部分中或是一同舍棄。其中一種方法似乎是正確的,并且似乎不會(huì)構(gòu)成實(shí)際的問(wèn)題。但是仔細(xì)想想,在英語(yǔ)中我們還需要考慮其他特殊情況。
即,當(dāng)我們將文本分割成句子時(shí),是否應(yīng)該保留句末分隔符?我們是否在意句子在哪里結(jié)束?
2.歸一化(Normalization)
再進(jìn)一步處理之前,文本需要進(jìn)行歸一化。歸一化指的是一系列相關(guān)的任務(wù),能夠?qū)⑺形谋痉旁谕凰絽^(qū)域上:將所有文本轉(zhuǎn)化成同樣的實(shí)例,刪除標(biāo)點(diǎn),將數(shù)字轉(zhuǎn)換成相應(yīng)的文字等等。對(duì)文本進(jìn)行歸一化可以執(zhí)行多種任務(wù),但是對(duì)于我們的框架,歸一化有3個(gè)特殊的步驟:
詞干提取(stemming)
詞形還原(lemmatizatiion)
其他
詞干提取
詞干提取是刪除詞綴的過(guò)程(包括前綴、后綴、中綴、環(huán)綴),從而得到單詞的詞干。

詞形還原
詞形還原與詞干提取相關(guān),不同的是,詞形還原能夠捕捉基于詞根的規(guī)范單詞形式。
例如,對(duì)“better”一詞進(jìn)行詞干提取,可能無(wú)法生成另一個(gè)詞根的詞。然而對(duì)其進(jìn)行詞形還原,就得到:

其他
詞形還原和詞干提取是文本預(yù)處理的主要部分,所以這兩項(xiàng)一定要認(rèn)真對(duì)待。他們不是簡(jiǎn)單地文本操作,而要依賴語(yǔ)法規(guī)則和對(duì)規(guī)則細(xì)致的理解。
然而,還有許多其他步驟可以幫助處理文本,讓它們變成平等的地位,其中有一些只是簡(jiǎn)單地替換或刪除。其他重要的方法包括:
將所有字母變成小寫(xiě)
刪除數(shù)字(或者將數(shù)字換成對(duì)應(yīng)的文字)
刪除標(biāo)點(diǎn)(者通常是tokenization的一部分,但是仍然需要在這一步做)
刪除空白格
刪除默認(rèn)停止詞
停止詞是那些在對(duì)文本進(jìn)一步與處理之前需要過(guò)濾掉的單詞,因?yàn)檫@些單詞并不影響整體意義。例如“the”、“and”、“a”這些詞。下面的例子就表明,即使刪除停止詞,句子的意思也很容易理解。

刪除特定的停止詞
刪除稀疏的特定詞語(yǔ)(盡管不是必須的)
在這里,我們應(yīng)該清除文本預(yù)處理很大程度上依賴于預(yù)先建立的詞典、數(shù)據(jù)庫(kù)和規(guī)則。在我們下一篇用Python進(jìn)行預(yù)處理的文章中,你會(huì)發(fā)現(xiàn)這些支持工具會(huì)非常有用。
3.噪聲清除
噪聲消除延續(xù)了框架的替代任務(wù)。雖然框架的前兩個(gè)主要步驟(標(biāo)記化和歸一化)通常適用于幾乎任何的文本或項(xiàng)目,噪聲去除是預(yù)處理框架中一個(gè)更加具體的部分。
再次記住,我們的處理過(guò)程并不是線性的,其中的過(guò)程必須以特定的順序進(jìn)行,視具體情況而定。因此,噪聲消除可以發(fā)生在上述步驟之前或之后,或者是某個(gè)時(shí)刻。
具體來(lái)說(shuō),假設(shè)我們從網(wǎng)上獲取了一個(gè)語(yǔ)料庫(kù),并且以原始的web格式存儲(chǔ),那么我們可以認(rèn)為文本很大程度上可能有HTML或XML標(biāo)簽。盡管這種對(duì)元數(shù)據(jù)的思考可以作為文本收集或組裝的過(guò)程中的一部分,但它取決于數(shù)據(jù)是如何獲取和收集的。在上一篇文章中,我簡(jiǎn)單講述了如何從維基百科中獲取原始數(shù)據(jù)并搭建語(yǔ)料庫(kù)。由于我們控制了數(shù)據(jù)收集的過(guò)程,因此在這時(shí)處理噪聲也是可行的。
但情況并非總是如此。如果你正在使用的語(yǔ)料庫(kù)很嘈雜,你必須處理它。數(shù)據(jù)分析的效果80%都在于數(shù)據(jù)的準(zhǔn)備。
好消息是,此時(shí)可以用到模式匹配:
刪除文件標(biāo)題、頁(yè)腳
刪除HTML、XML等標(biāo)記和元數(shù)據(jù)
從其他格式(如JSON)或數(shù)據(jù)庫(kù)中提取有價(jià)值的數(shù)據(jù)
如果你害怕正則表達(dá)式,這可能會(huì)成為文本預(yù)處理的一部分
噪聲消除和數(shù)據(jù)收集之間的界限很模糊,因此噪聲消除必須在其他步驟之前進(jìn)行。例如,從JSON結(jié)構(gòu)中獲取的文本顯然要在tokenization之前消除噪音。
-
數(shù)據(jù)收集
+關(guān)注
關(guān)注
0文章
73瀏覽量
11762 -
噪聲消除
+關(guān)注
關(guān)注
0文章
9瀏覽量
8251 -
python
+關(guān)注
關(guān)注
58文章
4882瀏覽量
90291
原文標(biāo)題:文本數(shù)據(jù)分析(二):文本數(shù)據(jù)預(yù)處理的方法
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
labview樹(shù)形控件讀取子文本數(shù)據(jù)(child text)
labview怎么讀取UTF-16 LE 文本數(shù)據(jù)
Python數(shù)據(jù)預(yù)處理方法
C預(yù)處理與C語(yǔ)言基本數(shù)據(jù)類型
LabVIEW操作Excel報(bào)表時(shí)會(huì)丟失所有的非文本數(shù)據(jù)
文本數(shù)據(jù)分析:文本挖掘還是自然語(yǔ)言處理?
機(jī)器學(xué)習(xí)的特征預(yù)處理問(wèn)題討論
textCNN論文與原理——短文本分類
異構(gòu)文本數(shù)據(jù)轉(zhuǎn)換過(guò)程中解析XML文本的方法對(duì)比
文本數(shù)據(jù)預(yù)處理的方法
評(píng)論