語料,即語言材料。語料是語言學研究的內容。語料是構成語料庫的基本單元。因此,人們簡單地用文本做爲替代,並把文本中的上下文關係做爲現實世界中語言的上下文關係的替代品。咱們把一個文本集合稱爲語料庫(Corpus),當有幾個這樣的文本集合的時候,咱們稱之爲語料庫集合(Corpora)。(定義來源:百度百科)按語料來源,咱們將語料分爲如下兩種:正則表達式
1.已有語料算法
不少業務部門、公司等組織隨着業務發展都會積累有大量的紙質或者電子文本資料。那麼,對於這些資料,在容許的條件下咱們稍加整合,把紙質的文本所有電子化就能夠做爲咱們的語料庫。機器學習
2.網上下載、抓取語料學習
若是如今我的手裏沒有數據怎麼辦呢?這個時候,咱們能夠選擇獲取國內外標準開放數據集,好比國內的中文漢語有搜狗語料、人民日報語料。國外的由於大都是英文或者外文,這裏暫時用不到。也能夠選擇經過爬蟲本身去抓取一些數據,而後來進行後續內容。ip
這裏重點介紹一下語料的預處理,在一個完整的中文天然語言處理工程應用中,語料預處理大概會佔到整個50%-70%的工做量,因此開發人員大部分時間就在進行語料預處理。下面經過數據洗清、分詞、詞性標註、去停用詞四個大的方面來完成語料的預處理工做。開發
1.語料清洗字符串
數據清洗,顧名思義就是在語料中找到咱們感興趣的東西,把不感興趣的、視爲噪音的內容清洗刪除,包括對於原始文本提取標題、摘要、正文等信息,對於爬取的網頁內容,去除廣告、標籤、HTML、JS 等代碼和註釋等。常見的數據清洗方式有:人工去重、對齊、刪除和標註等,或者規則提取內容、正則表達式匹配、根據詞性和命名實體提取、編寫腳本或者代碼批處理等。深度學習
2.分詞數學
中文語料數據爲一批短文本或者長文本,好比:句子,文章摘要,段落或者整篇文章組成的一個集合。通常句子、段落之間的字、詞語是連續的,有必定含義。而進行文本挖掘分析時,咱們但願文本處理的最小單位粒度是詞或者詞語,因此這個時候就須要分詞來將文本所有進行分詞。數據挖掘
常見的分詞算法有:基於字符串匹配的分詞方法、基於理解的分詞方法、基於統計的分詞方法和基於規則的分詞方法,每種方法下面對應許多具體的算法。
當前中文分詞算法的主要難點有歧義識別和新詞識別,好比:「羽毛球拍賣完了」,這個能夠切分紅「羽毛 球拍 賣 完 了」,也可切分紅「羽毛球 拍賣 完 了」,若是不依賴上下文其餘的句子,恐怕很難知道如何去理解。
3.詞性標註
詞性標註,就是給每一個詞或者詞語打詞類標籤,如形容詞、動詞、名詞等。這樣作可讓文本在後面的處理中融入更多有用的語言信息。詞性標註是一個經典的序列標註問題,不過對於有些中文天然語言處理來講,詞性標註不是非必需的。好比,常見的文本分類就不用關心詞性問題,可是相似情感分析、知識推理倒是須要的,下圖是常見的中文詞性整理。
常見的詞性標註方法能夠分爲基於規則和基於統計的方法。其中基於統計的方法,如基於最大熵的詞性標註、基於統計最大機率輸出詞性和基於 HMM 的詞性標註。
4.去停用詞
停用詞通常指對文本特徵沒有任何貢獻做用的字詞,好比標點符號、語氣、人稱等一些詞。因此在通常性的文本處理中,分詞以後,接下來一步就是去停用詞。可是對於中文來講,去停用詞操做不是一成不變的,停用詞詞典是根據具體場景來決定的,好比在情感分析中,語氣詞、感嘆號是應該保留的,由於他們對錶示語氣程度、感情色彩有必定的貢獻和意義。
作完語料預處理以後,接下來須要考慮如何把分詞以後的字和詞語表示成計算機可以計算的類型。顯然,若是要計算咱們至少須要把中文分詞的字符串轉換成數字,確切的說應該是數學中的向量。有兩種經常使用的表示模型分別是詞袋模型和詞向量。
詞袋模型(Bag of Word, BOW),即不考慮詞語本來在句子中的順序,直接將每個詞語或者符號統一放置在一個集合(如 list),而後按照計數的方式對出現的次數進行統計。統計詞頻這只是最基本的方式,TF-IDF 是詞袋模型的一個經典用法。
詞向量是將字、詞語轉換成向量矩陣的計算模型。目前爲止最經常使用的詞表示方法是 One-hot,這種方法把每一個詞表示爲一個很長的向量。這個向量的維度是詞表大小,其中絕大多數元素爲 0,只有一個維度的值爲 1,這個維度就表明了當前的詞。還有 Google 團隊的 Word2Vec,其主要包含兩個模型:跳字模型(Skip-Gram)和連續詞袋模型(Continuous Bag of Words,簡稱 CBOW),以及兩種高效訓練的方法:負採樣(Negative Sampling)和層序 Softmax(Hierarchical Softmax)。值得一提的是,Word2Vec 詞向量能夠較好地表達不一樣詞之間的類似和類比關係。除此以外,還有一些詞向量的表示方式,如 Doc2Vec、WordRank 和 FastText 等。
同數據挖掘同樣,在文本挖掘相關問題中,特徵工程也是必不可少的。在一個實際問題中,構造好的特徵向量,是要選擇合適的、表達能力強的特徵。文本特徵通常都是詞語,具備語義信息,使用特徵選擇可以找出一個特徵子集,其仍然能夠保留語義信息;但經過特徵提取找到的特徵子空間,將會丟失部分語義信息。因此特徵選擇是一個頗有挑戰的過程,更多的依賴於經驗和專業知識,而且有不少現成的算法來進行特徵的選擇。目前,常見的特徵選擇方法主要有 DF、 MI、 IG、 CHI、WLLR、WFO 六種。
在特徵向量選擇好以後,接下來要作的事情固然就是訓練模型,對於不一樣的應用需求,咱們使用不一樣的模型,傳統的有監督和無監督等機器學習模型, 如 KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等模型;深度學習模型好比 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。這些模型在後續的分類、聚類、神經序列、情感分析等示例中都會用到,這裏再也不贅述。