今天開始一起學習中文自然語言處理
中文NLP一般流程
1. 獲取語料
? 語料,是NLP任務所研究的內容
? 通常用一個文本集合作為語料庫(Corpus)
? 來源:
? 已有語料
? ? 積累的文檔
? 下載語料
? ? 搜狗語料、人民日報語料
? 抓取語料
2. 語料預處理
? 1.語料清洗
? 留下有用的,刪掉噪音數據
? 常見的數據清洗方式
? ? 人工去重、對齊、刪除和標注等,或者規則提取內容、正則表達式匹配、根據詞性和命名實體提取、編寫腳本或者代碼批處理等。
? 2.分詞
? 將文本分成詞語
? 常見的分詞算法
? ? 基于字符串匹配的分詞方法、基于理解的分詞方法、基于統計的分詞方法和基于規則的分詞方法
? 3.詞性標注
? 給詞語打詞類標簽,如形容詞、動詞、名詞等
? ? 在情感分析、知識推理等任務中需要
? 常見的詞性標注方法
? ? 基于規則
? ? 基于統計
? ? 如基于最大熵的詞性標注、基于統計最大概率輸出詞性和基于 HMM 的詞性標注。
? 4.去停用詞
? 去掉對文本特征沒有任何貢獻作用的字詞,比如標點符號、語氣、人稱等
3. 特征工程
? 把分詞表示成計算機能夠計算的類型,一般為向量
? 常用的表示模型
? 詞袋模型(Bag of Word, BOW)
? ? TF-IDF
? 詞向量
? ? One-hot
? ? Word2Vec
4. 特征選擇
? 選擇合適的、表達能力強的特征
? 常見的特征選擇方法
? 有 DF、 MI、 IG、 CHI、WLLR、WFO
5. 模型訓練
? 機器學習模型
? KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等
? 深度學習模型
? ? CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN
? 注意過擬合、欠擬合問題
? 過擬合:在訓練集上表現很好,但是在測試集上表現很差。
? ? 常見的解決方法有:
增大數據的訓練量;
增加正則化項,如 L1 正則和 L2 正則;
特征選取不合理,人工篩選特征和使用特征選擇算法;
采用 Dropout 方法等。
?
欠擬合:就是模型不能夠很好地擬合數據
? ? 常見的解決方法有:
添加其他特征項;
增加模型復雜度,比如神經網絡加更多的層、線性模型通過添加多項式使模型泛化能力更強;
減少正則化參數,正則化的目的是用來防止過擬合的,但是現在模型出現了欠擬合,則需要減少正則化參數。
? 注意梯度消失和梯度爆炸問題
6. 評價指標
? 錯誤率、精度、準確率、精確度、召回率、F1 衡量。
? ROC 曲線、AUC 曲線
7. 模型上線應用
? 第一就是線下訓練模型,然后將模型做線上部署
? 第二種就是在線訓練,在線訓練完成之后把模型 pickle 持久化
學習資料:
《中文自然語言處理入門實戰》