李曉娜 蔡 瓊 陳子曦 李俊民
(江漢大學(xué) 湖北·武漢 430056)
隨著現(xiàn)代信息科學(xué)技術(shù)的發(fā)展,網(wǎng)絡(luò)上各類問(wèn)答平臺(tái)越來(lái)越受到網(wǎng)絡(luò)用戶的歡迎,例如知乎平臺(tái)用戶數(shù)量已經(jīng)破億,而技術(shù)社區(qū)問(wèn)答平臺(tái)可以作為網(wǎng)絡(luò)用戶相互分享交流經(jīng)驗(yàn)技術(shù)的社區(qū)平臺(tái),近年來(lái)逐步成為網(wǎng)絡(luò)用戶尋找技術(shù)類疑難解答的首要渠道。然而隨著各分類技術(shù)性問(wèn)題的文本數(shù)據(jù)量不斷攀升,給技術(shù)問(wèn)答平臺(tái)的日常運(yùn)營(yíng)維護(hù)帶來(lái)了挑戰(zhàn)。因?yàn)殡S著新用戶的不斷加入導(dǎo)致用戶數(shù)量的增加,而新用戶提出的疑問(wèn)可能已經(jīng)在本平臺(tái)上被其他用戶提出過(guò)并且已經(jīng)存在解決方案了。但由于技術(shù)性問(wèn)題的復(fù)雜性,不同用戶提出的問(wèn)題的切入角度不同,用問(wèn)題標(biāo)題關(guān)鍵詞匹配的搜索系統(tǒng)無(wú)法高效指引新用戶至現(xiàn)有的問(wèn)題解決方案。于是,新用戶就會(huì)在該平臺(tái)上提出重復(fù)的問(wèn)題,所以這些重復(fù)的問(wèn)題會(huì)進(jìn)一步增加平臺(tái)后臺(tái)工作運(yùn)行的文本量,導(dǎo)致平臺(tái)重復(fù)響應(yīng)相同的問(wèn)題,工浪費(fèi)時(shí)間且工作效率極低。對(duì)于這種現(xiàn)象,通常的做法是及時(shí)找到新增的重復(fù)問(wèn)題并打上相應(yīng)的標(biāo)簽,然后在用戶的搜索結(jié)果中隱藏該類重復(fù)問(wèn)題,保證對(duì)應(yīng)已解決問(wèn)題出現(xiàn)的優(yōu)先級(jí)。所以,本文將會(huì)建立一個(gè)基于自然語(yǔ)言處理技術(shù)的自動(dòng)標(biāo)重系統(tǒng)會(huì)對(duì)該問(wèn)答平臺(tái)的日常維護(hù)起到極大幫助。
2.1.1 去重和去敏
對(duì)附件1:對(duì)于附件1進(jìn)行數(shù)據(jù)清洗,首先檢查附件1中是否含有缺失值和異常值。經(jīng)檢驗(yàn)該表格中不含有缺失值和異常值。然后利用pycharm的中的pandas語(yǔ)句讀取附件1,開始我們先只提取“translated”一列,因?yàn)槲覀円龅氖菍?duì)中文文本的查重,所以我們就直接刪掉英文版問(wèn)題,以便于我們后期的數(shù)據(jù)清洗。利用drop_duplicates()語(yǔ)句對(duì)全體中文問(wèn)題文本進(jìn)行去重,即去掉完全重復(fù)的問(wèn)題,再利用lambda x:re.sub刪去敏感詞匯。
2.1.2 jieba分詞
去重去敏結(jié)束之后,我們利用jieba進(jìn)行分詞切割。Jieba分詞是一種基于前綴詞典及動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)分詞,jieba分詞主要是基于統(tǒng)計(jì)詞典,構(gòu)造一個(gè)前綴詞典,然后利用前綴動(dòng)態(tài)詞典對(duì)輸入句子進(jìn)行切分,得到所有的切分可能,根據(jù)切分位置,構(gòu)造一個(gè)有向無(wú)環(huán)圖,然后通過(guò)動(dòng)態(tài)規(guī)劃算法,計(jì)算得到最大概率路徑,也就得到了最終的切分形式。我們利用jieba分詞將每個(gè)問(wèn)題文本化為一組分詞。
2.1.3 去停用詞和標(biāo)點(diǎn)
我們?yōu)榱耸沟脝?wèn)題重復(fù)率的檢驗(yàn)更加高效成功,所以我們要對(duì)前面分詞得到后的結(jié)果再進(jìn)行去停用詞。我們?cè)趐ycharm中利用‘stopword.txt’導(dǎo)入常見停用詞庫(kù),根據(jù)我們觀察該表格得到的一些額外的停用詞,例如‘≮’,‘≯’,‘≠’,‘≮’,‘?’,‘會(huì)’,‘月’,‘日’,‘–’等等也計(jì)入停用詞庫(kù),然后對(duì)translated整體去停用詞。并且去掉所有標(biāo)點(diǎn)。
2.1.4 整理重復(fù)問(wèn)題組
對(duì)附件2:在excel中先將附件2中“duplicates”一列的數(shù)據(jù)移動(dòng)到“questionID”一列,然后利用excel中的排序功能對(duì)總體數(shù)據(jù)進(jìn)行id升序排列,此時(shí)這一列有很多id重復(fù),然后我們利用excel中的數(shù)據(jù)功能找出重復(fù)值并且高亮重復(fù)值,然后刪掉重復(fù)值,這時(shí)我們發(fā)現(xiàn)有很多重復(fù)值的label既有0也有1,此時(shí)我們優(yōu)先刪掉lebal為0的id,得到新表格。
我們提取詞向量使用的是 CountVectorizer和 Tfidf-Transformer方法。CountVectorizer是通過(guò)fit_transform函數(shù)將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣CountVectorizer是屬于常見的特征數(shù)值計(jì)算類,是一個(gè)文本特征提取方法。對(duì)于每一個(gè)訓(xùn)練文本,它只考慮每種詞匯在該訓(xùn)練文本中出現(xiàn)的頻率。CountVectorizer會(huì)將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣,它通過(guò)fit_transform函數(shù)計(jì)算各個(gè)詞語(yǔ)出現(xiàn)的次數(shù)。
我們對(duì)于語(yǔ)義相似度的計(jì)算選擇的是Google研發(fā)的當(dāng)下最火的BERT。
我們將原附件2中的所有重復(fù)問(wèn)題,即label為1的問(wèn)題組留下,其他label為0的問(wèn)題先刪掉,如果存在“一對(duì)二”或“一對(duì)多”即有兩個(gè)或兩個(gè)以上的問(wèn)題重復(fù),我們將這類數(shù)據(jù)進(jìn)行拆分,全部變成一對(duì)一的問(wèn)題組,方便我們模型的建立和使用。
我們對(duì)模型進(jìn)行測(cè)試:
隨機(jī)挑選一個(gè)目標(biāo)問(wèn)題的id:2,輸入在pycharm程序代碼中,點(diǎn)擊運(yùn)行,結(jié)果顯示,id為2的問(wèn)題找出的重復(fù)問(wèn)題的top 10。經(jīng)我們?nèi)斯づ卸?,其中top K列表結(jié)果中正確檢測(cè)到的重復(fù)問(wèn)題編號(hào)數(shù)量為7個(gè),該樣本實(shí)際擁有的重復(fù)問(wèn)題數(shù)量為10個(gè),所以R=0.7。
決策樹的優(yōu)點(diǎn):決策樹易于理解和實(shí)現(xiàn),人們?cè)谠趯W(xué)習(xí)過(guò)程中不需要使用者了解很多的背景知識(shí),這同時(shí)是它的能夠直接體現(xiàn)數(shù)據(jù)的特點(diǎn),只要通過(guò)解釋后都有能力去理解決策樹所表達(dá)的意義。
決策樹的缺點(diǎn):(1)對(duì)連續(xù)性的字段比較難預(yù)測(cè);(2)對(duì)有時(shí)間順序的數(shù)據(jù),需要很多預(yù)處理的工作;(3)當(dāng)類別太多時(shí),錯(cuò)誤可能就會(huì)增加得比較快;(4)一般的算法分類的時(shí)候,只是根據(jù)一個(gè)字段來(lái)分類。
BERT的優(yōu)點(diǎn):BERT是截至2018年10月的最新state oftheart模型,通過(guò)預(yù)訓(xùn)練和精調(diào)橫掃了11項(xiàng)NLP任務(wù),這首先就是最大的優(yōu)點(diǎn)了。而且它還用的是Transformer,也就是相對(duì)rnn更加高效、能捕捉更長(zhǎng)距離的依賴。對(duì)比起之前的預(yù)訓(xùn)練模型,它捕捉到的是真正意義上的bidirectional context信息。
BERT的缺點(diǎn):BERT在第一個(gè)預(yù)訓(xùn)練階段,假設(shè)句子中多個(gè)單詞被Mask掉,這些被Mask掉的單詞之間沒有任何關(guān)系,是條件獨(dú)立的,然而有時(shí)候這些單詞之間是有關(guān)系的,比如“NewYorkisacity”,假設(shè)我們Mask住“New”和“York”兩個(gè)詞,那么給定“is a city”的條件下“New”和“York”并不獨(dú)立,因?yàn)椤癗ew York”是一個(gè)實(shí)體,看到“New”則后面出現(xiàn)“York”的概率要比看到“Old”后面出現(xiàn)“York”概率要大得多。
BERT模型的推廣:本文解決技術(shù)平臺(tái)對(duì)重復(fù)問(wèn)題的識(shí)別使用的是一種稱之為BERT的新語(yǔ)言表征模型,意為來(lái)自變換器的雙向編碼器表征量(BidirectionalEncoder Representations from Transformers)。不同于最近的語(yǔ)言表征模型(Peters等,2018;Radford等,2018),BERT旨在基于所有層的左、右語(yǔ)境來(lái)預(yù)訓(xùn)練深度雙向表征。因此,預(yù)訓(xùn)練的BERT表征可以僅用一個(gè)額外的輸出層進(jìn)行微調(diào),進(jìn)而為很多任務(wù)(如問(wèn)答和語(yǔ)言推理)創(chuàng)建當(dāng)前最優(yōu)模型,無(wú)需對(duì)任務(wù)特定架構(gòu)做出大量修改。
決策樹模型的推廣:企業(yè)管理實(shí)踐,企業(yè)投資決策,由于決策樹很好的分析能力,在用戶分群、用戶流失等領(lǐng)域應(yīng)用較多。