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