1. 程式人生 > >文件排序--相似度模型--VSM

文件排序--相似度模型--VSM

說明:文章內容來源於課程視訊和課程ppt。我只學習了課程沒有做習題。文章不是翻譯,是我對課程的理解。

 上文提到文件排序函式是TR的核心。文件排序函式的實現有幾種思路,其中一種是基於相似度的模型。這種模型具體是用空間向量模型(Vector Space Model)實現。這篇文章就介紹VSM。

VSM概念

什麼是VSM

 
 VSM定義了兩點。
 第一,用詞向量(term vector)來表示查詢語句、表示文件。英文中的term vector,我們翻譯為詞向量。但是這裡的“詞”並不是指漢語中的一個詞,具體含義是:基本概念,可以是一個字、一個詞、一個短語。每個詞表示一個維度,N個詞就可以定義N維空間。如上圖所示,programming,libarary,presidential,分別定義了三個維度。查詢語句的向量表示:

q=(x1,x2,...xN),文件的向量表示:d=(y1,y2,...yN)
 第二,查詢語句和文件的相關度正比於查詢語句和文件的相似度:relevance(q,d)similarity(q,d)=f(q,d)

VSM沒有定義的

 1 怎麼定義或者說怎麼選擇term。只說term是文件集中的基本概念,並未指明什麼可以作為term。
 2 向量的表示。用什麼值來計算查詢向量和文件向量。
 3 相似度怎麼計算。
 基於以上幾點說VSM其實是一個框架frame。在實踐中有好多版本的實現。繼續往下看。

VSM實現

 來源於ppt的例子。
 query=”news about presidential campaign”
 d1:”… news about …”
 d2:”… news about organic food campaign…”
 d3:”… news of presidential campaign …”
 d4:”… news of presidential campaign … … presidential candidate …”
 d5:”… news of organic food campaign… campaign…campaign…campaign…”

 在這個例子中很理想的排序大概應該是:d4,d3。d1,d2,d5其實是不相關文件。

簡單實現

 BOW+bit-vector+dotproduct 這是一個最簡單的實現。
 1 用文件中的每一個詞定義一個維度。稱為詞袋模型(Bag of Word=BOW)。
 2 用Bit-Vector 表示向量。如果詞出現則記為1,否則為0。xi,yi{0,1}
 3 相似度通過點積(dot product)計算。
 最終表示
 q=(x1,x2....yn),xi{0,1}
 d=(y1,y2...yn),yi{0,1}
 sim(q,d)=x1y1+x2y2+....+xNyN=i=1Nxiyi
 
 計算一下例子。
 V= {news, about, presidential, campaign, food …. }
 q= (1, 1, 1, 1, 0, …)
 d1= (1, 1, 0, 0, 0, …)
 d2= (1, 1, 0, 1, 0, …)
 d3= (1, 0, 1, 1, 0, …)
 …
 f(q,d1)=1*1+1*1+0…=2
 f(q,d2)=1*1+1*1+0+1*1+…=3
 …
 本演算法中sim(q,d)函式的實質就是表示有多少個不同的查詢詞出現在文件中。
 在d2,d3,d4文件中各出現了3次,值為3,;在d1,d5文件中各出現了2次,值為2。

進階實現

 BOW+term frequency+dotproduct
 問題:d4中 “presidential ”的次數要比d2多,應該排在前面才對。
 解決策略就是使用詞頻這個資訊。
 最終表示
 q=(x1,x2....yn),xi是詞wi在查詢語句中出現次數
 d=(y1,y2...yn),yi是詞wi在文件中出現次數
 sim(q,d)=x1y1+x2y2+....+xNyN=i=1Nxiyi
 
 計算一下例子。
 f(q,d4)=1*1+1*0+1*2+1*1+0+…=4
 f(q,d2)=….
 ….
 
 

TD-IDF

 BOW+TF-IDF+dotproduct
 
 
 問題:d2與d3,雖然都命中3個詞,但是顯然命中presidential比命中about得分要高。presidential含有更重要的資訊嘛。
 解決策略:使用逆文件頻率IDF,在越多文件中出現,權重越低。
 

相關推薦

排序--相似模型--VSM

說明:文章內容來源於課程視訊和課程ppt。我只學習了課程沒有做習題。文章不是翻譯,是我對課程的理解。  上文提到文件排序函式是TR的核心。文件排序函式的實現有幾種思路,其中一種是基於相似度的模型。這種模型具體是用空間向量模型(Vector Space Mo

gensim的LSI模型來計算相似

from gensim import corpora,models,similarities dictionary=corpora.Dictionary.load('/tmp/deerwester.dict') corpus=corpora.MmCorpus('/tmp/d

利用Lucene編寫的向量相似計算程式

import java.io.IOException; import org.apache.lucene.analysis.WhitespaceAnalyzer;import org.apache.lucene.document.Document;import org.apa

相似(2)--最小雜湊簽名

           接著上一篇的部落格繼續下去,這篇部落格主要講下最小雜湊簽名的東西。           對於上篇部落格中提到的shingle,可以說是在壓縮資料量的基礎上又儘可能保留了源文件的特徵,以便於後面對不同的文件進行相似度比較。但是我們會發現,shingle集

計算機如何理解事物的相關性-相似判斷

> **公號:碼農充電站pro** > **主頁:** 生活中,我們經常會對比兩個事物的**相關性**,也可以叫做**相似度**。 - 如果一件事物與另一件事物的相似度比較高,那這兩件事物的相關性就比較大。 - 如果一件事物與另一件事物的相似度比較低,那這兩件事物的相關性就比較小。 人類會根據自己的經

Python管理、亂碼及對passwd排序

() oss ora nco ges pool doc post game 1.讀寫文件讀文件: f = open("1.txt") text = f.readlines() print(text)寫文件: f = open(

shred:減少刪除的還原

刪除文件 img 分享圖片 文件的 com src 文件 數據還原 安全 較為安全的刪除文件,降低數據還原率 shred -zvu -n5 準備刪除的文件名 shred:減少刪除文件的還原度

機器學習 Python scikit-learn 中文(7)模型選擇: 選擇合適的估計器及其引數

模型選擇: 選擇合適的估計器及其引數 與官方文件完美匹配的中文文件,請訪問 https://www.studyai.cn Score, 和 cross-validated scores 交叉驗證生成器 網格搜尋與交叉驗證估計器 網格搜尋 自帶交叉驗證的估計器 模型選擇: 選擇

SuperMap iMobile 8C 技術 ——載入傾斜攝影模型

作者:博哥 北京超圖軟體股份有限公司 中國•北京 目 錄 1 概述 2 操作流程 2.1 生成配置檔案 2.1.1 使用說明 2.1.2 操作步驟 2.2 壓縮紋理 2.2

【Scikit-Learn 中文】神經網路模型(無監督)- 無監督學習

2.13.1.3. 隨機最大似然學習 在 BernoulliRBM 函式中實現的學習演算法被稱為隨機最大似然(Stochastic Maximum Likelihood (SML))或持續對比發散(Persistent Contrastive Divergence (PCD))。由於資料的似然函式的形

排序小筆記

long value sta ren mar new arr buffer water 目的為從文件中讀取數據做排序: 結果: 入參 A文件: B文件: 代碼: //存活動id號 List<String> acionlist = ne

java架構相關-來自百雲盤-叫我雷鋒網

/電子書程式設計類/java高手真經/Java高手真經(系統架構卷):Java Web系統設計與架構.pdf /學習資料/C#/Java高手真經_系統架構卷:JAVA_WEB系統設計與架構

Apache Flink 官方翻譯之程式設計模型

抽象層次Flink 能夠為流式計算或批處理應用提供多種層次的抽象介面。最低階的抽象介面是狀態化的資料流介面。這個介面是通過 ProcessFunction 整合到 資料流 API 中的。此類介面讓使用者可以使用連續的容錯狀態,並且可以不受限制地處理多個數據流中的

[NLP]使用LDA模型計算相似

定義 wiki關於lda的定義: 隱含狄利克雷分佈簡稱LDA(Latent Dirichlet allocation),是一種主題模型,它可以將文件集中每篇文件的主題按照概率分佈的形式給出。同時它是一種無監督學習演算法,在訓練時不需要手工標註的訓練集,需要的

Doc2Vec計算句子向量、求文字相似

注:本文主要是記錄自己常用的關於Doc2Vec的簡單程式程式碼。因此不做過多的解釋,直接寫出程式碼,如有問題可以討論交流。 一、doc2vec求文件向量 import sys import numpy as np import gensim from gensim.mod

用docsim/doc2vec/LSH比較兩個之間的相似

在我們做文字處理的時候,經常需要對兩篇文件是否相似做處理或者根據輸入的文件,找出最相似的文件。 如需轉載,請註明出處。 幸好gensim提供了這樣的工具,具體的處理思路如下,對於中文文字的比較,先需要做分詞處理,根據分詞的結果生成一個字典,然後再根據字典把原文件轉化成向量。

如何計算文字詞向量之間的相似----一些概念與方法

在計算文字相似項發現方面,有以下一些可參考的方法。這些概念和方法會幫助我們開拓思路。 相似度計算方面 Jaccard相似度:集合之間的Jaccard相似度等於交集大小與並集大小的比例。適合的應用包括文件文字相似度以及顧客購物習慣的相似度計算等。 Shingling

計算兩篇的餘弦相似(tfidf)

# -*- coding:utf-8 -*- """ @author: Linlifang """ import os import jieba import sys import re import string from sklearn.feature_extracti

NLP計算相似之doc2vec

import gensim outp1 = 'D:\python_noweightpathway\TIA\docmodel' file = open(u'D:\python_noweightpathway\TIA\TIAxmmc.txt', encoding=

NLP計算相似之TF-IDF

#!/usr/bin/python # -*- coding: utf-8 -*- import numpy import os from sklearn import feature_extraction from sklearn.feature_extr