當前位置:吉日网官网 - 傳統文化 - 搜索引擎之同義詞、近義詞、上位詞挖掘

搜索引擎之同義詞、近義詞、上位詞挖掘

在搜索引擎中,我們會碰到大量的同義詞需求。用戶在描述同壹個東西的時候,會有各種各樣的描述。

? 在電商搜索環境中,同義詞分成好幾類:

?1. 品牌同義詞:nokia=諾基亞,Adidas=阿迪達斯

?2. 產品同義詞:投影儀≈投影機,電話≈cell phone;?automobile 和car。

?3.舊詞和新詞:自行車? -> 腳踏車

?4.南方用詞和北方用詞:番茄-> 西紅柿。

?5.傳統的同義詞:儲物櫃和收納櫃。

?6.錯別字同義詞:瑜伽和瑜珈(錯誤寫為斜王旁)

對應英文來說,還有詞幹提取,如單復數、動詞原形和ing形式;英文還有壹個特殊的現象,例如兩個單詞可以分開寫,也可以合並在壹起,例如keychain和key chian(鑰匙鏈),boyfriend 和boy friend。

近義詞就比較多了: ?包括size 大碼≈大號;短褲和熱褲;邊疆和邊疆。

? 上位詞:蘋果手機上位詞 是手機。

反義詞:寬松和修身。當我們做query改寫的時候,改寫千萬不能改寫出反義詞。

如果我們仔細觀察,我們會發現有的詞可以互相替換,有些詞是只能單向替換(換壹個方向就不對了,例如周傑倫可以替換為周董,但是周董只能在壹定情況下替換為周董)。

我們可以從用戶搜索詞、商品標題、搜索和點擊來獲取。最根本的來源還是商家對商品標題的優化,聰明的商家會把同義詞堆疊在標題中,以期望獲取到更多的流量。

從點擊日誌上看,如果w1和w2是同義詞,那麽搜索w1和搜索w2,理論上會有大量的***同點擊的商品x1、x2、x3等等。

?標題商品標題得到大量的語料,例如投影儀和投影機,拉桿箱(draw bar box)和旅行箱(luggage)。

通過統計或者word2vec訓練詞的相關性,找到高相關度的詞。統計這些詞在標題中***同出現次數,即w1和w2的***現次數。

fromgensim.test.utilsimportcommon_texts,get_tmpfile

fromgensim.modelsimportWord2Vec

model_path="./data/word2vec_en_50d.model"

model=Word2Vec.load(model_path)

model.wv['computer']

Out[6]:

array([-0.48867282, -0.10507897, -0.23138586, -0.10871041,? 0.1514824 ,

? -0.01487145, -0.385491? ,? 0.01792672, -0.32512784, -0.9063424 ,

? -0.5428677 ,? 0.6565156 ,? 0.02183418,? 0.07939139,? 0.03485253,

0.319492? , -0.27633888,? 0.52685845, -0.0582791 , -0.4844649 ,

0.249212? ,? 0.8144138 , -0.03233343, -0.36086813,? 0.34835583,

? -0.07177112,? 0.0828275 ,? 0.6612073 ,? 0.74526566, -0.12676844,

? -0.08891173, -0.08520225, -0.04619604,? 0.13580324,? 0.183159? ,

0.15528682,? 0.01727525, -0.43599448, -0.2579532 , -0.23192754,

? -0.32965428,? 0.09547858,? 0.00419413, -0.06285212,? 0.18150753,

? -0.21699691,? 0.60977536, -0.06555454,? 0.35746607, -0.06610812],

? dtype=float32)

In[13]:

model.wv.similarity('case','cover') # case 和cover在描述手機殼的時候基本是同義詞

Out[13]:

0.8538678

In[22]:

defget_top_sim(word):

similary_words=model.wv.most_similar(word,topn=10)

forw,sinsimilary_words:

print(word,"=",w,s)

?

get_top_sim('case')

case = holder 0.8879926800727844

case = clamshell 0.887456476688385

case = tablet 0.8748524188995361

case = storage 0.8703626990318298

case = carrying 0.8672872185707092

case = hardcase 0.8580055236816406

case = carring 0.8558304309844971

case = seal 0.8552369475364685

case = cover 0.8538679480552673

case = stand 0.8476276993751526

通過word2vec,我們可以找出原始詞和最相似的10個單詞,然後我們統計origin 和substitute(原始詞和替代詞)在標題中的***現次數,通過這種挖掘,我們找到大量的候選詞對,這種詞通過人工review可以作為同義詞的候選。

對這種情況稍微做壹些擴展,我們就能得到同義query到同義query之間的對應關系。

統計分析上位詞,統計每個商品類目下的產品詞,出現次數top n的產品詞w,對應到商品的類目詞c,那麽w -> c很可能 就是壹個上位詞關系。

在維護詞表的時候,我們壹定不能忘記人工詞表。人工詞表的維護必須要有後臺工具。

1、在商品標題對應的索引詞中做同義詞擴展,當不用不管用同義詞的哪壹個來搜索的時候都可以搜索到。

2、在QueryProcess模塊中,對詞做同義詞擴展、做近義詞改寫,改寫出來的近義詞的權重要比原始詞的權重更小。在改寫中,我們還會遇到壹個問題,Q(分詞為w1,w2,w3)改寫成q1(w1,w2)和q2(w2,w3)的時候,我們會遇到q1和q2分別和Q如何計算相關性的問題。

?3、當query 做同義詞改寫的時候,需要壹些詞做context(上下文)。如“周董的新歌”可以修改為“周傑倫的新歌”,但是“周董的公司”就未必是周傑倫的公司了。

參考文獻:

1、 搜索引擎同義詞反饋機制百度搜索研發部

2、/p-1136208118.html

3、 面向檢索信息的同義詞挖掘

  • 上一篇:戲曲化妝造型與角色對人物形象塑造論文
  • 下一篇:早餐店利潤壹般是多少
  • copyright 2024吉日网官网