節後第一篇,疫情還沒結束,黎明前的黑暗,中國加油,武漢加油,看了不少報道,發現只有中國人才會幫助中國人,誰說中國人人心渙散?也許是年齡大了,看到全國各地的醫務人員源源不斷的告別家人去支援湖北,看到醫務人員、肺炎病人的故事,總會忍不住落淚,中國加油,中國人加油!算法
背景不寫了,只談技術,作的是文本類似性統計,因須要從文本描述性信息中分析同類信息,以便後續重點關注,數據量比較大,大概20多萬,人工效率低,須要算法來實現。數組
根據需求要從不一樣維度進行統計:測試
(1)分組不分句熱度統計(根據某列首先進行分組,而後再對描述類列進行類似性統計);
(2)分組分句熱度統計(根據某列首先進行分組,而後對描述類列按照標點符號進行拆分,而後再對這些句進行熱度統計);
(3)整句及分句熱度統計;(對描述類列/按標點符號進行分句,進行熱度統計)
(4)熱詞統計(對描述類類進行熱詞統計,反饋改方式作不不大)excel
在網上以及和同事都驗證了不少不一樣實現方案,具體過程就不說了,對比下來,jieba+gensim效果最好。索引
算法實現介紹:token
(1)輸入文件是excel,數據大概20多萬,首先經過pandas獲取excel信息,經過jieba分詞進行處理,jieba分詞要首先自定義詞典以及排除信息,這樣效果會差別很大,而後造成一個二維數組。
(2)使用gensim 中的corpora模塊,將分詞造成後的二維數組生成詞典
(3)將二維數組經過doc2bow稀疏向量,造成語料庫
(4)剛開始使用TF模型算法,後來更改成:LsiModel模型算法,將語料庫計算出Tfidf值。
(5)獲取詞典token2id的特徵數
(6)計算稀疏矩陣類似度,創建一個索引
(7)讀取excel行數據,經過jieba進行分詞處理
(8)經過doc2bow計算測試數據的稀疏向量
(9)求得測試數據與樣本數據的類似度文檔
算法說明:pandas
(1)這裏有個點,7-9步會循環執行,針對文檔描述列中的每一行,會與在第六步中建立的索引就行比對,會統計與該行類似性超過50%的行數據,同時會將統計到的數據增長個數組中,後續再也不執行比對,以避免重複統計。
(2)第一步jieba算法中會用到專業術語詞典及stop詞典等,7-9部會循環執行,目前類似度閾值設置的爲:50%,另外excel操做就很少說了(增長了彙總起來清單的超鏈,能夠導航到清單)
(3)效率上,20多萬的數據,因須要轉換向量,大概須要20來分鐘。
(4)大的算法發是這樣的,下一篇再開始上代碼,針對不一樣需求,進行介紹。效率
I’m 「軟件老王」,若是以爲還能夠的話,關注下唄,後續更新秒知!歡迎討論區、同名公衆號留言交流!軟件