1. BERT 语义相似度 BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的.模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation. 有一个这样的场景,QA对话系统,…
1,概述 在NLP中孪生网络基本是用来计算句子间的语义相似度的.其结构如下 在计算句子语义相似度的时候,都是以句子对的形式输入到网络中,孪生网络就是定义两个网络结构分别来表征句子对中的句子,然后通过曼哈顿距离,欧式距离,余弦相似度等来度量两个句子之间的空间相似度. 孪生网络又可以分为孪生网络和伪孪生网络,这两者的定义: 孪生网络:两个网络结构相同且共享参数,当两个句子来自统一领域且在结构上有很大的相似度时选择该模型: 伪孪生网络:两个网络结构相同但不共享参数,或者两个网络结构不同,当两个句子结构…
更新中 最近更新时间: 2019-12-02 16:11:11 写在前面: 本人是喜欢这个方向的学生一枚,写文的目的意在记录自己所学,梳理自己的思路,同时share给在这个方向上一起努力的同学.写得不够专业的地方望批评指正,欢迎感兴趣的同学一起交流进步. 一.背景 二.基本概念 三.语义相似度计算方法 四.参考文献 一.背景 在很多NLP任务中,都涉及到语义相似度的计算,例如: 在搜索场景下(对话系统.问答系统.推理等),query和Doc的语义相似度: feeds场景下Doc和Doc的语义相似…
在NLP领域,语义相似度的计算一直是个难题:搜索场景下query和Doc的语义相似度.feeds场景下Doc和Doc的语义相似度.机器翻译场景下A句子和B句子的语义相似度等等.本文通过介绍DSSM.CNN-DSSM.LSTM-DSSM等深度学习模型在计算语义相似度上的应用,希望给读者带来帮助. 1. 背景 以搜索引擎和搜索广告为例,最重要的也最难解决的问题是语义相似度,这里主要体现在两个方面:召回和排序. 在召回时,传统的文本相似性如 BM25,无法有效发现语义类 query-Doc 结果对,如…
https://cloud.tencent.com/developer/article/1005600…
1. 自然地使用[CLS] 2. cosine similairity 3. 长短文本的区别 4. sentence/word embedding 5. siamese network 方式 1. 自然地使用[CLS] BERT可以很好的解决sentence-level的建模问题,它包含叫做Next Sentence Prediction的预训练任务,即成对句子的sentence-level问题.BERT也给出了此类问题的Fine-tuning方案: 这一类问题属于Sentence Pair C…
本文主要介绍了C++11中的移动语义与右值引用, 并且对其中的一些坑做了深入的讨论. 在正式介绍这部分内容之前, 我们先介绍一下rule of three/five原则, 与copy-and-swap idiom最佳实践. 本文参考了stackoverflow上的一些回答. 不能算是完全原创 rule of three/five rule of three是自从C++98标准问世以来, 大家总结的一条最佳实践. 这个实践其实很简单, 用一句话就能说明白: 析构函数, 拷贝构造函数, =操作符重载…
纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接口: namespace Easy.RuleEngine { public interface IRuleManager { bool IsTrue(string expression); bool IsTrue(string expression, object workContext); obj…
目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Transformer:超越LSTM 七.OpenAI Transformer:为语言建模预训练一个Transformer解码器 八.在下游任务中使用迁移学习 九.BERT:从解码器到编码器 MLM语言模型 两个句子的任务 解决特定任务的模型 用于特征提取的BERT 十.把BERT牵出来遛一遛 本文翻译…
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到位,如有异议欢迎留言提出.本系列会不断更新,结合大家的问题以及这里的错误和疏漏,欢迎大家留言 JMM 相关文档: Java Language Specification Chapter…
1.1 语义标签对于我们并不陌生,如<p>表示一个段落.<ul>表示一个无序列表<h1> ~ <h6>表示一系列标题等,在此基础上HTML5增加了大量更有意义的语义标签,更有利于搜索引擎或辅助设备来理解HTML页面内容. 传统的做法,我们通过添加类名,Html页面具有语义化,但是不具有通用性. Html5则是通过新增语义标签的形式来解决这个问题,例如<header></header>.<footer></footer…
html5是html最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.目标是取代1999年所制定的HTML 4.01和XHTML 1.0标准,以期能在互联网应用迅速发展的时候,使网络标准达到符合当代的网络需求.广义论及HTML5时,实际指的是包括HTML.CSS和JavaScript在内的一套技术组合.它希望能够减少网页浏览器对于需要插件的丰富性网络应用服务(Plug-in-Based Rich Internet Application,RIA),例如:Adobe Flash.…
1. 背景 网站上爬取了部分关于影视的百度知道QA,为了后续提高影视的搜索效果,需要基于百度知道QA的答案抽取相关的影视信息. 2. 流程 目前已有基础的媒资视频库信息,基于媒资视频库中的视频名称,构建分词字典,结合使用AC双数组,然后针对百度的QA进行分词.针对分词后的结果,可以结合视频热度与评分进行筛选. 3. 代码实现 (1) 基于文本(格式为每行一条视频名称),结合AC双数组,构建分词 package com.test.model.act; import com.google.commo…
很多人都在做前端,当然这里包括很多新手,也许在新手的想法就是在做布局的时候不要用font标签之类的就算是web标准了,这样一来,造成如今网上“div泛滥”,一看源文件,霍,除了div没其他标签了. 这里,我可以很负责的告诉大家,这不叫web标准,这叫“div+css”.名副其实的“div+css”.也许有人会说,我用“div+css”做出来的页面完全表达出设计图的意图,浏览器都兼容,没有任何问题.的确,你这样做出来的页面看起来是没任何问题,注意,这里说的是“看起来没任何问题”,仅此而已. 人是可…
攻击 supporting facts 的修改:字符调换,替换词(用空格embedding或近同义词,变形词等) 还有针对question的攻击. 梯度下降,在embediing上做攻击,如何decode是个问题. 防御 如果把大量对抗样本加到训练样本一起训练不够显示,作用不是很大,随时都可能会有新的对抗样本. 2018 Tackling Adversarial Examples in QA via Answer Sentence Selection这篇讲的是先筛选候选句,再进行推理回答. 20…
这只是我的个人观点,如有错误,希望你可以指出. 首先英文原版 中文译版 我觉得“不需要”还会让人产生误解,应该译为不一定要. 很多时候会被断章取义地理解,我们一定要有“不一定”,“可能”的意识,下面给出一段代码演示,亲测. static boolean close=false; public static void main(String[] args) throws InterruptedException { new Thread(()->{ //且称线程1 int count=1; whi…
NLP (Natural Language Processing) 是人工智能(AI)的一个子领域.自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一(来自百度百科). 其中中文更是不好处理.下面将分析中文语句中的时间的识别:time NLP 输入一句话,能识别出话里的时间.下面2种简单的实现方法.   1.单词的识别 这种比较简单,比如,今天,明天,下周,下月,明年,昨天,上周,上月,去年等.原理:匹配到明天就根据今天的时间天数加1. /** * 常用时间枚举 * * @au…
1.基本类型都是复制语义的 fn main(){ let a = 123; { #[allow(unused_variables)] let b = a; //如果是移动语义,那么后续的a将不再有效 } println!("{:?}", a); //编译成功,说明a是复制语义 } 2.非基本类型是移动语义 fn main(){ let a = String::from("abc"); { #[allow(unused_variables)] let b = a; /…
参考:http://techblog.youdao.com/?p=915#LinkTarget_699word2vector是一个把词转换成词向量的一个程序,能够把词映射到K维向量空间,甚至词与词之间 的向量操作还能和语义相对应.如果换个思路,把词当做feature,那么word2vec就可以把feature映射到K维向量空间, 一.什么是 word2vec? 采用的模型有 CBOW(Continuous Bag-Of-Words,即连续的词袋模型)和 Skip-Gram 两种 word2vec…
在使用R的时候会发现R对CPU的利用率并不是很高,反正当我在使用R的时候,无论R做何种运算R的CPU利用率都只有百分子几,这就导致一旦计算量大的时候计算时间非常长,会给人一种错觉(R真的在计算吗?会不会我的程序死掉了?).今天,我看到了一篇博客介绍的方法,迫不及待的尝试了一下,只能说:太牛逼了!下面是我的测试截图: 前:…
c语言中,数据类型有short,int,long,char,float,double,然后除了浮点型只有 有符号数(signed)外,其他的数据类型都分为有符号(signed)和无符号(unsigned).这些数据类型都有一个取值范围,下面我就通过char类型来表达我对数据类型取值范围的计算的理解. 大家都知道 char 类型是1个字节=8个二进制位,其取值范围是:-2^7~2^7-1:那么这个取值范围是怎么计算得来的呢,首先我们说说,在计算机中,一个变量的最高位表示符号位,规定0代表整数,1代…
大家都知道现在上下班实行打卡制,制作考勤的人员需要对你上下班的时间,计算出上下班的状态,比如:迟到.早退.加班.正常等.下面为您介绍一个“帮手”.     1.打开Excel文档.如下图       2.将鼠标定位在你要输入函数的单元格F2中,然后选择菜单栏里的“公式”,在常用菜单栏里选择“插入函数”.如下图 3.然后弹出插入函数对话框,再选函数中找到“IF”函数,这时可以看到下面对其函数的具体介绍,再点击“确定”.如下图 4.这时我们对函数参数进行设置(这时IF函数中要套用“TIME”函数),…
接了一个任务,要处理DEM原始数据中的高程异常值,如图中的异常亮点. 想了一下,以前处理过建筑物附近的DEM铲平,那么高程异常值应该如何处理呢? 显然直接铲平时不太合理的,需要利用异常值周围的高程进行内插(没有高精度的DEM). 思路如下: 1.首先建立一个面图层,手工圈出异常值的区域. 2.建立一个点图层,在异常值框选区周围采样一些点.获取DEM高程用“添加表面信息”工具. 3.根据点和面图层进行插值处理,利用反距离权重方法,哪种插值方法好需要斟酌,使用局部内插方法. 如果有高精度的DEM,这…
JS中String类型转换Date类型 1.比较常用的方法,但繁琐,参考如下:主要使用Date的构造方法:Date(int year , int month , int day)<script> var str1 = "2009-8-9"; var arr1 = str1.split("-"); var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); var str2 = "2009…
题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出第n项斐波那契数列的值. 样例输入: 3 样例输出: 2 解题思路: 题目中可以看到,n的范围是70,最先想到的递归肯定是不行的,那么我们钻一个空子,事先生成一个数组,到时候取出来就可以了.太高端的想法,也想不出,记得有一个用矩阵求解的方法,很快.这道题…
IE8中和chrome在计算像素百分比上,IE8舍一位取元素像素大小,chrome则使用四舍五入取元素像素大小: 比如:<body><div stype=“width:30%”></div></body> 假设body宽1366px,在IE8中div宽度为1366*0.3=409.8px,舍一位最终结果为409px:而在chrome中四舍五入则为410px:…
下面都是从String类的源码中粘贴出来的 private int hash; // Default to 0 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; } 下面利用上…
最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期 CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间 SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null MI…
Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat 首先吐槽一下,Date和Calendar实际用起来还是有一些别扭的,刚开始用的时候不熟悉,老是分不清Date和Calendar类的具体用法和区别. 而且Calendar类的set方法来设置日期时又有一些反人类,设置月份的时候总是要脑补一下减去1,比如要设置为2018年1月6日就要设置成2018,0…
原码 反码 补码的定义与运算 1原码: 原码是将十进制或者其他进制的数转换为二进制表示(且要根据数据的类型转换) 如:130 (默认是Int类型,则是4个字节) 原码是:00000000 00000000 00000000 100000010 2反码: 1.当原码是正数时,反码就是原码 2.当原码是负数时,反码是除了第一位的符号位以外的位数全部取反 3补码: 1.当原码是正数时,反码就是原码 2.当原码是负数时,补码是反码+1 byte b = (byte) 130 ; 计算机操作中对数据的分析…