本發(fā)明涉及語義分析領(lǐng)域,更具體地,涉及一種基于詞向量語義分析的海量短文本聚類方法。
背景技術(shù):
傳統(tǒng)的文檔空間向量模型(VSM)中,文檔被表示成由特征詞出現(xiàn)概率組成的多維向量,但還存在不少問題。0-1向量空間模型:將每個詞的出現(xiàn)與否作為其值,過于簡單暴力,忽略了單詞出現(xiàn)的頻率、順序等問題,同時中文的切詞難以規(guī)范也是很大問題。詞袋模型考慮了單詞出現(xiàn)的次數(shù),詞頻逆文檔tfidf模型,同時兼顧了單詞在所有文檔中出現(xiàn)的頻率而計算單詞的“重要度”,但對同義詞都完全無法處理。如“奧巴馬來了北京發(fā)表講話”與“美國總統(tǒng)到了中國首都演講”,傳統(tǒng)的詞向量空間模型將會看成完全不相同的兩句話。傳統(tǒng)的向量空間模型與概率模型構(gòu)建的“文檔——單詞”矩陣,由于單詞表巨大,一般都接近10萬級別,而短文本會真正會出現(xiàn)的單詞極少,因此,會出現(xiàn)向量化后的文本矩陣中出現(xiàn)大量未0的稀疏性問題,和維度太大計算量大的“維度爆炸”的問題。
PLSA等概率模型,在詞與文本引入了“主題”(topic)中間概念,考慮了單詞在所有文本中的分布,一定程度上解決了近義詞的問題,但實現(xiàn)困難,計算復(fù)雜度大,對與幾十到上百字的短文本效果也很差。因此,對于日益增長的海量的短文本數(shù)據(jù)不太實用。
在聚類算法方面,傳統(tǒng)的K-Means算法簡單方便,效果良好,但存在初始值需要聚類的簇數(shù)目K難以確定和計算時需要兩兩比較,復(fù)雜度大兩個缺點。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種基于詞向量語義分析的海量短文本聚類方法,該方法聚類效果好,聚類速度快。
為了達到上述技術(shù)效果,本發(fā)明的技術(shù)方案如下:
一種基于詞向量語義分析的海量短文本聚類方法,包括以下步驟:
S1:收集海量文本數(shù)據(jù),并對每一文本數(shù)據(jù)進行預(yù)處理;
S2:對預(yù)處理后的文本進行word2vec模型訓(xùn)練得到詞向量模型;
S3:將待處理的文本利用得到的詞向量模型處理得到該待處理的文本的向量;
S4:對待處理的文本的向量利用K-Means聚類算法或Dbscan聚類算法進行聚類處理得到聚類結(jié)果。
進一步地,所述步驟S1的具體過程是:
對收集的文本數(shù)據(jù)采用基于知識庫的方法對部分詞語進行消歧,包括常規(guī)的高頻詞、停用詞、標(biāo)點符號、表情符號、簡繁體轉(zhuǎn)換的去除處理。
進一步地,所述步驟S3的具體過程如下:
將待處理的文本利用得到的詞向量模型處理得到若干個單詞的詞向量,對每一個單詞的詞向量進行tfidf值計算,以計算出的tfidf值作為word2vec處理的權(quán)重,對每一個單詞的詞向量進行word2vec處理并加權(quán)求和得到待處理文本的256維度的向量:
其中,doc表示文本向量,Token表示文本的每個單詞的詞向量,n為文本中單詞個數(shù),m為文本詞向量的具體維度為256,Wk,j為第i個單詞在文檔j中的tfidf值。
進一步地,所述步驟S4的具體過程如下:
1)從n個單詞中數(shù)隨機動態(tài)選取k個詞向量作為初始聚類中心;
2)分別計算未選中的詞向量與這k個聚類中心的距離,根據(jù)最小距離對這些詞向量進行劃分得到新的聚類;
3)計算第2)中得到的聚類的每一個詞向量的均值作為聚類中心;
4)迭代計算標(biāo)準(zhǔn)測度函數(shù),如當(dāng)?shù)螖?shù)達到一定閾值,或者標(biāo)準(zhǔn)測度函數(shù)收斂K值不再變化時,算法終止,否則跳轉(zhuǎn)至步驟2)。
進一步地,所述將待處理的文本利用得到的詞向量模型處理得到若干個單詞的詞向量的過程是:對預(yù)處理后的文本作為word2vec模型的輸入,詞向量維度設(shè)為256,上下窗口為5,利用連續(xù)空間詞向量技術(shù)CBOW方法進行訓(xùn)練得到文本的單詞的詞向量。
與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:
本發(fā)明針對海量短文本提供一種基于詞向量語義分析的聚類方法。首先利用使用海量文本數(shù)據(jù)進行word2vec的訓(xùn)練,將文本單詞映射到256維的向量空間,然后對需要聚類的文本進行單詞tfidf值的計算作為權(quán)重,將預(yù)處理后的文本進行加權(quán)求和,將短文本的向量化,相對于傳統(tǒng)的tfidf模型,加入了word2vec訓(xùn)練好的詞向量語義信息。得到更高質(zhì)量的“文本向量”,從而提高聚類效果,采用大數(shù)據(jù)實時流處理框架Spark進行K-means或Dbscan算法進行聚類,加速得到聚類結(jié)果。
附圖說明
圖1為本發(fā)明方法流程圖;
圖2為本發(fā)明方法在實施例1中的問答系統(tǒng)中的應(yīng)用流程圖。
具體實施方式
附圖僅用于示例性說明,不能理解為對本專利的限制;
為了更好說明本實施例,附圖某些部件會有省略、放大或縮小,并不代表實際產(chǎn)品的尺寸;
對于本領(lǐng)域技術(shù)人員來說,附圖中某些公知結(jié)構(gòu)及其說明可能省略是可以理解的。
下面結(jié)合附圖和實施例對本發(fā)明的技術(shù)方案做進一步的說明。
實施例1
如圖1所示,一種基于詞向量語義分析的海量短文本聚類方法,包括以下步驟:
S1:收集海量文本數(shù)據(jù),并對每一文本數(shù)據(jù)進行預(yù)處理;
S2:對預(yù)處理后的文本進行word2vec模型訓(xùn)練得到詞向量模型;
S3:將待處理的文本利用得到的詞向量模型處理得到該待處理的文本的向量;
S4:對待處理的文本的向量利用K-Means聚類算法或Dbscan聚類算法進行聚類處理得到聚類結(jié)果。
步驟S1的具體過程是:
對收集的文本數(shù)據(jù)采用基于知識庫的方法對部分詞語進行消歧,包括常規(guī)的高頻詞、停用詞、標(biāo)點符號、表情符號、簡繁體轉(zhuǎn)換的去除處理。
步驟S3的具體過程如下:
將待處理的文本利用得到的詞向量模型處理得到若干個單詞的詞向量,對每一個單詞的詞向量進行tfidf值計算,以計算出的tfidf值作為word2vec處理的權(quán)重,對每一個單詞的詞向量進行word2vec處理并加權(quán)求和得到待處理文本的256維度的向量:
其中,doc表示文本向量,Token表示文本的每個單詞的詞向量,n為文本中單詞個數(shù),m為文本詞向量的具體維度為256,Wk,j為第i個單詞在文檔j中的tfidf值。
步驟S4的具體過程如下:
1)從n個單詞中數(shù)隨機動態(tài)選取k個詞向量作為初始聚類中心;
2)分別計算未選中的詞向量與這k個聚類中心的距離,根據(jù)最小距離對這些詞向量進行劃分得到新的聚類;
3)計算第2)中得到的聚類的每一個詞向量的均值作為聚類中心;
4)迭代計算標(biāo)準(zhǔn)測度函數(shù),如當(dāng)?shù)螖?shù)達到一定閾值,或者標(biāo)準(zhǔn)測度函數(shù)收斂K值不再變化時,算法終止,否則跳轉(zhuǎn)至步驟2)。
將待處理的文本利用得到的詞向量模型處理得到若干個單詞的詞向量的過程是:對預(yù)處理后的文本作為word2vec模型的輸入,詞向量維度設(shè)為256,上下窗口為5,利用連續(xù)空間詞向量技術(shù)CBOW方法進行訓(xùn)練得到文本的單詞的詞向量。
本實施例中以某銀行的用戶客戶問答日志記錄作為例子,來說明本發(fā)明的方法的過程:
(1)收集數(shù)據(jù)集
通過將用戶輸入問題進行聚類分析,從而協(xié)助構(gòu)建智能客服FAQ常用問答庫。實際應(yīng)用中可使用任何文本。
(2)文本預(yù)處理
相對于傳統(tǒng)的詞袋模型,尤其針對用戶查詢語句的短文本,高維性和稀疏性缺點突出,而且不能刻畫詞與詞直接的相似性,可采用基于知識庫的方法對部分詞語進行消歧,如中文的《知網(wǎng)》,英文的WordNet等。然后,進行常規(guī)的高頻詞、停用詞、標(biāo)點符號、表情符號、簡繁體轉(zhuǎn)換的去除處理。
(3)訓(xùn)練詞向量
為了讓機器“讀懂”文字,本發(fā)明采用了向量空間模型,將每個文檔表示為256維的實數(shù)向量序列。向量的特征項為文檔中的詞語,詞向量的值由word2vec訓(xùn)練而來。Word2vec是Google公司開源的一個用于將詞語進行向量化表示的工具,通過大語料訓(xùn)練得到的詞向量有一定的表示詞匯語法和語義關(guān)系的能力。本發(fā)明采用谷歌Mikolov等人提出的連續(xù)空間詞向量技術(shù)(Continous Bag of Words,簡稱CBOW),通過單詞的上下文預(yù)測該詞的詞向量,滑動窗口設(shè)為5。
(4)文本向量化
將單詞映射成一個向量后,使用TF-IDF(Term Frequency-Inverse Document Frequence,詞頻-逆文檔頻率)算法來計算每個詞在該文本的tfidf值作為權(quán)重,將每個短文本LTP切詞后的文本加權(quán)求和映射為256維的向量:
其中,doc表示文本向量,Token表示文本的每個單詞的詞向量,n為文本中單詞個數(shù),m為文本詞向量的具體維度為256,Wk,j為第i個單詞在文檔j中的tfidf值。
(5)選擇聚類算法進行聚類
K-Means算法實現(xiàn)簡單,效果良好,但最大的問題在于類目數(shù)K的確定。可根據(jù)實際應(yīng)用情況選定K值,或按照基于密度的聚類動態(tài)得到聚類簇數(shù)。本發(fā)明中,針對日志流的海量數(shù)據(jù),使用Spark的機器學(xué)習(xí)庫MLlib進行計算進行加速。K值的確定,一個是人工定義,在具體問題日志聚類中定義了公式(2)根據(jù)文本數(shù)的規(guī)則進行動態(tài)調(diào)整。很多具體的規(guī)則確定需要按實際,可用不同K值多次迭代,研究在不同聚類情況下的數(shù)據(jù)特點,再最終確定。問答系統(tǒng)中,針對噪音異常點較的情況,也采用了Dbscan基于密度的算法進行聚類。
本發(fā)明的關(guān)鍵步驟在于第三步和第四步,下面分別簡述一下第三步詞向量訓(xùn)練的具體步驟。
第(3)步詞向量訓(xùn)練步驟:
(3.1)采用的是gensim的開源優(yōu)化word2vec的python版本接口,利用互聯(lián)網(wǎng)維基百科和財經(jīng)新聞結(jié)合用戶日志記錄數(shù)據(jù)進行詞向量的訓(xùn)練。每個單詞256維,大大降低了計算的復(fù)雜性,同時有效解決了如“麥克風(fēng)”與“話題”,“百度”與”騰訊”之間的語義的近似性。將原始語料(維基百科、財經(jīng)新聞、業(yè)務(wù)客服問答日志約25G)進行清洗規(guī)范化后(10G),利用中科院的LTP分詞工具進行分詞。引入業(yè)務(wù)專有詞典和《知網(wǎng)》同義詞詞典后進行替換翻譯,減少數(shù)據(jù)稀疏性。
(3.2)將處理后的語料作為word2vec模型的輸入,詞向量維度設(shè)為256,上下窗口為5,選取CBOW方法進行訓(xùn)練。
(3.3)得到詞模型太大(近5個G,26萬個詞),為提高效率,按照頻率遞減,剔除高頻常用詞和低頻詞,得到有效的15萬個單詞的向量。
(3.4)將需要聚類的文本同樣預(yù)處理和切詞后,計算出每個單詞的tfidf值,作為后續(xù)word2vec的權(quán)重,將文本加權(quán)求和,得到每個文本固定256維度的向量。
第四步K-Means聚類算法步驟:
(4.1)通過第三步將文本向量化后,使用公式2,從n個短文本中數(shù)隨機動態(tài)選取k個文本向量作為初始聚類中心。
(4.2)根據(jù)每個聚類對象的均值,分別計算其它每個文本向量與這K個聚類中心的距離,根據(jù)最小距離對這些文本進行劃分。
(4.3)重新計算每個聚類的均值作為聚類中心。
(4.4)計算標(biāo)準(zhǔn)測度函數(shù),如當(dāng)?shù)螖?shù)達到一定閾值,或者函數(shù)收斂K值不再變化時,算法終止,否則重新步驟(4.2)。
算法的時間復(fù)雜度上界為O(n*k*t),其中n為文本數(shù),k為聚類簇數(shù),t為迭代次數(shù)。
相同或相似的標(biāo)號對應(yīng)相同或相似的部件;
附圖中描述位置關(guān)系的用于僅用于示例性說明,不能理解為對本專利的限制;
顯然,本發(fā)明的上述實施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護范圍之內(nèi)。