標籤會說話?揭祕58本地服務標籤挖掘實踐

背景


什麼是標籤?標籤是通過對帖子內容分析得到的高度精煉的特徵詞或短語,將帖子內容標籤化可以突出帖子特性,實現帖子內容結構化,幫助用戶更快定位到所需要的服務,提升用戶體驗。

在整個標籤挖掘過程中,我們首先對中文分詞進行了選型,對比了多種分詞工具的分詞效果,綜合多方考慮,最終選擇使用HanLP作為分詞工具包應用到標籤挖掘工作中。在標籤挖掘實踐中,我們迭代了相似詞、組合詞、熱搜詞等方案,不斷豐富標籤系統。最後也是目前我們的主要工作是對標籤的優化,提升標籤質量。


中文分詞

中文分詞是將漢字序列切分成一個個單獨的詞。在英文中,單詞之間是用空格分割的,但是中文沒有明顯的分割符,因此我們就要對一句話進行分詞,比如“北京小紅帽搬家”分詞序列為:“北京”、“小紅帽”、“搬家”。

目前已有數十種開源分詞工具,我們選擇了其中的四種:HanLP、IK、Ansj和jieba進行了對比。評價一款工具的好壞,需要一個黃金標準,在此我們選擇了最具權威性的分詞結果——SIGHAN和人民日報2014年的分詞數據源。首先對數據源進行預處理,一是去除數據集中的符號(標點符號、特殊字符等),二是不拆分標準數據集中的專有名詞。評測指標有準確率(Precision)、召回率(Recall)、F值(F-measure)和錯誤率(ErrorRate)。具體對比結果如下表所示。

4種分詞工具分詞效果對比表1

標籤會說話?揭秘58本地服務標籤挖掘實踐

數據源:SIGHAN,數據量498KB

4種分詞工具包分詞效果對比表2

標籤會說話?揭秘58本地服務標籤挖掘實踐

數據源:人民日報2014數據,數據量10.7M

使用兩份不同的分詞數據源得到上述兩張分詞效果對比表,由表1可以看到Ansj的分詞效果最好,HanLP與jieba的分詞效果相當,IK分詞效果最差。由表2可以得出HanLP的分詞結果最好。因此我們選擇使用HanLP作為我們標籤挖掘的基礎分詞工具,還可以根據業務調整其開源代碼,可更好的適配業務場景。由於時間有限,其他分詞工具對比可參考文獻1。


標籤挖掘演進

確定了分詞工具,我們開始進行標籤挖掘,數據源統一是黃頁帖子IMC日誌數據,因為黃頁二級類目較多,類目間關聯性較低,因此分類目訓練模型,並實現自動化迭代。

標籤會說話?揭秘58本地服務標籤挖掘實踐

標籤挖掘及審核流程圖

1. 找相似挖掘

找相似挖掘的思路來源於前期產品同學給出了重點類目的一批標籤,基於此,我們嘗試使用與已有標籤相近的詞挖掘新標籤。首先從HDFS中讀取前N天的日誌,分品類對數據進行清洗,根據帖子圖片個數、帖子內容長短對帖子實現初步過濾;然後使用HanLP進行分詞,根據詞性過濾人稱代詞、形容詞、數詞等,通過TF-IDF抽取帖子關鍵詞,訓練詞向量模型,最後計算與種子詞相似的詞作為新的備選詞。

標籤會說話?揭秘58本地服務標籤挖掘實踐

相似標籤挖掘流程圖

這種挖掘方式依賴種子詞,需人工挑選標籤作為種子詞,目前已擴29個類目,備選詞挖掘效果較好,70%的備選詞可直接作為標籤。

2. 組合詞挖掘

組合詞是指分詞工具分出的最小單元詞組合而成的新詞。判定一個組合詞是否成詞,我們使用了基於統計規則的方式,計算組合詞的凝固度、自由度和詞頻。比如“ABC”是個新詞,則ABC一起出現的頻率應遠大於詞各自出現的頻率,這就是凝固度,計算公式為:

標籤會說話?揭秘58本地服務標籤挖掘實踐

自由度可以理解為組合詞可以成詞(即作為一個整體),它的信息熵的計算,信息熵越大成詞率越高。詞頻不必多說,就是組合詞出現的次數,詳情可參考文獻2。

該種挖掘方式適用於發現未登錄詞,根據領域語料可以發現具有特色的領域詞,比如搬家品類發現“廂貨車”等新詞,新詞效果也取得較好結果[1] ,其中經審核有90%的備選詞可直接作為標籤入庫,提高了人工審核效率。

3. 主題詞挖掘

同找相似詞一樣對帖子數據進行預處理,訓練LDA模型,抽取各個類目的主題詞作為備選詞,但效果欠佳,不推薦使用。

這個方式可以發現帖子主題詞,但設置的主題個數對挖掘效果影響較大。

4. 熱搜詞挖掘

基於用戶搜索詞日誌抽取TopN展示pv的搜索詞作為熱搜詞,去除停用詞並做同義詞歸一化處理,將熱搜詞作為備選詞。

5. 圖片標籤挖掘

抽取展示TopN的帖子數據,調用第三方圖片識別的接口獲取圖片標籤,將符合規則的標籤作為備選詞。

綜上,找相似挖掘的方式應用於有優質標籤的類目;組合詞挖掘與主題詞挖掘用於沒有標籤的類目。但是備選詞若要入庫作為標籤需要經過覆蓋率,網站爬蟲等審核方式。


標籤優化

通過以上方式我們得到了足夠的標籤,但是入庫的標籤還是存在多種問題,比如:多標籤同義,負面詞標籤等,因此對標籤數據進行修復亟待解決。

標籤會說話?揭秘58本地服務標籤挖掘實踐

標籤優化流程圖

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)


分享到:


相關文章: