一文講述常見的文本相似度計算方法

一文講述常見的文本相似度計算方法

一文講述常見的文本相似度計算方法

作者 | LU_ZHAO

出品 | AI科技大本營(ID:rgznai100)

一文讲述常见的文本相似度计算方法

前言

在自然語言處理中,我們經常需要判定兩個東西是否相似。

比如,在微博的熱點話題推薦那裡,我們需要比較微博之間的相似度,讓相似度高的微博聚集在一起形成一個簇,提出一個主題。

在問答系統中,比如說人工客服,我們需要提前準備好問題和一些答案,讓用戶輸入的問題與題庫中的問題進行相似度的比較,最後輸出答案。

在推薦系統中,我們需要提取一個用戶的所有物品,在根據這個物品找到對應的用戶群,比較兩個用戶之間的相似性,在進行相應的推薦(協同過濾)。

在對語料進行預處理的時候,我們需要給予文本的相似度,把相似度高的重複主題過濾掉。

總之,相似度是一種非常有用的工具,可以幫助我們解決很多問題。

一文讲述常见的文本相似度计算方法

任務目標

一般來說,是比較兩個物體(商品,文本)之間的相似度。這裡的相似度是一個抽象的值,它可以抽象成估計的百分比。

在推薦工程中,計算相似度是為了給用戶推送一定量的物品。即把所有的相似度排序,然後選出最高的那幾個物品。

人是很容易判斷出物品的相似度的,人們會在心裡有一個考量。那麼程序如何判斷呢?

如果是文本分析,它首先就要用到分詞技術,然後去掉不必要的詞(語氣詞,連接詞)。然後對詞給一個抽象的量表示權重,最後在用一些方法去統計出整體的相似度。

如果是其他的,可能首先也需要進行數據清洗的工作,留下那些關鍵的能夠表示物體特徵的部分,對這些部分定權值,再去估計整體。

  • 相似度計算關鍵組件

相似度計算方法有2個關鍵組件:

  • 表示模型

  • 度量方法

前者負責將物體表示為計算機可以計算的數值向量,也就是提供特徵。

後者負責基於前面得到的數值向量計算物體之間的相似度。

  • 距離的度量方式

歐幾里得距離

一文讲述常见的文本相似度计算方法

使用python計算歐式距離:

distance = numpy.linalg.norm(vec1 - vec2)

相似度為:

similarity = 1.0/(1.0 + np.linalg.norm(dataA - dataB))

  • 餘弦距離

餘弦距離的計算方式:

一文讲述常见的文本相似度计算方法

與歐氏距離的區別:

  1. 歐氏距離能夠體現個體數值特徵的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,如使用用戶行為指標分析用戶價值的相似度或差異。

  2. 餘弦距離更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統一的問題(因為餘弦距離對絕對數值不敏感)

  • Jacard相似度

一文讲述常见的文本相似度计算方法

distance = 1 / similarity

思想非常簡單,兩個集合共有的元素越多,二者越相似。

  • 漢明距離

兩個字碼中不同位值的數目稱為漢明距離。

  1. Hamming distance = 0 (ai = bi)

  2. Hamming distance = 1 (ai != bi)

最後統計相加。

最小編輯距離是一種經典的距離計算方法,用來度量字符串之間的差異。它認為,將字符串A不斷修改(增刪改)、直至成為字符串B,所需要的修改次數代表了字符串A和B的差異大小。當然了,將A修改為B的方案非常多,選哪一種呢?我們可以用動態規劃找到修改次數最小的方案,然後用對應的次數來表示A和B的距離。

本文來源 CSDN 博客,作者「LU_ZHAO」,原文https://blog.csdn.net/LU_ZHAO/article/details/104860830

【end】



有獎徵文


一文講述常見的文本相似度計算方法
  • 如何用Jupyter Notebook製作新冠病毒疫情追蹤器?

  • 萬人馬拉松賽事,人臉識別系統如何快速、準確完成校驗?

  • 突破性能極限,阿里雲神龍最新ASPLOS論文解讀

  • DevOps 轉型時如何安全融入?對企業產出有何影響?2019年 DevOps 最新現狀研究報告解讀

  • 百萬人學AI:CSDN重磅共建人工智能技術新生態

  • 漫畫:如何給女朋友解釋什麼是熔斷?

你點的每個“在看”,我都認真當成了AI


分享到:


相關文章: