數(shù)據(jù)預(yù)處理以及Doc2Vec過(guò)程
模型訓(xùn)練之前需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,畢竟文本信息很難直接用來(lái)擬合深胳。除了簡(jiǎn)單易懂的One-Hot編碼方式绰疤,業(yè)內(nèi)更常用的還是Doc2Vec方案。Doc2Vec可以對(duì)文本信息進(jìn)行低維稠密的分布式表達(dá)舞终,往往更適合用于分類轻庆、擬合等處理癣猾,本文也將采用Doc2Vec的技術(shù)路線。
一余爆、 數(shù)據(jù)清洗
數(shù)據(jù)來(lái)源是網(wǎng)絡(luò)爬蟲爬取的中文評(píng)論纷宇,在將其向量化之前,首先對(duì)其進(jìn)行清洗蛾方,去除了標(biāo)點(diǎn)符號(hào)等非建設(shè)性字符像捶。
數(shù)月前,一位當(dāng)時(shí)的好友“譴責(zé)”我發(fā)顏表情惡意賣萌的行為桩砰,而如今進(jìn)行數(shù)據(jù)清洗時(shí)才明白顏表情的“污染性”拓春。上圖中正則表達(dá)式里有大量的硬編碼,以用來(lái)過(guò)濾掉令人難以置信的顏表情亚隅,即使這樣硼莽,數(shù)據(jù)中仍然有少量的“非建設(shè)性字符”,可以忽略枢步。
二沉删、 分詞
英文句子中,單詞與單詞之間有空格間隔醉途,往往不需要進(jìn)行分詞矾瑰,取而代之的是“組塊分析”(chunking)。而中文文本的處理則相對(duì)更麻煩隘擎,Doc2Vec中的傳入數(shù)據(jù)需要中文分詞之后的結(jié)果殴穴。
本例中采用結(jié)巴分詞器進(jìn)行分詞,并開啟隱馬爾科夫參數(shù)使其能探索新詞货葬。
分詞之后的結(jié)果用列表存儲(chǔ)采幌。
三、 Doc2Vec
Doc2Vec是數(shù)據(jù)預(yù)處理過(guò)程中最重要的一個(gè)階段震桶,目的是將文本信息進(jìn)行低維稠密的分布式表達(dá)休傍。本文中基于gensim包實(shí)現(xiàn)。
Doc2Vec?或者叫做 paragraph2vec, sentence embeddings蹲姐,是一種非監(jiān)督式算法磨取,可以獲得 sentences/paragraphs/documents 的向量表達(dá),是 word2vec 的拓展柴墩。學(xué)出來(lái)的向量可以通過(guò)計(jì)算距離來(lái)找 sentences/paragraphs/documents 之間的相似性忙厌,可以用于文本聚類,對(duì)于有標(biāo)簽的數(shù)據(jù)江咳,還可以用監(jiān)督學(xué)習(xí)的方法進(jìn)行文本分類逢净,例如經(jīng)典的情感分析問(wèn)題。
其基本原理推薦博文基于gensim的doc2vec實(shí)踐 - CSDN博客。
首先利用爬取的文本訓(xùn)練Doc2Vec:
得到一個(gè)模型:
利用這個(gè)模型再將分好詞的本文向量化:
最終生成向量(部分):