空间向量模型lucene

把一篇文档看作是一系列词元的集合,每个词元都有一个权重,如下:

Document A= {termX, termY, termZ …… termN}

Document B= {termX, termY, termZ …… termN}

DocumentVector = {weight1, weight2, weight3 …… weightN}

weigh为每个分词的映射到单位矩阵的,长度。这样就把文档放到一个N维的空间向量中(矩阵)【所有文档分成N个词元,就N维向量矩阵;其中文档D在m坐标上的映射为文档D中的m词元的权重】得到向量坐标系,对文档信息的检索,就转化为求两个向量之间的夹角大小

余弦相似性是通过测量两个向量内积空间的夹角的余弦值来判定两个向量之间的相似程度。余弦值越接近1,其夹角越接近0,表示两个向量越相似。如图:
                  
两个向量间的余弦值可以根据欧几里得点积和量级公式推导:
 (9)
由式(9)以及理论,我们可以得出:
 (10) 
通过计算查询向量与每一个向量的夹角余弦值就可得到该查询字符串与索引中的记录的相关度 。
查询词后面加^N来设定此查询词的权重,默认是1,如果N大于1,则说明此查询词更重要,如果N小于1,则说明此查询词更不重要。^N代表每个词在矩阵中的长度大小。(用矩阵代表坐标,是为了个人扩展思路,给个传送门http://blog.csdn.net/myan/article/details/1865397)

时间: 2024-11-10 14:37:20

空间向量模型lucene的相关文章

使用 TF-IDF 加权的空间向量模型实现句子相似度计算

使用 TF-IDF 加权的空间向量模型实现句子相似度计算 字符匹配层次计算句子相似度 计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算法,来检查两个句子所对应的字符串的字符相似程度.比如单纯的进行子串匹配,搜索 A 串中能与 B 串匹配的最大子串作为得分,亦或者用比较常见的最长公共子序列算法来衡量两个串的相似程度,使用编辑距离算法来衡量等. 上述基于字符匹配层次的算法一定程度上都可以计算出两个句子的相似度,不过他们只是单纯的从字符

现代信息检索 -- 空间向量模型

王老师的现代信息索引讲的很精彩,但是三节联排的课程总让我的注意力没办法太集中.在这里记录一下知识,也但是回顾了. 支持布尔查询的索引办法,在给定一个查询的情况下,可能匹配到的结果非常的多,那么对匹配结果(文档)进行评分或者相关权重分析,就显得尤为重要. 一. 参数化索引和域索引 通常的文档都有额外的结构(title,author,content,etc.) ,这些也称为元数据.对于这些检索系统可以进行参数化索引,从而完成参数化搜索,类似 “查询由William Shakespeare 于 160

[从头学数学] 第191节 空间向量与立体几何

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼. 这次要研究的是[空间向量与立体几何]. 正剧开始: 星历2016年04月23日 11:00:22, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[空间向量与立体几何]. <span style="font-size:18px;">#例5 def dot(a, b): if (len(a) >= 3): return a[0]*b[0] +a[1]*b[1

机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv[&#39;sky&#39;]输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count=min_count, window=window, sample=sample) 参数说明:corpus_token已经进行切分的列表数据,数据格式是list of list , size表示的是特征向量的维度,即映射的维度, min_count表示最小的计数词,如果小于这个数的词,将不进行统计,

词袋模型(BOW,bag of words)和词向量模型(Word Embedding)概念介绍

例句: Jane wants to go to Shenzhen. Bob  wants to go to Shanghai. 一.词袋模型 将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的.例如上面2个例句,就可以构成一个词袋,袋子里包括Jane.wants.to.go.Shenzhen.Bob.Shanghai.假设建立一个数组(或词典)用于映射匹配 1 [Jane, wants, to, go, Shenzhen, Bob, Shanghai] 那么上面两个例句就可

基于word2vec的文档向量模型的应用

基于word2vec的文档向量模型的应用 word2vec的原理以及训练过程具体细节就不介绍了,推荐两篇文档:<word2vec parameter learning explained>.和<word2vec中的数学>. 在<word2vec中的数学>中谈到了训练语言模型的一些方法:比如n-gram和神经网络.在使用神经网络训练语言模型时得到的"副产物",就是word2vec词向量.基于神经网络训练语言模型有2种方案:cbow和skip-gram,

hdu 5206 Four Inages Strategy (空间向量)

中文题目:<四象阵法> 判断空间四点能否组成正方形. 一次AC,好激动~ #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <cmath> typedef long long ll; using namespace std; struct point{ int x,y,z; }; bool isequal(poi

[C++][代码库]Vector3空间向量类

本文用C++实现一个简单的Vector3类的功能,暂时有的功能是: 1 + - * /算术运算 2 向量的数量积,又叫:点乘 3 向量的向量积,又叫:叉乘 4 向量单位化(normalization) //Vecotr3.h #pragma once extern const double uZero; class Vector3 { float x, y, z; public: Vector3():x(0), y(0), z(0){} Vector3(float x1, float y1, f

空间向量类Vector3的C++实现

提要 两年前的我写下了这篇文章 - 向量类的实现.现在看来,这代码真是略显丑陋. 于是,重新写吧. 参照了一下Unity3d 的Vector3类的接口.话不多说,上代码. 编译器:gcc 4.6.3 代码清单 vector3.h #ifndef VECTOR3_H #define VECTOR3_H #include <math.h> #include <assert.h> #include <iostream> #define PI 3.14159265 using