文本分類
一、建立語料庫
文本數據的獲取方法一般有兩種:
- 使用別人做好的語料庫
- 爬蟲去獲取自己的預料數據
二、文本預處理
1、除去數據中非文本部分
一般可以使用正則表達式去進行刪除
2、處理中文編碼問題
由於python2不支持unicode的處理,因此使用python2做中文文本預處理需要遵循的原則是,存儲數據都用utf8,讀出來進行中文相關處理時,使用GBK之類的中文編碼。
3、 中文分詞
4、 去除停用詞
- 載入停用詞
stopwords = pd.read_csv("NLP_project\data\stopwords.txt", index_col=False, quoting=3, sep="\t", names=['stopword'],encoding='utf-8')
stopwords = stopwords['stopword'].values
- 去停用詞
def preprocess_text(content_lines, sentences, category):
for line in content_lines:
try:
segs = jieba.lcut(line)
segs = list(filter(lambda x: len(x) > 1, segs))
segs = list(filter(lambda x: x not in stopwords, segs))
sentences.append((" ".join(segs), category)) #sentence是列表。里面是一個元祖,category是該內容的一個標簽
except BaseException:
print(line)
三、文本表示(特征提取)
一般特征提取可以有三種方法轉換成向量的形式。
1、TF-IDF
2、Word2vec
3、Countvectorizer(詞袋模型)
總結:文本預處理具體步驟
1、分詞:一般使用jieba軟件。
2、生成詞向量詞典:可使用word2vec算法對分詞后的語料庫進行預訓練生成詞向量詞典。其中的字詞是不重復的,word2vec會對文本中的字、詞和標點基本元素的出現頻率進行統計,通過無監督訓練,獲得作為基礎語料基礎構成元素的字詞對應的指定維度的向量表征。
3、數據集划分:在源代碼可將數據集和測試集的划分比例參數設為0.6,60%用來訓練集,40%用來測試集和驗證集。
4、文本數字化:將分詞后語料庫文本中對應的字詞和2中詞向量詞典經行對比,獲其索引,即在詞向量詞典對應的序號,這樣文檔中都以整數索引序號表示從而實現索引形式的數字化,有利於降低文本表示的數據維度。
5、文本向量化:在數據進入模型訓練前需按照詞的索引序號從2中的詞向量詞典取出其對應的向量,這樣整篇文本被轉化為向量的形式。
6、標簽:即文本類型,可用one-hot形式的標簽。