余弦定理

自己实现文本相似度算法(余弦定理)

喜你入骨 提交于 2020-03-03 23:28:36
最近由于工作项目,需要判断两个txt文本是否相似,于是开始在网上找资料研究,因为在程序中会把文本转换成String再做比较,所以最开始找到了这篇关于 距离编辑算法 Blog写的非常好,受益匪浅。 于是我决定把它用到项目中,来判断两个文本的相似度。但后来实际操作发现有一些问题:直接说就是查询一本书中的相似章节花了我7、8分钟;这是我不能接受…… 于是停下来仔细分析发现,这种算法在此项目中不是特别适用,由于要判断一本书中是否有相同章节,所以每两个章节之间都要比较,若一本书书有x章的话,这里需对比x(x-1)/2次;而此算法采用矩阵的方式,计算两个字符串之间的变化步骤,会遍历两个文本中的每一个字符两两比较,可以推断出时间复杂度至少为 document1.length × document2.length ,我所比较的章节字数平均在几千~一万字;这样计算实在要了老命。 想到Lucene中的评分机制,也是算一个相似度的问题,不过它采用的是计算向量间的夹角(余弦公式),在google黑板报中的: 数学之美(余弦定理和新闻分类) 也有说明,可以通过余弦定理来判断相似度;于是决定自己动手试试。 首相选择向量的模型:在以字为向量还是以词为向量的问题上,纠结了一会;后来还是觉得用字,虽然词更为准确,但分词却需要增加额外的复杂度,并且此项目要求速度,准确率可以放低,于是还是选择字为向量。

余弦定理的应用:基于文字的文本相似度计算

那年仲夏 提交于 2020-03-03 23:23:46
最近由于工作项目,需要判断两个txt文本是否相似,于是开始在网上找资料研究,因为在程序中会把文本转换成String再做比较,所以最开始找到了这篇关于 距离编辑算法 Blog写的非常好,受益匪浅。 于是我决定把它用到项目中,来判断两个文本的相似度。但后来实际操作发现有一些问题:直接说就是查询一本书中的相似章节花了我7、8分钟;这是我不能接受…… 于是停下来仔细分析发现,这种算法在此项目中不是特别适用,由于要判断一本书中是否有相同章节,所以每两个章节之间都要比较,若一本书书有x章的话,这里需对比x(x-1)/2次;而此算法采用矩阵的方式,计算两个字符串之间的变化步骤,会遍历两个文本中的每一个字符两两比较,可以推断出时间复杂度至少为 document1.length × document2.length ,我所比较的章节字数平均在几千~一万字;这样计算实在要了老命。 想到Lucene中的评分机制,也是算一个相似度的问题,不过它采用的是计算向量间的夹角(余弦公式),在google黑板报中的: 数学之美(余弦定理和新闻分类) 也有说明,可以通过余弦定理来判断相似度;于是决定自己动手试试。 首相选择向量的模型:在以字为向量还是以词为向量的问题上,纠结了一会;后来还是觉得用字,虽然词更为准确,但分词却需要增加额外的复杂度,并且此项目要求速度,准确率可以放低,于是还是选择字为向量。

《数学之美》读书笔记

为君一笑 提交于 2020-01-11 02:18:24
数学之美 一,文字和语言 数字和信息 语言研究的两种方向:语料,语法 犹太人抄圣经的校验数 二 自然语言处理 从规则到统计 基于统计的句法分析 三 统计语言模型 一个句子是否合理,取决于其存在的可能性。 统计语言的二元模型 马尔可夫链 高阶语言模型 零概率问题:古德图灵估计公式 四 谈谈中文分词 查字典法 统计语言模型方法: 分词后句子出现的概率最大 。 动态规划 维特比译码 英文手写体的识别 分词的层次概念 五 隐含马尔可夫模型 训练算法(鲍姆-韦尔奇算法) 解码算法(维特比算法) 自然语言处理、机器学习 六 信息的度量和作用 信息熵 条件熵 相关搜索 互信息 熵与条件熵的差异。解决词义的二义性(亚让斯基) 相对熵 衡量两个正值函数的相似性,度量两个随机分布的差异性,比较两词是否同义,比较文章是否同类,TF-IDF 七 贾里尼克和现代语言处理 bcjr算法 八 布尔代数和搜索引擎的索引 用一个很长的二进制表示一个关键字是否出现在每篇文献中。多个关键词就是求与。 九 图论和网络爬虫 广度优先和深度优先。 优先级队列 页面分析 URL提取,模拟脚本 hash记录 十 pagerank 一个网页的排名=所有指向这个网页的其他网页的权重之和。 矩阵相乘,迭代。 稀疏矩阵。 十一 确定网页和查询的相关性 tf-idf 词频/逆文本频率指数 关键词概率分布的交叉熵 十二 有限状态机和动态规划

兰伯特余弦定理(Lambert)

大兔子大兔子 提交于 2019-11-30 18:13:24
兰伯特余弦定理(Lambert) 1. 关于光照强烈度的思考 垂直照向平面的线比从侧面照向平面的线更加强烈(见下图)。 假设有一块很小的区域dA。当法线向量n与光照向量L平行时,区域dA受到的光线照射最多。随着n和L之间的夹角θ逐渐增大,区域dA受到的光线照射量会越来越少 (因为很多光线都无法照射到dA表面上了)。 2. 推导兰伯特(Lambert)余弦定理 们可以从这个概念中推导出一个函数,根据顶点法线和光照向量之间的夹角返回不同的光照强度。(注意,光照向量是从表面指向光源的向量;也就是,它与线的传播方向正好相反。)当顶点法线与照向量完全重叠时(即,它们的角度为0º时),该函数返回最大强度值;随着顶点法线与照向量之间的夹角逐渐增大,该函数返回的强度值会越来越小。当θ>90º时,说明光线照射的是物体背面,此时我们应该将强度设置为0。兰伯特(Lambert)余弦定理给出了上述函数的定义: f(θ) = max(cosθ,0) = max(L•n,0) 其中,L和n是单位向量。下图是f(θ)的曲线图。我们可以看到,随着θ的变化,强度在0.0到1.0(即,0%到100%)之间变化。 (当−2≤θ≤ 2时,函数f(θ) = max(cosθ,0) = max(L•n,0)的曲线图。注意,π/2≈1.57。) 来源: https://blog.csdn.net/sinat_24229853

深度学习基础 - 余弦定理

依然范特西╮ 提交于 2019-11-27 05:44:58
深度学习基础 - 余弦定理 flyfish A D = b cos ⁡ A , C D = b sin ⁡ A , A D=b \cos A, \\C D=b \sin A, A D = b cos A , C D = b sin A , B D = A B − A D B D = c − b cos ⁡ A B D=A B-A D \\ B D=c-b \cos A B D = A B − A D B D = c − b cos A 根据是 勾股定理 B C 2 = B D 2 + C D 2 = ( c − b cos ⁡ A ) 2 + ( b sin ⁡ A ) 2 = c 2 − 2 c b cos ⁡ A + b 2 整 理 得   a 2 = b 2 + c 2 − 2 b c cos ⁡ A \begin{aligned} B C^{2} &=B D^{2}+C D^{2} \\ &=(c-b \cos A)^{2}+(b \sin A)^{2} \\ &=c^{2}-2 c b \cos A+b^{2} \\ \mathbb{整理得} \, a^{2}=& b^{2}+c^{2}-2 b c \cos A \end{aligned} B C 2 整 理 得 a 2 = ​ = B D 2 + C D 2 = ( c − b cos A ) 2