文本數(shù)據(jù)分析(一):基本框架
在文本數(shù)據(jù)分析基本框架中,我們涉及到了六個步驟:
數(shù)據(jù)收集
數(shù)據(jù)預(yù)處理
數(shù)據(jù)挖掘和可視化
模型構(gòu)建
模型評估
雖然框架需要迭代,但是我們先將其看作是一個線性的過程:
修正過的文本數(shù)據(jù)處理框架(依然很簡單……)
很顯然,文本數(shù)據(jù)預(yù)處理位于框架的第二步,這一步所包含的詳細步驟有以下兩個:
在原始文本語料上進行預(yù)處理,為文本挖掘或NLP任務(wù)做準(zhǔn)備
數(shù)據(jù)預(yù)處理分為好幾步,其中有些步驟可能適用于給定的任務(wù),也可能不適用。但通常都是標(biāo)記化、歸一化和替代的其中一種(tokenization, normalization, substitution)。
通常,我們會選取一段預(yù)先準(zhǔn)備好的文本,對其進行基本的分析和變換,遺留下更有用的文本數(shù)據(jù),方便之后更深入、更有意義的分析任務(wù)。接下來將是文本挖掘或自然語言處理工作的核心工作。
所以再次重復(fù)以便,文本預(yù)處理的三個主要組成部分:
標(biāo)記化(tokenization)
歸一化(normalization)
替換(substitution)
在下面介紹預(yù)處理方法的過程中,我們需要時刻牢記這三個概念。
文本預(yù)處理框架
接下來,我們將介紹這個框架的概念,而不涉及工具。在下一篇文章中我們會降到這些步驟的安裝過程,看看它們是如何在Python中實現(xiàn)的。
文本數(shù)據(jù)預(yù)處理框架
1.標(biāo)記化(Tokenization)
標(biāo)記化是將文本中的長字符串分割成小的片段或者tokens的過程。大段文字可以被分割成句子,句子又可以被分割成單詞等等。只有經(jīng)過了tokenization,才能對文本進行進一步的處理。Tokenization同樣被稱作文本分割或者詞法分析。有時,分割(segmentation)用來表示大段文字編程小片段的過程(例如段落或句子)。而tokenization指的是將文本變?yōu)橹挥脝卧~表示的過程。
這一過程聽起來很直接,但事實并非如此。在較大的文本中如何識別句子?你的第一反應(yīng)一定是“用標(biā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.
還有這個:
“What is all the fuss about?” Asked Mr. Peters.
上面的都只是簡單的句子,那么單詞又怎樣呢?
This full-time student isn’t living in on-campus housing, and she’s not wanting to visit Hawai’i.
我們應(yīng)該意識到,許多策略不只是針對句子分割,而是針對分割的邊界確定之后應(yīng)該做什么。例如,我們可能會采用一種分割策略,它能夠(正確地)將單詞“she’s”的tokens之間特定邊界標(biāo)識識別為撇號(單獨用空格標(biāo)記的策略不足以識別這一點)。但是我們可以從多種策略中選擇,例如是將標(biāo)點符號保留在單詞的某一部分中或是一同舍棄。其中一種方法似乎是正確的,并且似乎不會構(gòu)成實際的問題。但是仔細想想,在英語中我們還需要考慮其他特殊情況。
即,當(dāng)我們將文本分割成句子時,是否應(yīng)該保留句末分隔符?我們是否在意句子在哪里結(jié)束?
2.歸一化(Normalization)
再進一步處理之前,文本需要進行歸一化。歸一化指的是一系列相關(guān)的任務(wù),能夠?qū)⑺形谋痉旁谕凰絽^(qū)域上:將所有文本轉(zhuǎn)化成同樣的實例,刪除標(biāo)點,將數(shù)字轉(zhuǎn)換成相應(yīng)的文字等等。對文本進行歸一化可以執(zhí)行多種任務(wù),但是對于我們的框架,歸一化有3個特殊的步驟:
詞干提取(stemming)
詞形還原(lemmatizatiion)
其他
詞干提取
詞干提取是刪除詞綴的過程(包括前綴、后綴、中綴、環(huán)綴),從而得到單詞的詞干。
詞形還原
詞形還原與詞干提取相關(guān),不同的是,詞形還原能夠捕捉基于詞根的規(guī)范單詞形式。
例如,對“better”一詞進行詞干提取,可能無法生成另一個詞根的詞。然而對其進行詞形還原,就得到:
其他
詞形還原和詞干提取是文本預(yù)處理的主要部分,所以這兩項一定要認真對待。他們不是簡單地文本操作,而要依賴語法規(guī)則和對規(guī)則細致的理解。
然而,還有許多其他步驟可以幫助處理文本,讓它們變成平等的地位,其中有一些只是簡單地替換或刪除。其他重要的方法包括:
將所有字母變成小寫
刪除數(shù)字(或者將數(shù)字換成對應(yīng)的文字)
刪除標(biāo)點(者通常是tokenization的一部分,但是仍然需要在這一步做)
刪除空白格
刪除默認停止詞
停止詞是那些在對文本進一步與處理之前需要過濾掉的單詞,因為這些單詞并不影響整體意義。例如“the”、“and”、“a”這些詞。下面的例子就表明,即使刪除停止詞,句子的意思也很容易理解。
刪除特定的停止詞
刪除稀疏的特定詞語(盡管不是必須的)
在這里,我們應(yīng)該清除文本預(yù)處理很大程度上依賴于預(yù)先建立的詞典、數(shù)據(jù)庫和規(guī)則。在我們下一篇用Python進行預(yù)處理的文章中,你會發(fā)現(xiàn)這些支持工具會非常有用。
3.噪聲清除
噪聲消除延續(xù)了框架的替代任務(wù)。雖然框架的前兩個主要步驟(標(biāo)記化和歸一化)通常適用于幾乎任何的文本或項目,噪聲去除是預(yù)處理框架中一個更加具體的部分。
再次記住,我們的處理過程并不是線性的,其中的過程必須以特定的順序進行,視具體情況而定。因此,噪聲消除可以發(fā)生在上述步驟之前或之后,或者是某個時刻。
具體來說,假設(shè)我們從網(wǎng)上獲取了一個語料庫,并且以原始的web格式存儲,那么我們可以認為文本很大程度上可能有HTML或XML標(biāo)簽。盡管這種對元數(shù)據(jù)的思考可以作為文本收集或組裝的過程中的一部分,但它取決于數(shù)據(jù)是如何獲取和收集的。在上一篇文章中,我簡單講述了如何從維基百科中獲取原始數(shù)據(jù)并搭建語料庫。由于我們控制了數(shù)據(jù)收集的過程,因此在這時處理噪聲也是可行的。
但情況并非總是如此。如果你正在使用的語料庫很嘈雜,你必須處理它。數(shù)據(jù)分析的效果80%都在于數(shù)據(jù)的準(zhǔn)備。
好消息是,此時可以用到模式匹配:
刪除文件標(biāo)題、頁腳
刪除HTML、XML等標(biāo)記和元數(shù)據(jù)
從其他格式(如JSON)或數(shù)據(jù)庫中提取有價值的數(shù)據(jù)
如果你害怕正則表達式,這可能會成為文本預(yù)處理的一部分
噪聲消除和數(shù)據(jù)收集之間的界限很模糊,因此噪聲消除必須在其他步驟之前進行。例如,從JSON結(jié)構(gòu)中獲取的文本顯然要在tokenization之前消除噪音。
-
數(shù)據(jù)收集
+關(guān)注
關(guān)注
0文章
73瀏覽量
11401 -
噪聲消除
+關(guān)注
關(guān)注
0文章
9瀏覽量
8161 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86268
原文標(biāo)題:文本數(shù)據(jù)分析(二):文本數(shù)據(jù)預(yù)處理的方法
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
labview樹形控件讀取子文本數(shù)據(jù)(child text)
從一個文本數(shù)據(jù)的文件夾中,怎樣實現(xiàn)數(shù)據(jù)的連續(xù)提取
Python數(shù)據(jù)預(yù)處理方法
C預(yù)處理與C語言基本數(shù)據(jù)類型
LabVIEW操作Excel報表時會丟失所有的非文本數(shù)據(jù)
文本數(shù)據(jù)分析:文本挖掘還是自然語言處理?

機器學(xué)習(xí)的特征預(yù)處理問題討論
textCNN論文與原理——短文本分類

異構(gòu)文本數(shù)據(jù)轉(zhuǎn)換過程中解析XML文本的方法對比

評論