李曉娜 蔡 瓊 陳子曦 李俊民
(江漢大學 湖北·武漢 430056)
隨著現代信息科學技術的發展,網絡上各類問答平臺越來越受到網絡用戶的歡迎,例如知乎平臺用戶數量已經破億,而技術社區問答平臺可以作為網絡用戶相互分享交流經驗技術的社區平臺,近年來逐步成為網絡用戶尋找技術類疑難解答的首要渠道。然而隨著各分類技術性問題的文本數據量不斷攀升,給技術問答平臺的日常運營維護帶來了挑戰。因為隨著新用戶的不斷加入導致用戶數量的增加,而新用戶提出的疑問可能已經在本平臺上被其他用戶提出過并且已經存在解決方案了。但由于技術性問題的復雜性,不同用戶提出的問題的切入角度不同,用問題標題關鍵詞匹配的搜索系統無法高效指引新用戶至現有的問題解決方案。于是,新用戶就會在該平臺上提出重復的問題,所以這些重復的問題會進一步增加平臺后臺工作運行的文本量,導致平臺重復響應相同的問題,工浪費時間且工作效率極低。對于這種現象,通常的做法是及時找到新增的重復問題并打上相應的標簽,然后在用戶的搜索結果中隱藏該類重復問題,保證對應已解決問題出現的優先級。所以,本文將會建立一個基于自然語言處理技術的自動標重系統會對該問答平臺的日常維護起到極大幫助。
2.1.1 去重和去敏
對附件1:對于附件1進行數據清洗,首先檢查附件1中是否含有缺失值和異常值。經檢驗該表格中不含有缺失值和異常值。然后利用pycharm的中的pandas語句讀取附件1,開始我們先只提取“translated”一列,因為我們要做的是對中文文本的查重,所以我們就直接刪掉英文版問題,以便于我們后期的數據清洗。利用drop_duplicates()語句對全體中文問題文本進行去重,即去掉完全重復的問題,再利用lambda x:re.sub刪去敏感詞匯。
2.1.2 jieba分詞
去重去敏結束之后,我們利用jieba進行分詞切割。Jieba分詞是一種基于前綴詞典及動態規劃實現分詞,jieba分詞主要是基于統計詞典,構造一個前綴詞典,然后利用前綴動態詞典對輸入句子進行切分,得到所有的切分可能,根據切分位置,構造一個有向無環圖,然后通過動態規劃算法,計算得到最大概率路徑,也就得到了最終的切分形式。我們利用jieba分詞將每個問題文本化為一組分詞。
2.1.3 去停用詞和標點
我們為了使得問題重復率的檢驗更加高效成功,所以我們要對前面分詞得到后的結果再進行去停用詞。我們在pycharm中利用‘stopword.txt’導入常見停用詞庫,根據我們觀察該表格得到的一些額外的停用詞,例如‘≮’,‘≯’,‘≠’,‘≮’,‘?’,‘會’,‘月’,‘日’,‘–’等等也計入停用詞庫,然后對translated整體去停用詞。并且去掉所有標點。
2.1.4 整理重復問題組
對附件2:在excel中先將附件2中“duplicates”一列的數據移動到“questionID”一列,然后利用excel中的排序功能對總體數據進行id升序排列,此時這一列有很多id重復,然后我們利用excel中的數據功能找出重復值并且高亮重復值,然后刪掉重復值,這時我們發現有很多重復值的label既有0也有1,此時我們優先刪掉lebal為0的id,得到新表格。
我們提取詞向量使用的是 CountVectorizer和 Tfidf-Transformer方法。CountVectorizer是通過fit_transform函數將文本中的詞語轉換為詞頻矩陣CountVectorizer是屬于常見的特征數值計算類,是一個文本特征提取方法。對于每一個訓練文本,它只考慮每種詞匯在該訓練文本中出現的頻率。CountVectorizer會將文本中的詞語轉換為詞頻矩陣,它通過fit_transform函數計算各個詞語出現的次數。
我們對于語義相似度的計算選擇的是Google研發的當下最火的BERT。
我們將原附件2中的所有重復問題,即label為1的問題組留下,其他label為0的問題先刪掉,如果存在“一對二”或“一對多”即有兩個或兩個以上的問題重復,我們將這類數據進行拆分,全部變成一對一的問題組,方便我們模型的建立和使用。

我們對模型進行測試:
隨機挑選一個目標問題的id:2,輸入在pycharm程序代碼中,點擊運行,結果顯示,id為2的問題找出的重復問題的top 10。經我們人工判定,其中top K列表結果中正確檢測到的重復問題編號數量為7個,該樣本實際擁有的重復問題數量為10個,所以R=0.7。
決策樹的優點:決策樹易于理解和實現,人們在在學習過程中不需要使用者了解很多的背景知識,這同時是它的能夠直接體現數據的特點,只要通過解釋后都有能力去理解決策樹所表達的意義。
決策樹的缺點:(1)對連續性的字段比較難預測;(2)對有時間順序的數據,需要很多預處理的工作;(3)當類別太多時,錯誤可能就會增加得比較快;(4)一般的算法分類的時候,只是根據一個字段來分類。
BERT的優點:BERT是截至2018年10月的最新state oftheart模型,通過預訓練和精調橫掃了11項NLP任務,這首先就是最大的優點了。而且它還用的是Transformer,也就是相對rnn更加高效、能捕捉更長距離的依賴。對比起之前的預訓練模型,它捕捉到的是真正意義上的bidirectional context信息。
BERT的缺點:BERT在第一個預訓練階段,假設句子中多個單詞被Mask掉,這些被Mask掉的單詞之間沒有任何關系,是條件獨立的,然而有時候這些單詞之間是有關系的,比如“NewYorkisacity”,假設我們Mask住“New”和“York”兩個詞,那么給定“is a city”的條件下“New”和“York”并不獨立,因為“New York”是一個實體,看到“New”則后面出現“York”的概率要比看到“Old”后面出現“York”概率要大得多。
BERT模型的推廣:本文解決技術平臺對重復問題的識別使用的是一種稱之為BERT的新語言表征模型,意為來自變換器的雙向編碼器表征量(BidirectionalEncoder Representations from Transformers)。不同于最近的語言表征模型(Peters等,2018;Radford等,2018),BERT旨在基于所有層的左、右語境來預訓練深度雙向表征。因此,預訓練的BERT表征可以僅用一個額外的輸出層進行微調,進而為很多任務(如問答和語言推理)創建當前最優模型,無需對任務特定架構做出大量修改。
決策樹模型的推廣:企業管理實踐,企業投資決策,由于決策樹很好的分析能力,在用戶分群、用戶流失等領域應用較多。