◆邵 嵐 姚艷松 李 宣
?
基于互聯網大數據的自然語義分析研究
◆邵 嵐 姚艷松 李 宣
(CLO 北京 100054)
隨著互聯網中的自然語言數量越來越龐大,各種自然語言處理技術在不同行業的需求也日益增長,同時一些新的算法和模型也應運而生。本文首先對這些自然語言處理技術進行了研究與比較,然后應用這些技術于互聯網數據上,對比了不同參數下算法的性能,實現了對互聯網數據的自動分類。
自然語言處理;分詞;關鍵詞提取;詞嵌入技術
最近幾年, 隨著深度學習技巧的紛紛出爐[1],并且在自然語言處理方面獲得了一些尖端成果,例如語言模型[2],語法分析[3]等。隨著自然語言處理技術的逐漸成熟,它越來越多地被應用于人們的生活、學習和工作等方面,并給人們帶來了極大的方便。
互聯網中包含了海量的自然語言數據,使用各種自然語言處理技術以及它們的組合,可以深度挖掘其中的有用信息。
本文主要對這些技術進行簡要介紹,并使用互聯網中的自然語言數據對這些技術進行性能測試。
中文自動分詞是指使用計算機算法程序對中文文本自動做詞語切分,就像英文那樣,使得中文句子中的詞與詞之間也有空格分開。中文自然語言處理中的一個最基本的步驟就是自動分詞,其準確率會直接影響到后續步驟的結果。
現有的中文分詞算法主要分為三類:一是基于字符串匹配的分詞、二是基于理解的分詞、三是基于統計的分詞。這些算法各有優缺點,在技術上它們有各自的特點,在用途上它們也有各自的差異[4]。
目前最流行的關鍵詞提取算法主要有:基于 TF-IDF 算法的關鍵詞抽取和基于 TextRank 算法的關鍵詞抽取兩種算法。
TF-IDF(term frequency–inverse document frequency)是一種常常被用于文本挖掘和資訊檢索的加權技術,同時它也是一種統計方法,用以評估某個給定的詞對于一個文檔集或一個語料庫中的某一份文檔的重要程度。某個詞的重要性與它在文檔中的出現頻率成正比,但同時也隨著它在語料庫中的出現頻率成反比。TF-IDF加權算法的各種形式經常作為文檔與用戶查詢之間相關性的度量或評級并被應用于搜索引擎中。
TF-IDF的計算公式如下:

TF-IDF的優點是計算簡單,易于理解,性價比高。但是它也有明顯的缺陷,首先單純依據文章中的TF來衡量重要性,會忽略掉詞語的位置信息。比如,段首和句首一般應該有更高權重。其次,雖然有的文章中核心關鍵詞只出現了1~2次,但也有可能通篇都是圍繞其進行闡述和解釋的,所以單純靠TF仍然不能解決所有的情況。
TextRank算法是一個基于圖排序的文本處理算法,它的核心思想是從PageRank的迭代思想中衍生過來的,其計算公式如下:

TextRank屬于無監督學習算法,不要求使用者具備深入的語言學背景或專業領域的知識;TextRank算法綜合考慮了文本的整體信息,從而可以確定哪些詞語或句子能更好的表達該段文本。
詞嵌入是自然語言處理(NLP)中的語言模型與表征學習技術的統稱。從算法上來看,它會把一個維數是所有詞語數量的高維空間嵌入到一個維數低得多的連續向量空間中,每個單詞或詞組會被映射為實數域上的向量。
目前主流的詞嵌入方法有:人工神經網絡算法、對詞語同現矩陣的降維算法、概率模型以及單詞所在上下文的顯式表示等。
Word2Vec模型屬于無監督學習算法,它可以從文本語料中學習語義知識,是現在自然語言處理中的常用的模型之一。Word2Vec模型主要包含Skip-Gram和CBOW兩種模型。概括地說,Skip-Gram是使用輸入單詞來預測上下文,而CBOW是使用上下文來預測輸入單詞。

圖1 Skip-Gram模型示意圖
Skip-Gram(Continuous Skip-gram Model)模型可以通過輸入的單詞來推算該單詞附近最可能出現的單詞。其核心思想是通過圖1的神經網絡模型來學習語料庫中單詞的共現信息,在學習完成后,隱藏層的權重矩陣中的每一行就是一個詞向量。在實際中,還經常使用負采樣技術來加速神經網絡的訓練。
CBOW(Continuous Bag-Of-Words Model)模型可以通過某未知單詞的上下文來推算該未知單詞。CBOW模型的神經網絡結構與Skip-Gram模型非常相似,它們之間的關系如圖2所示。

圖2 圖例集中CBOW模型與Skip-Gram模型的關系
(1)數據源
本次實驗數據來自互聯網開放數據,使用Python的數據采集工具共采集了百度貼吧的11,568,989條帖子,文本大小0.99G,含蓋了28183個貼吧,3850382名用戶。
(2)實驗環境
實驗環境為三臺RedHat linux 6操作系統、64G內存的服務器,安裝hadoop-2.7.3、Spark2.1.0、Hanlp1.6.3。
數據存儲在hadoop中,spark負責分布式運算,Hanlp實現分詞算法。
(3)實驗方法
首先對百度貼吧數據進行分詞并構建詞典,之后使用所有數據進行詞向量訓練,然后從每個帖子中提取關鍵詞,并用詞向量表示該詞在空間中的位置,最后使用t-SNE非線性降維技術將結果展示在二維空間中,并使用聚類算法后對不同的類別的帖子進行著色。
(4)實驗結果
在訓練詞向量時使用了不同的參數進行測試,其中固定參數參見表1,不同維度詞向量的訓練時間的對比參見表2,訓練時算法占用的內存對比參見表3。本次實驗,最終訓練生成了詞向量140171條。

表1 詞向量算法使用的參數

表2 詞向量算法運行時間(單位:秒)

表3 詞向量算法運行所需要的空間
使用訓練的詞向量對帖子進行分類,如圖3所示,每個點代表一個帖子,可見不同內容的帖子各自聚成了小群組。

圖3 算法最短模式串長度下時間對比
實驗說明,對于訓練不同維度的詞向量算法所用的時間有較大差異,而算法所占用內存的差異卻比較小。最后,經人工驗證發現,使用詞向量可以對文本進行有效的語義分類。
本文研究了TF-IDF與TextRank兩種關鍵詞提取算法,以及Skip-Gram與CBOW兩種詞嵌入模型,并將以上模型應用于互聯網中的自然語言數據上,實現了互聯網信息的自動分類,并給出了實驗的參數與實驗的結果對比,以供讀者參考。
[1]Yoav G.A Primer on Neural Network Models for Natural Language Processing[J]. Journal of Artificial Intelligence Research 57(2016).
[2]Rafal J,Oriol V,Mike S,Noam S,Yonghui W.Exploring the Limits of Language Modeling[J].arXiv:1602.02410.2016.
[3]Do K.C.and Eugene C.Parsing as Language Modeling[J].Computer Science at Brown University.2016.
[4]周程遠.中文自動分詞系統的研究與實現[J].華東師范大學,2010.
[5]Salton G.,Fox E.A.and Wu H.Extended Boolean informat ion retrieval[J].1983 ACM 26,1022–1036.
[6]Rada M and Paul T.TextRank: Bringing Order into Texts[J].Association for Computational Linguistics,2004.
[7]McCormick,C.Word2Vec Tutorial-The Skip-Gram Mo del.2016.[EB/OL].http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/.
[8]Omer L.and Yoav G.Dependency-Based Word Embeddi ngs[J].Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics (pages 302–308),23-25 2014.
[9]Tomas M.,Kai C.,Greg C.,Jeffrey D.Efficient Estimation of Word Representations in Vector Space[J].arXiv:1301.3781.2013.