【NLP】自然语言处理 完整流程
自然語言處理 完整流程
- 第一步:獲取語料
- 1、已有語料
- 2、網上下載、抓取語料
- 第二步:語料預處理
- 1、語料清洗
- 2、分詞
- 3、詞性標注
- 4、去停用詞
- 三、特征工程
- 1、詞袋模型(BoW)
- 2、詞向量
- 第四步:特征選擇
- 第五步:模型訓練
- 1、模型
- 2、注意事項
- (1)過擬合
- (2)欠擬合
- (3)對于神經網絡,注意梯度消失和梯度爆炸問題。
第一步:獲取語料
語料,即語言材料,是構成語料庫的基本單元。 所以,人們簡單地用文本作為替代,并把文本中的上下文關系作為現實世界中語言的上下文關系的替代品。我們把一個文本集合稱為語料庫(Corpus),當有幾個這樣的文本集合的時候,我們稱之為語料庫集合(Corpora)。(定義來源:百度百科)按語料來源,我們將語料分為以下兩種:
1、已有語料
紙質或者電子文本資料==》電子化==》語料庫。
2、網上下載、抓取語料
國內外標準開放數據集(比如國內的中文漢語有搜狗語料、人民日報語料) 或 通過爬蟲。
第二步:語料預處理
語料預處理大概會占到整個50%-70%的工作量。
基本過程: 數據清洗==》分詞==》詞性標注==》去停詞
1、語料清洗
語料清洗:在語料中找到感興趣的內容,將不感興趣、視為噪音的內容清洗刪除。包括:對于原始文本提取標題、摘要、正文等信息,對于爬蟲,去除廣告、標簽、HTML、JS等代碼和注釋。
常見數據清洗方式:人工去重、對齊、刪除和標注等,或規則提取內容、正則表達式匹配、根據詞性和命名實體提取,編寫腳本或代碼批處理等。
2、分詞
分詞:將短文本和長文本處理為最小單位粒度是詞或詞語的過程。
常見方法:基于字符串匹配的分詞方法、基于理解的分詞方法、基于統計的分詞方法和基于規則的分詞方法,其中每種方法下面對應許多具體的方法。
難點:歧義識別 和 新詞識別。 eg:“羽毛球拍賣完了”,這個可以切分成“羽毛 球拍 賣 完 了”,也可切分成“羽毛球 拍賣 完 了”==》上下文信息
3、詞性標注
詞性標注:對每個詞或詞語打詞類標簽,是一個經典的序列標注問題。eg:形容詞、動詞、名詞等。有助于在后面的處理中融入更多有用的語言信息。
詞性標注不是非必需的。比如,常見的文本分類就不用關心詞性問題,但是類似情感分析、知識推理卻是需要的,下圖是常見的中文詞性整理。
常見方法:基于規則和基于統計的方法。
- 基于統計的方法:基于最大熵的詞性標注、基于統計最大概率輸出詞性和基于 HMM 的詞性標注。
4、去停用詞
停用詞:對文本特征沒有任何貢獻的字詞,eg:標點符號、語氣、人稱等。
注意:根據具體場景決定。eg:在情感分析中,語氣詞、感嘆號是應該保留的,因為他們對表示語氣程度、感情色彩有一定的貢獻和意義。
三、特征工程
如何把分詞之后的字和詞語表示成計算機能夠計算的類型。
思路:中文分詞的字符串 ==》 向量
兩種常用表示模型:
- 詞袋模型(BoW)
- 詞向量
1、詞袋模型(BoW)
詞袋模型(Bag of Word, BOW):不考慮詞語原本在句子中的順序,直接將每一個詞語或者符號統一放置在一個集合(如 list),然后按照計數的方式對出現的次數進行統計。統計詞頻這只是最基本的方式,TF-IDF 是詞袋模型的一個經典用法。
2、詞向量
詞向量:將字、詞語轉換為向量矩陣的計算模型。
常用的詞表示方法:
- One-Hot:把每個詞表示為一個很長的向量。這個向量的維度是詞表大小,其中絕大多數元素為 0,只有一個維度的值為 1,這個維度就代表了當前的詞。eg: [0 0 0 0 0 0 0 0 1 0 0 0 0 ... 0]
- Word2Vec:其主要包含兩個模型:跳字模型(Skip-Gram)和連續詞袋模型(Continuous Bag of Words,簡稱 CBOW),以及兩種高效訓練的方法:負采樣(Negative Sampling)和層序 Softmax(Hierarchical Softmax)。值得一提的是,Word2Vec 詞向量可以較好地表達不同詞之間的相似和類比關系。
- Doc2Vec
- WordRank
- FastText
第四步:特征選擇
關鍵:如何構造好的特征向量?
==》要選擇合適的、表達能力強的特征。
常見的特征選擇方法:DF、 MI、 IG、 CHI、WLLR、WFO 六種。
第五步:模型訓練
1、模型
對于不同的應用需求,我們使用不同的模型
- 傳統的有監督和無監督等機器學習模型: KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等模型;
- 深度學習模型: CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。
2、注意事項
(1)過擬合
過擬合:模型學習能力太強,以至于把噪聲數據的特征也學習到了,導致模型泛化能力下降,在訓練集上表現很好,但是在測試集上表現很差。
常見的解決方法有:
- 增大數據的訓練量;
- 增加正則化項,如 L1 正則和 L2 正則;
- 特征選取不合理,人工篩選特征和使用特征選擇算法;
- 采用 Dropout 方法等。
(2)欠擬合
欠擬合:就是模型不能夠很好地擬合數據,表現在模型過于簡單。
常見的解決方法有:
- 添加其他特征項;
- 增加模型復雜度,比如神經網絡加更多的層、線性模型通過添加多項式使模型泛化能力更強;
- 減少正則化參數,正則化的目的是用來防止過擬合的,但是現在模型出現了欠擬合,則需要減少正則化參數。
(3)對于神經網絡,注意梯度消失和梯度爆炸問題。
總結
以上是生活随笔為你收集整理的【NLP】自然语言处理 完整流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode】617. 合并二叉树
- 下一篇: 【TensorFlow】笔记1:入门笔记