背景
什麼是標籤?標籤是通過對帖子內容分析得到的高度精煉的特徵詞或短語,將帖子內容標籤化可以突出帖子特性,實現帖子內容結構化,幫助用戶更快定位到所需要的服務,提升用戶體驗。
在整個標籤挖掘過程中,我們首先對中文分詞進行了選型,對比了多種分詞工具的分詞效果,綜合多方考慮,最終選擇使用HanLP作為分詞工具包應用到標籤挖掘工作中。在標籤挖掘實踐中,我們迭代了相似詞、組合詞、熱搜詞等方案,不斷豐富標籤系統。最後也是目前我們的主要工作是對標籤的優化,提升標籤質量。
中文分詞
中文分詞是將漢字序列切分成一個個單獨的詞。在英文中,單詞之間是用空格分割的,但是中文沒有明顯的分割符,因此我們就要對一句話進行分詞,比如“北京小紅帽搬家”分詞序列為:“北京”、“小紅帽”、“搬家”。
目前已有數十種開源分詞工具,我們選擇了其中的四種:HanLP、IK、Ansj和jieba進行了對比。評價一款工具的好壞,需要一個黃金標準,在此我們選擇了最具權威性的分詞結果——SIGHAN和人民日報2014年的分詞數據源。首先對數據源進行預處理,一是去除數據集中的符號(標點符號、特殊字符等),二是不拆分標準數據集中的專有名詞。評測指標有準確率(Precision)、召回率(Recall)、F值(F-measure)和錯誤率(ErrorRate)。具體對比結果如下表所示。
4種分詞工具分詞效果對比表1
![標籤會說話?揭秘58本地服務標籤挖掘實踐](http://p2.ttnews.xyz/loading.gif)
數據源:SIGHAN,數據量498KB
4種分詞工具包分詞效果對比表2
![標籤會說話?揭秘58本地服務標籤挖掘實踐](http://p2.ttnews.xyz/loading.gif)
數據源:人民日報2014數據,數據量10.7M
使用兩份不同的分詞數據源得到上述兩張分詞效果對比表,由表1可以看到Ansj的分詞效果最好,HanLP與jieba的分詞效果相當,IK分詞效果最差。由表2可以得出HanLP的分詞結果最好。因此我們選擇使用HanLP作為我們標籤挖掘的基礎分詞工具,還可以根據業務調整其開源代碼,可更好的適配業務場景。由於時間有限,其他分詞工具對比可參考文獻1。
標籤挖掘演進
確定了分詞工具,我們開始進行標籤挖掘,數據源統一是黃頁帖子IMC日誌數據,因為黃頁二級類目較多,類目間關聯性較低,因此分類目訓練模型,並實現自動化迭代。
標籤挖掘及審核流程圖
1. 找相似挖掘
找相似挖掘的思路來源於前期產品同學給出了重點類目的一批標籤,基於此,我們嘗試使用與已有標籤相近的詞挖掘新標籤。首先從HDFS中讀取前N天的日誌,分品類對數據進行清洗,根據帖子圖片個數、帖子內容長短對帖子實現初步過濾;然後使用HanLP進行分詞,根據詞性過濾人稱代詞、形容詞、數詞等,通過TF-IDF抽取帖子關鍵詞,訓練詞向量模型,最後計算與種子詞相似的詞作為新的備選詞。
相似標籤挖掘流程圖
這種挖掘方式依賴種子詞,需人工挑選標籤作為種子詞,目前已擴29個類目,備選詞挖掘效果較好,70%的備選詞可直接作為標籤。
2. 組合詞挖掘
組合詞是指分詞工具分出的最小單元詞組合而成的新詞。判定一個組合詞是否成詞,我們使用了基於統計規則的方式,計算組合詞的凝固度、自由度和詞頻。比如“ABC”是個新詞,則ABC一起出現的頻率應遠大於詞各自出現的頻率,這就是凝固度,計算公式為:
自由度可以理解為組合詞可以成詞(即作為一個整體),它的信息熵的計算,信息熵越大成詞率越高。詞頻不必多說,就是組合詞出現的次數,詳情可參考文獻2。
該種挖掘方式適用於發現未登錄詞,根據領域語料可以發現具有特色的領域詞,比如搬家品類發現“廂貨車”等新詞,新詞效果也取得較好結果[1] ,其中經審核有90%的備選詞可直接作為標籤入庫,提高了人工審核效率。
3. 主題詞挖掘
同找相似詞一樣對帖子數據進行預處理,訓練LDA模型,抽取各個類目的主題詞作為備選詞,但效果欠佳,不推薦使用。
這個方式可以發現帖子主題詞,但設置的主題個數對挖掘效果影響較大。
4. 熱搜詞挖掘
基於用戶搜索詞日誌抽取TopN展示pv的搜索詞作為熱搜詞,去除停用詞並做同義詞歸一化處理,將熱搜詞作為備選詞。
5. 圖片標籤挖掘
抽取展示TopN的帖子數據,調用第三方圖片識別的接口獲取圖片標籤,將符合規則的標籤作為備選詞。
綜上,找相似挖掘的方式應用於有優質標籤的類目;組合詞挖掘與主題詞挖掘用於沒有標籤的類目。但是備選詞若要入庫作為標籤需要經過覆蓋率,網站爬蟲等審核方式。
標籤優化
通過以上方式我們得到了足夠的標籤,但是入庫的標籤還是存在多種問題,比如:多標籤同義,負面詞標籤等,因此對標籤數據進行修復亟待解決。
標籤優化流程圖
1. 同義詞挖掘
本文的同義詞挖掘主要綜合多種方式發現同義詞,具體如下:
a) 同義詞林
數據來源包括哈工大擴展版詞林和詞林包,詞林中包括同義詞和近義詞。
b) 字面相似規則
翻轉規則:基於業務分析,大部分標籤屬於組合標籤,組合標籤是有兩個或多個基礎詞組合成的標籤,存在基礎詞相同但順序不同的同義標籤,基於此我們提出根據翻轉規則發現同義詞。例如:“空調維修”和“維修空調”表達的是同一個意思,可以歸為一個標籤。
編輯距離:根據標籤與標籤之間的編輯距離發現同義詞,使用萊溫斯坦距離或jaro距離。將編輯距離符合一定閾值的多個標籤歸一化。
c) 第三方同義詞服務
http://www.cilin.org/jyc/,該服務同義詞較少,同時受網絡限制,得到的同義詞較少。
d) 詞相似度計算
根據已有詞向量,計算標籤之間的相似度,當相似度達某個閾值時,就認為兩個標籤是同義詞;針對未登錄詞的詞向量,借鑑了fasttext 針對OOV問題的處理方式,使用ngrams詞取平均。
通過以上幾種方式綜合,可以找到多對同義詞,但是同義詞與近義詞的關係界限模糊,大部分標籤無法界定是同義詞還是近義詞,在挖掘過程中近義詞項較多,造成人工審核成本過高,因此我們加入強規則以降低審核成本。
2. 負面詞挖掘
根據否定詞,比如(“不”、“杜絕”等等)、詞性模板和詞頻發現負面詞,但錯誤率較高,建議審核後入庫。
除了以上兩種方式對標籤進行優化之外,我們還依據線上用戶對標籤的反饋行為數據,計算標籤的權重,每天更新標籤的動態分值。
總結
本文主要介紹了標籤挖掘過程中的實踐方法,包含基於模型的挖掘和基於統計規則的挖掘方式,及其適用的場景。在標籤優化實踐中提出同義詞挖掘和負面詞挖掘的方案。
目前黃頁有212個二級類目,標籤已覆蓋了210個二級類目,共9W+標籤,支持了前期工程上的使用,但仍存在很多不合適的標籤,如何挑出好標籤,去除壞標籤,我們一直在探索。
參考文獻
1. 11款開放中文分詞引擎評測(https://www.cnblogs.com/croso/p/5349517.html)
2. 基於SNS的文本數據挖掘(http://www.matrix67.com/blog/archives/5044)
閱讀更多 58技術 的文章