one-hot映射时,如何选取TOPN作为每一个词承载的word2vec的信息?

我们已经知道,对于这种例子:

怎么绑定手机号?

怎么关联手机号?

他们的相似度取决于绑定和关联这两个词如何相似。

#取top2词的相似度
vec_i = np.array([1, 0.73, 0.71, 0])
vec_j = np.array([0.71, 0.73, 1, 0.71]) dist = linalg.norm(vec_i - vec_j)
sim = 1.0 / (1.0 + dist) print(sim)
0.549468959038795 #取top1词的相似度
vec_i = np.array([ 1, 0.73, 0 ])
vec_j = np.array([ 0.71, 0 , 1 ] )
dist = linalg.norm(vec_i - vec_j)
sim = 1.0 / (1.0 + dist) print(sim)
0.44021580019602347 #取top3词的相似度
vec_i = np.array([ 1, 0.73, 0.71, 0.69, 0])
vec_j = np.array([0.71, 0.668, 1, 0, 0.71])
dist = linalg.norm(vec_i - vec_j)
sim = 1.0 / (1.0 + dist) print(sim)
0.48229348920534326 在这种情况下,选取TOP2相似度是最高的,可以很好的近似匹配。思想是,在取的TOPN尽可能少的情况下,让TOPN里,相同的词出现的尽可能多,有助于提高相似度。可是那对于不相似的句子呢? 我们应该让相似的句子,相似度更高,不相似的句子,相似度更低,拉开差距。 方案一:按照原来的TOP3+similarity 怎么 怎样 如何 怎么样 支付 付款 微信支付 收款 打印 打 印 打出
怎么支付 [ 1, 0.85, 0.83, 0.70, 1, 0.77, 0.72, 0.67, 0, 0, 0, 0]
如何支付 [0.83, 0.87, 1, 0.63, 1, 0.77, 0.72, 0.67, 0, 0, 0, 0]
如何打印 [0.83, 0.87, 1, 0.63, 0, 0, 0, 0, 1, 0.78, 0.69, 0.69] 怎么支付-如何支付=0.7992345674654612
如何支付-如何打印=0.3064740995892663
怎么支付-如何打印=0.3051741090737826 方案二:如果两个句子之间,映射完之后有相同词的,相似度保留,如果没有相同词,那么就令那个词为1,这样可以有效的拉开相似度句子,和不相似的句子之间的相似度差距。
              怎么     怎样     如何    怎么样    支付    付款    微信支付     收款     打印     打    印    打出
怎么支付      [ 1,     0.85,   0.83,   0.70,    1,     0.77,  0.72,      0.67,    0,      0,    0,    0]
如何支付      [0.83,    0.87,    1,    0.63,    0,       0,     0,        0,      1,      1,     1,   1]
(这是第一对)
               怎么     怎样     如何    怎么样    支付    付款    微信支付     收款     打印     打    印    打出

如何支付        [0.83,    0.87,    1,    0.63,     1,       1,     1,        1,    0,      0,    0,    0]
如何打印        [0.83,    0.87,    1,    0.63,    0,        0,     0,        0,     1,      1,    1,   1]

             怎么     怎样     如何    怎么样    支付    付款    微信支付     收款     打印     打    印    打出

怎么支付      [ 1,     0.85,   0.83,   0.70,    1,     0.77,  0.72,      0.67,    0,      0,    0,    0]
如何打印      [0.83,    0.87,    1,    0.63,    0,        0,     0,        0,     1,    0.78,  0.69,   0.69]

怎么支付-如何支付=0.7992345674654612
如何支付-如何打印=0.2612038749637414
怎么支付-如何打印=0.26044652136360963
结果:明显的降低了不同意思的句子之间的差距,对于不同的句子之间,进行了相似度对比增强。对于原本就很相似的句子,影响不大。

不过如果我们要这么做,需要多做一步,就是对于已经生成的两个句子向量做比对,将没有同时出现的词,做1值处理。
而且具体效果,需要我们实际测试才知道。

one-hot句子向量 对比度增强的更多相关文章

  1. opencv----彩色图像对比度增强

    图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法. 直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法. 直方图拉伸是通过对比度拉伸对直方图进行调整,从而“ ...

  2. ISP图像调试工程师——对比度增强(熟悉图像预处理和后处理技术)

    经典对比度增强算法: http://blog.csdn.net/ebowtang/article/details/38236441

  3. (二)OpenCV-Python学习—对比度增强

    ·对于部分图像,会出现整体较暗或较亮的情况,这是由于图片的灰度值范围较小,即对比度低.实际应用中,通过绘制图片的灰度直方图,可以很明显的判断图片的灰度值分布,区分其对比度高低.对于对比度较低的图片,可 ...

  4. 基于Doc2vec训练句子向量

    目录 一.Doc2vec原理 二.代码实现 三.总结   一.Doc2vec原理 前文总结了Word2vec训练词向量的细节,讲解了一个词是如何通过word2vec模型训练出唯一的向量来表示的.那接着 ...

  5. opencv —— equalizeHist 直方图均衡化实现对比度增强

    直方图均匀化简介 从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内.这就导致了图片的强弱对比不强烈. 直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的 ...

  6. SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。

    这是一篇2010年比较古老的文章了,是在QQ群里一位群友提到的,无聊下载看了下,其实也没有啥高深的理论,抽空实现了下,虽然不高大上,还是花了点时间和心思优化了代码,既然这样,就顺便分享下优化的思路和经 ...

  7. 对比度增强(二):直方图正规划与伽马变换 cv.normal()函数使用及原理

    直方图正规化: 图像为I,宽为W,高为H,I(r,c)代表I的第r行第c列的灰度值:输出图像记为O,为使得输出图像的灰度值在[Omin,Omax]范围里,可用如下公式:                 ...

  8. 通过灰度线性映射增强图像对比度实现PS中的色阶

    通过灰度线性映射增强图像对比度 Halcon中如何通过灰度线性映射增强图片对比度呢?不急,我先讲点其他的. 如果你用过Photoshop,那么想必对增强图像的对比度很熟悉.在Photoshop中,我们 ...

  9. 将句子表示为向量(上):无监督句子表示学习(sentence embedding)

    1. 引言 word embedding技术如word2vec,glove等已经广泛应用于NLP,极大地推动了NLP的发展.既然词可以embedding,句子也应该可以(其实,万物皆可embeddin ...

随机推荐

  1. WinForm资源管理器开发(TreeView&ListView)

    在C# WinForm开发当中,有三大View控件值得深入应用,分别为DataGridView.ListView.TreeView.如果这三大控件能够熟练的应用,其它的控件也就基本没有问题.所以这篇博 ...

  2. A - 取(m堆)石子游戏

    m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也 ...

  3. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  4. LeetCode_7.Reverse Integer

    问题 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Ex ...

  5. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

  6. Vue SSR配合Java的Javascript引擎j2v8实现服务端渲染1概述

    原文地址 http://www.terwergreen.com/post/vue-ssr-j2v8-1.html 初步实现方案探索(Node环境) // 第 1 步:创建一个 Vue 实例 const ...

  7. 优化网站设计(二):使用CDN

    前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个 ...

  8. 可执行代码(Executable Code)目标代码(object code)

    小结: 1.可执行代码(Executable Code)是指将目标代码(object code)连接后形成的代码,简单来说是机器能够直接执行的代码. https://baike.baidu.com/i ...

  9. FW--tomcat bi-laternal https and keytool

    说明:按照本文中以下内容配置https,猫server.xml中clientAuth=false,单向验证的时候,网页中可以访问:当clientAuth=true进行双向验证的时候,网页中不可以访问: ...

  10. [daily][editer] 二进制编辑工具 hyx

    用了众多之后,终于发现了一个好用的二进制编辑工具: hyx https://yx7.cc/code/ https://en.wikipedia.org/wiki/Comparison_of_hex_e ...