word2vec相似度计算_干货|文本相似度计算
點擊上方“AI遇見機器學習”,選擇“星標”公眾號
原創干貨,第一時間送達
一、余弦測量相似度
為了定義兩個目標詞v和w之間的相似度,我們需要一個度量來取兩個這樣的向量并給出向量相似度的度量。到目前為止,最常見的相似性度量是向量之間夾角的余弦值。與NLP中使用的大多數向量相似性度量方法一樣,余弦也是基于線性代數中的點積算子,也稱為內積:
我們將看到,向量之間的相似性度量大多基于點積。點積是一種相似性度量,因為當兩個向量在相同的維度上有較大的值時,點積的值往往較高。或者,在不同維度上有0的向量正交向量的點積為0,表示它們之間的強烈差異。然而,作為相似性度量,這個原始的點積有一個問題:它偏愛長向量。向量長度定義為:
向量越長,點積越大,每個維度的值都越大。更頻繁的單詞有更長的向量,因為它們往往與更多的單詞同時出現,并且每個單詞都有更高的共現值。因此,對于頻繁出現的單詞,原始點積會更高。但這是個問題;我們想要一個相似性度量,它告訴我們兩個單詞有多相似,而不考慮它們的頻率。修改點積使向量長度標準化的最簡單方法是用點積除以兩個向量的長度。這個標準化的點積等于兩個向量夾角的余弦,從向量??與向量??的點積的定義出發:
因此,兩個向量??和??之間的余弦相似度度量可以計算為:
對于某些應用程序,我們通過將每個向量除以其長度對其進行預標準化,從而創建一個長度為1的單位向量。因此,我們可以計算一個單位向量從??除以??。對于單位向量,點積等于cos。余弦值的范圍從指向同一方向的向量的1,到正交向量的0,到指向相反方向的向量的-1。但是原始頻率值是非負的,所以這些向量的余弦從0到1。讓我們看看余弦如何計算單詞apricot或者digital在含義上更接近information,,只使用以下簡化表中的原始計數:
這個模型決定information,更接近digital而不是apricot,這個結果似乎是合理的。圖6.7顯示了可視化結果
余弦相似度的圖形演示,顯示三個單詞的向量(apricot, digital, and information)在二維空間中定義的單詞個數和數據量大且在鄰域內。注意digital與information之間的夾角小于apricot與information之間的夾角。當兩個向量越相似時,余弦值越大,但角度越小;當兩個向量夾角最小(0)時,余弦值最大(1)二、TF-IDF:向量中的權重項
圖6.5中的共生矩陣(co-occurrence matrix)用兩個單詞共現的原始頻率表示每個單元。 然而,事實證明,簡單的頻率不是單詞之間關聯的最佳衡量標準。 一個問題是原始頻率非常偏斜并且不具有很強的辨別力。 如果我們想知道“apricot”和“pineapple”共享什么上下文,而不是“digital”和“information”,,我們就不會從像the, it, or they這樣的詞語中得到良好的歧義,這些詞語經常與各種各樣的單詞一起出現,并且不能提供任何特定單詞的信息。 我們在圖6.3中也看到了莎士比亞語料庫; “good”一詞的維度在戲劇之間并不是很有區別; good只是一個常用詞,并且在每個劇中都有大致相同的高頻。
這有點自相矛盾。經常出現在附近的單詞(可能糖經常出現在杏體附近)比只出現一兩次的單詞更重要。然而,過于頻繁、無處不在的詞,比如“or”并不重要。我們如何平衡這兩個相互沖突的約束條件?tf-idf算法(這里是連字符,不是負號)是兩項的乘積,每一項都包含這兩種直覺中的一種:
1.第一個是術語頻率(Luhn,1957):文檔中單詞的頻率。?通常我們希望稍微降低原始頻率,因為在文檔中出現100次的單詞不會使該單詞與文檔含義相關的可能性高100倍。 因此,我們通常使用頻率的??,從而得出以下頻率權重一詞的定義:
因此,在文檔中出現10次的項的tf= 2,100次的tf= 3,1000次的tf=4,以此類推。
2.第二個因素用于對只出現在少數幾個文檔中的單詞給予更高的權重。限于少數文件的術語對于區分這些文件與集合的其他文件是有用的,在整個集合中頻繁出現的術語沒有那么有用。一個術語t的文檔頻率??就是它所包含的文檔數量。相反,術語的收集頻率是該詞在任何文檔的整個收集中出現的總次數。在莎士比亞的37部戲劇集中,考慮Romeo and action這兩個詞。這兩個詞的收集頻率相同,都是113次(它們在所有的戲劇中都出現了113次),但是文檔頻率非常不同,因為Romeo 只出現在一個戲劇中。如果我們的目標是找到關于romantic tribulations of Romeo的文獻,那么Romeo這個詞應該有很高的權重:
我們通過逆文檔頻率(inverse document frequency)或idf項權重來賦予這些更具辨別力的單詞如Romeo的重要性。idf是使用分數??定義的,其中N是集合中文檔的總數,?是第t項(詞t)出現的文檔數量(也就是包含該詞的文檔數量)。一個術語出現的文檔越少,這個權重就越大。1的最小權重分配給所有文檔中出現的術語。文檔的意義通常很清楚:在莎士比亞作品中,我們用戲劇;當處理像Wikipedia這樣的百科全書文章集合時,文檔是Wikipedia頁面;在處理報紙文章時,文檔是一篇文章。有時候,您的語料庫可能沒有適當的文檔劃分,為了計算idf,您可能需要自己將語料庫分解為文檔。由于許多集合中有大量文檔,因此通常使用log函數對該度量進行壓縮。由此得到逆文檔頻率(idf)的定義:
這里為了避免分母為0,通常要加1以下是莎士比亞語料庫中一些單詞的idf值,從僅在一部戲劇中出現的信息量非常大的單詞,如Romeo,到在幾部戲劇中出現的單詞,如salad or Falstaff,以及那些像fool或者常見的常見詞匯。 因為它們出現在good or sweet的所有37個劇中,所以完全沒有歧義性:
文檔d,??中詞t的值的tf-idf加權因此將術語頻率與idf組合:
圖6.8將tf-idf權重應用于圖6.2中的莎士比亞term-document矩陣。注意,與單詞good對應的維度的tf-idf值現在都變為0;由于這個詞出現在每個文檔中,tf-idf算法導致它在任何戲劇比較中被忽略。同樣地,37個劇中36個出現的fool這個詞的權重要低得多。
tf-idf加權是目前信息檢索中對共現矩陣進行加權的主要方法,在自然語言處理的許多其他方面也發揮著重要作用。
一個tf-idf加權術語文檔矩陣,用于莎士比亞四部戲劇中的四個單詞,使用圖6.2中的計數。注意,idf權重消除了普遍存在的單詞good的重要性,并極大地降低了幾乎普遍存在的單詞fool的影響。三、tf-idf向量模型的應用
綜上所述,我們目前描述的向量語義模型將目標單詞表示為與詞匯表中所有單詞對應的維數(長度|V|,詞匯量為20,000到50,000)的向量,這個向量也是稀疏的(大多數值為零)。每個維度的值是目標詞與相鄰上下文詞共同出現的頻率,由tf-idf加權。該模型通過對兩個單詞x和y的tf-idf向量求余弦來計算它們之間的相似性;高余弦,高相似性。這整個模型有時簡稱tf-idf模型,在加權函數之后。tf-idf模型的一個常見用途是計算單詞相似性,這是一種有用的工具,用于查找單詞釋義、跟蹤單詞含義的變化或自動發現不同語料庫中的單詞含義。例如,我們可以通過計算w和其他V—1單詞之間的余弦值,排序,并查看前10個單詞,找到與任何目標單詞w最相似的10個單詞。
tf-idf向量模型也可用于判斷兩個文檔是否相似。我們用文檔中所有單詞的向量表示文檔,并計算所有這些向量的質心。質心是均值的多維形式;一組向量的質心是一個單個向量,它與集合中每個向量的距離的平方和最小,給定k個詞向量??,質心文檔向量d為:
給定兩個文檔,我們可以計算它們的文檔向量d1和d2,并通過cos(d1;d2)估計兩個文檔之間的相似度,文檔相似性對各種應用程序都很有用;信息檢索,剽竊檢測,新聞推薦系統,甚至數字人文學科的任務,如比較不同版本的文本,看看彼此相似。
另一種表示詞向量的算法是word2vec和glove等
四、Visualizing Embeddings
可視化嵌入是幫助理解、應用和改進這些單詞含義模型的重要目標。但是我們怎樣才能把一個100維的向量形象化呢?將單詞w嵌入到一個空間中,最簡單的方法是列出與單詞w最相似的單詞,并根據它們的余弦值對單詞中的所有單詞進行排序。例如,使用Glove嵌入與“蛙”最接近的7個單詞是:青蛙、蟾蜍、litoria、細趾蟾科、rana、蜥蜴和eleutherodactylus,另一種可視化方法是使用聚類算法來顯示嵌入空間中哪些單詞與其他單詞相似的層次表示。右邊的例子使用了一些名詞嵌入向量的層次聚類作為可視化方法。然而,最常見的可視化方法可能是將一個單詞的100個維度投射到2個維度中。圖6.1顯示了一個這樣的可視化,使用的投影方法稱為t- SNE
來源:知乎,浪大大鏈接:https://zhuanlan.zhihu.com/p/60411472
推薦閱讀
干貨|學術論文怎么寫
資源|NLP書籍及課程推薦(附資料下載)
干貨|全面理解N-Gram語言模型
資源|《Machine Learning for OpenCV》書籍推薦
歡迎關注我們,看通俗干貨!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的word2vec相似度计算_干货|文本相似度计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在python中要表示一个空的代码块可以
- 下一篇: anaconda moviepy_Ana