N-gram介绍_ngram计算句子相似度-程序员宅基地

技术标签: 深度学习  

1、简介

N-gram是一种基于统计的语言模型,常常用来做句子相似度比较,句子合理性判断。(语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否合理的概率,RNN是神经语言模型)

N-Gram是基于一个假设:第n个词出现的概率与前n-1个词相关,而与其他任何词不相关。因此整个句子出现的概率就等于各个词出现的概率的乘积。各个词的概率可以通过语料中统计得到。假设句子 T T T是有词序列 w 1 , w 2 , w 3 . . . w n w_{1},w_{2},w_{3}...w_{n} w1,w2,w3...wn组成,用公式表示N-Gram语言模型如下:
P ( T ) = P ( w 1 ) p ( w 2 ) p ( w 3 ) p ( w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) p ( w 3 ∣ w 1 w 2 ) . . . p ( w n ∣ w 1 w 2 w 3... ) P(T)=P(w1)p(w2)p(w3)p(wn)=p(w1)p(w2|w1)p(w3|w1w2)...p(wn|w1w2w3...) P(T)=P(w1)p(w2)p(w3)p(wn)=p(w1)p(w2w1)p(w3w1w2)...p(wnw1w2w3...)

2、N-gram中的数据平滑方法:

当N变大时,更容易出现这样的状况:某些N-gram从未出现过,这就是稀疏问题。

例如,在bi-gram中,若词库中有20k个词,那么两两组合就有近2亿个组合。其中的很多组合在语料库中都没有出现,从而整个句子的概率就会为0。最后的结果是,我们的模型只能计算零星的几个句子的概率,而大部分的句子算得的概率是0,这显然是不合理的。

2.1 +1法

对所有的频率都加1,因此对于unigram而言有:
P a d d 1 ( w i ) = C ( w i ) + 1 M + ∣ V ∣ P_{add1}(w_{i})=\frac{C(w_{i})+1}{M+|V|} Padd1(wi)=M+V

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/guohui_0907/article/details/90382170

智能推荐

解题报告 之 HDU5319 Painter_substance painter出现格子-程序员宅基地

文章浏览阅读1.5k次。DescriptionMr. Hdu is an painter, as we all know, painters need ideas to innovate , one day, he got stuck in rut and the ideas dry up, he took out a drawing board and began to draw casually. Imagine the board is a rectangle, consists of several square gri_substance painter出现格子

ajax作用域 回调函数的返回值 异步传输时得不到值_$.ajax({ async为true取不到值-程序员宅基地

文章浏览阅读9.9k次,点赞2次,收藏9次。很郁闷的问题如下: function jsAlert() { var testNumber = 2; $.ajax({ type: "post", url: "JsonCode/GetResult.ashx", succes_$.ajax({ async为true取不到值

mfc mysql 选择删除文件_MFC应用实例:[60]删除指定类型的文件-程序员宅基地

文章浏览阅读95次。双击“删除文件”按钮添加响应函数OnDelete(),在响应函数OnDelete()中添加一下代码:void CDeleteCertainFolderFileDlg::OnDelete(){UpdateData(true);CString m_extern;switch (m_radio)//获取要删除文件类型的后缀名{case 0:GetDlgItem(IDC_RADIO1)->GetWi..._mfc 指定行 mysql 删除

使用navicat连接云服务器的docker中的mysql数据库过程_navicate 查看 docker 数据库-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏9次。第一步:在CentOS中安装docker引擎要安装Docker引擎,需要CentOS 7或CentOS 8的维护版本。查看CentOs版本:cat /etc/redhat-release使用仓库安装的方法:设置仓库安装yum-utils包(提供了yum-config-manager工具)并启动一个稳定的仓库 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://downl_navicate 查看 docker 数据库

docker删除none镜像_在docker容器中“centos <none> ” 这个镜像删除不了-程序员宅基地

文章浏览阅读445次。经常会出现很多none的镜像,一看就不爽,一条命令搞定docker images | grep none | awk '{print $3}'_在docker容器中“centos ” 这个镜像删除不了

Java之线程池与Lambda表达式_java lambda表达式使用线程池-程序员宅基地

文章浏览阅读562次。文章目录一、线程池1.1 缓存线程池CachedThreadPool1.2 定长线程池FixedThreadPool1.3 单线程线程池SingleThreadExecutor1.4 周期性任务定长线程池ScheduledThreadPool一、线程池提到线程线程池我们先来说一下线程池的好处,线程池的有点大概可以概括三点:重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。能有效控制线程池的最大并发数,避免大量线程之间因互相抢夺系统资源而导致的阻塞现象。能够对线程进行简单的管理,.._java lambda表达式使用线程池

随便推点

vertical-align详细介绍_vertical-align属性-程序员宅基地

文章浏览阅读3.4k次。该属性可以接受多个值,包括关键字(如top、middle、bottom),长度单位(如像素、百分比)或百分比值的关键字(如baseline、sub、super)。是一个CSS属性,用于指定行内元素或表格单元格中内容的垂直对齐方式。它可以应用于行内元素、表格单元格或表格单元格中的内容。属性也可以接受长度单位(如像素)或百分比值。这些值用于指定元素相对于行框的偏移量。如果要垂直对齐块级元素,可以使用其他技术,如Flexbox或Grid布局。标签的行内元素将垂直居中对齐,而表格单元格中的内容将顶部对齐。_vertical-align属性

fiddler抓取https数据报文-Fiddler抓取app包-Fiddler数字证书解决方案(泣血推荐,原创亲测)_报文抓取-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏18次。一、HTTPS握手公钥私钥非对称加密解密原理以及数字证书由来。(1) HTTPS协议=HTTP协议+SSL协议,默认端口:443(2) HTTP协议(HyperText Transfer Protocol):超文本传输协议。默认端口:80,其中包含请求和响应两部分,其中请求包含:请求行、请求头、请求正文,响应包含:响应行、响应头、响应正文。(3) SSL协议(Secure Socket Layer) 安全套接层:为NetScape所研发,用以保障在Internet上数据传输的安全,利用数据加密技_报文抓取

阿里云高防IP和机房高防IP你更愿意选哪个_阿里云高防ip是个集群吗-程序员宅基地

文章浏览阅读3.5k次。今天小蚁君来讲一下选择阿里云高防IP和机房高防IP的人群都是一个什么样的心态呢?阿里云高防IP我们从价格定位上来看就知道,阿里云的高防很明显,需要一点实力才能够用的起的,但是不可否认在大众对于高防IP没多少认知的时候还是喜欢去“旗舰店”买的,但是这个不像购买数码产品,因为在很大程度来说,机房才是高防IP的一手资源,因为高防IP的基础就是机房去做的,那么为什么大家对阿里云高防IP又爱又恨的原因是什么呢?因为啊,阿里云的高防IP在业内被称之为吞金兽,只要是你的账户上有钱,那么你的防护就不会死,._阿里云高防ip是个集群吗

Elasticsearch修改字段之别名,扩展数据迁移_restful elasticsearch reindexrequest如何设置重命名字段-程序员宅基地

文章浏览阅读6.8k次,点赞4次,收藏11次。一、修改已经存在的索引最观的解决方案是首先备份该索引中已经存在的数据,然后删除它再重建该索引。这种方式比较暴力,当索引中已经存在相当多的数据时,不建议这样做。另外一种方案是使用_open和_close这一对端点,首先将目标索引关闭,执行需要的更新操作,然后再打开该索引。POST /symbol/_closePUT /symbol/_settings{ &quot;settings&quot;: { ..._restful elasticsearch reindexrequest如何设置重命名字段

join left on多张表_sql中left join from 多个表怎么写-程序员宅基地

文章浏览阅读837次。select*froma,b,c,dLEFTJOINeone.id=a.idleftjoinfonf.id=c.id现在这句是错的,怎么写才正确...sql中left join from 多个表具体代码如下:SELECT r.roleid,r.rolename,r.deptid,d.deptname,GROUP_CONCAT(m.menuname SEPARATOR ',' ) menunam..._from多个表left join怎么写

Object.assign 实现原理与分析_object.assign的缺点-程序员宅基地

文章浏览阅读437次。Object.assign剖析:方法含义:浅层次的完成对象的拷贝工作,拷贝源对象的第一层属性和第一层引用方法使用Object(目标对象,源对象1,源对象2,…)方法原理步骤:1.判断对象是否存在assign方法,没有就直接赋值给对象一个assign方法2.判断目标源对象是否为空,为空则抛出错误,程序完毕3.遍历源对象,拿出可枚举属性赋值给新对象4.返回新对象代码实现if(typeofObject.assign!=='function'){..._object.assign的缺点

推荐文章

热门文章

相关标签