孫 甜,耿永建,胡程憶,霍 明,楊志強,黃 昭,孟龍波
(卓望信息技術(北京)有限公司,北京 100060)
隨著電信運營商數字化轉型的推進,信息科技技術已經融入社會民生經濟的各方面,各大公司也已經利用自然語言處理技術對各項業務進行賦能。比如陳慶良探討了自然語言處理在電信客戶名稱匹配的應用場景,采用Albert small算法實現了客戶名稱的精確匹配模型,李奧等研究智能音箱在電信運營商業務中的應用,使用NLP理解用戶意圖等。中國移動通訊集團作為推動數字經濟發展的中堅力量,承擔著更大的責任和使命,致力于為企業級客戶提供專業的數智化決策輔助系統。面對海量新聞中蘊含的龐大且復雜的信息,從中快速定位到所需內容,本文提出了DDCAMS,通過新聞去重模型、新聞去噪模型、新聞分類模型和新聞摘要模型4層算法自動處理和提煉關鍵信息,方便分析師洞察最新前沿技術,撰寫分析性報告,提供智能化輔助決策支持。
本文的主要貢獻可以概括為以下幾個方面。
1)提出了DDCAMS系統,通過4層模型的處理,代替純人工處理新聞的方式,實現快速有效地對海量新聞進行提取和分類,方便運營人員分析和使用,有助于分析師把握前沿技術動態,洞察行業商機。
2)在新聞去重模型當中,使用SimHASH算法,將百萬量級的新聞處理時間降低到對數級別,實現了一個數量級新聞數量的下降,大幅縮短后續模型處理新聞的時間,對工程和業務來說非常友好。
3)在新聞分類和摘要模型當中,采用了預訓練模型對文本進行理解,提高了結果的準確率,并使用基于mlflow框架進行模型部署,采取小批量多次迭代優化的方式,對模型實現快速迭代和更新。
智慧咨詢項目基于網絡爬蟲,按日、周、月方式對網絡情報人工收集行業動態新聞、政策法規、戰略/業務預警和商機等信息,以日報、周報新聞聚合的方式為客戶提供關于政府政策、技術發展趨勢、運營商動向、重點標桿企業的發展信息和合作動態等內容。
之前業務人員的操作流程是利用爬蟲從網絡上下載新聞,然后人工篩選出所需新聞,并逐條閱讀為文章分類,再由運營人員提取文章里的摘要內容。為替代原有純人工篩選信息、排版的生產模式,實現自動化過濾、打標和摘要等需求,形成線上智能輔助決策產品閉環,自動生成信息洞察報告。平臺由“信息獲取—信息治理—數據分析—決策輔助”幾大核心模塊組成,AI主要負責自動處理數據量極大,使用簡單邏輯無法實現的信息萃取相關功能,包括以下4類。
1)新聞去重模型(news deduplication model):重復內容自動識別。通過AI去重模型自動過濾大量重復或部分新聞語義內容重復的新聞,為內容打上完全匹配或部分匹配的重復標簽。
2)新聞去噪模型(news denoise model):非新聞類內容自動過濾。獲取的新聞除了包含新聞標題、新聞正文等有效信息,也常常包括導航區、超鏈接及圖片控件廣告等噪聲信息。去噪模型主要用于去除和新聞內容完全無關的內容,自動將所需新聞入庫。
3)新聞分類模型(news classification model):通信行業5類標簽自動打標。將新聞作為原始數據輸入模型,判斷每一條新聞屬于政策環境、技術應用、數字運營、垂直行業和公司5大類中的某幾小類別。
4)新聞摘要模型(news abstract model):全文語義分析,重點段落自動摘要。通過百度快照自動摘要數據作為基礎模型訓練依據,完成摘要模型的學習,傳入新聞生成最匹配原文標題的全文摘要內容,用以替代人工編輯提取新聞核心觀點段落的工作。
設計了新聞去重、新聞去噪、新聞分類和新聞摘要4層模型,依次運行在服務器上。通過爬蟲系統獲得大量含噪聲的數據,首先通過去重模型,去掉重復新聞及語義相似度較高的新聞,減少后期模型樣本量。之后新聞經過去噪模型過濾掉與主題不相符的非新聞噪聲,接下來分類模型自動為每條新聞打上相應的5類標簽,并且摘要模型提煉新聞的主旨內容,并返回給前端業務分析師,通過4層算法,減少人工處理新聞的數量,提高效率,整體流程如圖1所示。
圖1 DDCAMS整體流程框架圖
爬蟲系統每天抓取的新聞數據大約有30萬條,通過該系統中的去重模型和去噪模型,可以過濾98.5%對業務無明顯意義的新聞信息,并通過分類模型,摘要模型完成信息的分類與萃取,極大地提高了工作效率。通過該系統,在人工不變的情況下,處理新聞量增加了30倍,處理時間減少了40%。
新聞去噪、分類和摘要模型采用mlflow框架來管理不同版本的模型,通過定義標準的工程腳手架進行模型的快速訓練和保存,然后通過track服務提供模型的實驗記錄、模型的注冊、版本管理和上線發布,最后通過HTTP協議暴露接口,完成模型的部署和應用。提供標準API接口給后端、測試等相關人員,完成全流程的開發,后期模型也可以根據新數據和業務效果不斷進行重新訓練并更新。
去重模型采用fastAPI來創建用于獲取預測結果的REST服務,在代碼當中聲明請求參數和請求體等變量,使用uvicorn ASGI服務器,由swagger UI自動生成交互式的用戶界面API文檔。
新聞萃取項目首先經過的是新聞去重模型,目的就是將大量重復相似的新聞過濾掉,本質上屬于文本間相似度的計算。文本相似度的計算,可以使用向量空間模型(VSM),即先對文本分詞提取特征,根據特征建立文本向量,把文本之間相似度的計算轉化為特征向量距離的計算,如歐式距離、余弦夾角等,對于小量數據處理是可以的,但是面對日增爬取很多的海量新聞來說,這樣做的復雜度會很高,所以項目的難點在于如何將海量新聞計算的時間復雜度由O(n2)下降到O(n),這對實際生產非常重要。
SimHash算法是GoogleMoses Charikear于2007年發表的論文中提出的,專門用來解決億萬級別的網頁去重任務,其主要思想是降維,將高維的特征向量映射成低維的特征向量,再通過比較2個特征向量的漢明距離來確定文章之間的相似性,可以實現近線性的近似搜索方案。
SimHash算法總共分為5個流程:①分詞。對待處理文檔進行中文分詞,得到有效特征和權重;②hash。對獲取的詞進行普通哈希操作,計算hash值,得到一個長度為n位的二進制;③加權。在獲取的hash值基礎上,根據對應的weight值進行加權;④合并。將上述得到的各個向量加權結果進行求和,變成一個序列串,對一個文檔得到一個列表;⑤降維。對于得到的n-bit簽名的累加結果的每個值進行判斷,大于0則置為1,否則置為0,從而得到該文本的SimHash值。
經過SimHash映射以后,得到每個文本內容對應的SimHash簽名,利用海明距離來進行2篇新聞相似度的衡量,根據抽屜原理,即在海明距離為3的情況,如果2個文檔相似,那么其必有一個塊的數據是相等的原理,來判斷2個文本的相似性,進行更高效率的存儲,提高去重效率。
SimHash算法的召回率為82%,可以有效過濾掉新聞當中約9成以上重復和近似的新聞,算法的復雜度為O(1),推理時間是24 ms,實現了近線性的近似搜索方案,作為新聞萃取的第一層處理,極大地提高了項目的整體效率。去重模型可以在很多場景當中直接使用,具有較高的實際應用價值。
經過新聞去重模型后的數據會進入到新聞去噪模型,過濾掉諸如新聞報道時間、導航區、超鏈接、版權信息及圖片控件廣告等噪聲信息。使用TF-IDF算法實現新聞文本的向量化,然后使用SVM算法對文本數據進行分類,判斷是否為所需新聞,主要包括jieba分詞、TF-IDF文本表征和SVM文本分類3個環節。
1)jieba分詞。首先進行數據清洗,去掉重復數據,然后使用正則表達式去除換行符和標點符號等操作,接下來進行停用詞的處理,刪除類似“我們,的,了,嗎”這類停用詞,但是保留數字和網頁標簽等超鏈接符號,然后使用jieba默認模式對所有新聞文本進行分詞處理,用1個空格分隔每個單詞,對所有的數據集都進行分詞的操作。
2)TF-IDF文本表征。TF-IDF可以根據特征詞在文中出現次數和在整個語料中出現文檔頻率數計算該詞在整個語料中的重要程度,過濾掉常見卻不重要的詞,盡可能多的保留影響程度高特征詞,TF-IDF值越大則表示該特征詞對這個文本的重要程度越高。
計算公式如下,TF-IDF表示詞頻TF和倒文本詞頻IDF的乘積,TF中ni,j為特征詞ti在訓練文本Dj中出現的次數,分母是文本Dj中所有特征詞的個數,IDF中|D|是語料文本總數,|Dt|表示文本所包含特征詞ti的數據
3)SVM文本分類。支持向量機SVM是一種二分類模型,是定義在特征空間上間隔最大的線性分類器,學習策略就是間隔最大化,學習算法就是求解凸二次規劃的最優化算法,通過使用核技巧成為實質上的非線性分類器。
在實驗的過程中,采用高斯RBF核函數,其是一種局部性強的核函數,主要用于線性不可分的情形,可以將1個樣本映射到1個更高維的空間,采用KFold五折自動訓練,利用metrics計算precision、recall、f1_score 3類評價指標結果。
對69 670條新聞數據進行訓練,首先進行數據清洗和分詞的處理,劃分訓練集、測試集和驗證集,然后對此語料庫用sklearn完成向量化與TF-IDF特征值計算,之后利用SVM模型進行文本分類訓練,通過降低閾值增加召回率,經過100輪訓練后模型達到了最優效果,離線評估去噪模型f1值為0.817 659,上線使用之后可以有效將噪聲新聞過濾出來。
新聞分類算法框架使用Albert+TextCNN。Albert是為了得到新聞文本特征向量,TextCNN是為了更好地提取文本中的特征,最后接全連接層得到分類的標簽結果,整體框架如圖2所示。
圖2 新聞多標簽分類模型
Albert通過向量參數化的因式分解、跨層參數共享、句間連貫性損失采用SOP及dropout 4個手段來減小模型的大小,在生產環境進行部署時無論是存儲還是訓練模型都很節省資源。新聞文本通過Albert模型得到1個3維向量之后,下游任務使用這個向量做多標簽文本分類的任務。
TextCNN模塊的核心思想是抓取新聞文本的局部特征,主要是通過不同的卷積核尺寸來提取文本的Ngram信息,因為中文會有一些5、6、7詞的專業名稱或短語,所以選擇了更豐富的卷積核,然后進行最大池化來提取最關鍵信息,類似attention機制,拼接之后通過全連接層對特征進行組合,然后通過多分類的損失函數來訓練模型。
最后通過全連接層,利用了TextCNN的輸出作為其輸入,將TextCNN的輸出投射到新聞分類的標簽上,有點像特征與標簽之間的橋梁,得到標簽的概率輸出分布,獲得每條新聞對應的多標簽類別。
此處使用多個二分類任務,如果輸出結果不屬于任何一個類,則認為是噪聲數據,這與第2步的去噪模型是互補的。如果輸出的類別超過10個,則僅取前10個概率最大的類別。
數據集來自卓望公司從各大網站上的新聞數據,一共有40 000多條,由業務運營人員對數據類別打標。數據集分為公司、政策環境、垂直行業、技術應用和數字化運營5個大類,173個小類,每1條新聞屬于5個大類中的某幾個特定的小類。采用one-hot進行編碼,類別對應的數據標簽為1,否則為0。將文本轉換成向量后,隨機選取其中30 000條用作訓練集,6 000條驗證集,4 000條測試集,數據集樣本見表1。
表1 通信行業5個類別數據樣例
新聞分類模型的訓練環境基于Linux Ubuntu 16.04,硬件環境為Intel(R)Xeon(R)Gold 5118 CPU@2.30 GHz(12-Core),8*NVIDIA Tesla V100(16 GB),64 GB內存,利用Pytorch1.7.1進行神經網絡的搭建,軟件環境為Python3.6。預訓練模型采用albert_small_zh_google,textcnn的num_filters設置為128,卷積核token數設置為2、3、4、5、6、7,embedding_size為384,最大句子長度為512,訓練過程中的學習率是5×10-5,批次大小為64,模型訓練到50輪時效果最好,結果見表2。
表2 通信行業新聞5個類別f1值
公司和政策環境類別結果較好,f1值達到90%多,分析是因為文本當中有明顯的類似“公司名”等關鍵詞特征,而且數據量較多,所以分類準確率較高。垂直行業和技術應用的特征和數量少一些,效果稍差。數字化運營個別類只有幾條數據,特征不明顯,所以準確率不高,后期可以進行不均衡數據集處理,或采用數據增強的方式等來提高分類準確率。
業務方收集的新聞,一方面利用多分類模型為其打標,另一方面經過摘要模型生成摘要,方便分析師預覽新聞內容。因新聞文章較長,seq2seq對長本文編碼能力有限,所以采用抽取式的方式構建摘要模型,判斷文章中哪些句子可以作為關鍵句,形成摘要。
先通過規則將原始的生成式語料轉化為序列標注式語料,即在新聞原文中找到若干條子句,使得其鏈接起來與摘要盡可能相似,屬于摘要的句子打標為1,否則為0。句子使用“BERT+平均池化”來生成句向量,并固定不變,標注模型主體方面則用DGCNN模型構建,最后經過dense層進行分類判斷是否為摘要關鍵句,整體框架如圖3所示。
圖3 新聞摘要模型圖
實驗模型在tensorflow1.15、python3.6環境下進行訓練,采用BERT模型默認參數,詞嵌入維度為128,隱藏單元為256,batch_size大小為64,采用Adam優化器優化模型,在訓練抽取模型的時候,為了盡量做到“抽全”來構建摘要模型,以0.2為閾值做EarlyStop,使用交叉驗證,以詞為單位的加權Rouge作為評價指標。
采集百度新聞的快照和原文作為監督式自動摘要模型任務的基礎訓練數據,一共有18 468條數據,以“摘要|||原文”的數據對出現,關于訓練數據摘要和原文的一些統計信息見表3。
表3 新聞摘要數據統計
對以上數據進行模型訓練,rouge值為12.86,新聞抽取的結果大部分集中在第1段,平均摘要句子長度為128個字左右,分析是因為訓練數據的摘要基本就在原文正文的第1段,所以模型學到了位置信息及句長信息。因為數據量比較少,所以采取了回譯的數據增強操作,將數據擴充了1倍,效果有些許提升,作為初代版本,基本可以滿足需求,減輕運營工作人員的工作量,隨著后續平臺的使用和數據量的積累,再對模型做進一步的精細優化,提升摘要效果。
本文主要介紹了面向智慧咨詢項目的自然語言處理技術在新聞萃取項目中的實踐及應用,通過研究新聞去重、新聞去噪、新聞分類和新聞摘要生成等技術,實現了自動篩選信息、提取關鍵內容的生產技術,加快了信息處理的效率,替代了純人工的操作方式,為分析師洞察前沿技術提供了智能化決策支持,打造了面向外部客戶和內部技術人員、運營人員的AI業務變革應用案例,賦能各項智能化服務。
不過當前模型也存在不少問題,一是數量規模較小,樣本量不足,覆蓋范圍不夠,影響了模型的泛化能力,二是標注的樣本質量不高,影響模型精度的進一步提升。但是隨著運營人員的持續使用,有標注的數據會越來越多,有利于后續做有監督的模型訓練,通過mlflow框架不斷進行小批量模型迭代更新,提高準確率,提升運營人員的使用體驗。