有了一个语言模型,就要判断这个模型的好坏。

现在假设:

  • 我们有一些测试数据,test data.测试数据中有m个句子;s1,s2,s3…,sm

我们可以查看在某个模型下面的概率:

我们也知道,如果计算相乘是非常麻烦的,可以在此基础上,以另一种形式来计算模型的好坏程度。

在相乘的基础上,运用Log,来把乘法转换成加法来计算。

 

补充一下,在这里的p(Si)其实就等于我们前面所介绍的q(the|*,*)*q(dog|*,the)*q(…)…

有了上面的式子,评价一个模型是否好坏的原理在于:

a good model should assign as high probability as possible to these test data sentences.

,this value as being a measure of how well the alleviate to make sth less painful or difficult to deal with language model predict these test data sentences.

The higher the better.

上面的意思也就是说,如果的值越大,那么这个模型就越好。

  • 实际上,普遍的评价的指标是perplexity

其中,M的值是测试数据test data中的所有的数量。

那么从公式当中查看,可以知道。perplexity的值越小越好。

为了更好的理解perplexity,看下面这个例子:

  • 我们现在有一个单词集V,N=|V|+1

有了上面的条件,可以很容易的计算出:

Perplexity是测试branching factor的数值。

branching factor又是什么呢?有的翻译为分叉率。如果branching factor高,计算起来代价会越大。也可以理解成,分叉率越高,可能性就越多,需要计算的量就越大。

上面的例子q=1/N只是一个举例,再看看下面这些真实的数据:

  • Goodman的结果,其中|V|=50000,在trigram model的中,Perplexity=74
  • 在bigram model中,,Perplexity=137
  • 在unigram model中,,perplexity=955

在这里也看到了,几个模型的perplexity的值是不同的,这也就表明了三元模型一般是性能良好的。

最新文章

  1. SalesForce 记录级别安全性
  2. C#字符串默认值
  3. PHP 查询时区与设置时区
  4. Linux_服务
  5. 安装CDH4 (Cloudera Distribution Hadoop)步骤
  6. 【spring 7】spring和Hibernate的整合:声明式事务
  7. LINQ——语言级集成查询入门指南(1)
  8. shell脚本定时备份数据库
  9. mongodb副本集自动切换修复节点解决方案
  10. 从MSSQL server 2005中移植数据到Oracle 10g
  11. 使用fliter实现ie下css中rgba的效果
  12. seo优化做起来不是哪么简单,其实需要的是思维
  13. printf打印输出
  14. Word Ladder II leetcode java
  15. oracle 字符集 AL32UTF8、UTF8
  16. lombok 的使用
  17. PAT——1069. 微博转发抽奖
  18. 小白初识 - 基数排序(RadixSort)
  19. string的内存本质
  20. DG日志不应用,GAP,主备切换解决思路与办法

热门文章

  1. 解决hibernate 序列化死循环的问题
  2. 阶段3 1.Mybatis_09.Mybatis的多表操作_8 mybatis多对多操作-查询角色获取角色下所属用户信息
  3. Spring MVC的RequestContextHolder使用误区
  4. linux python 修改环境变量 添加自定义模块路径
  5. Android:adb命令详解
  6. Snow的追寻--线段树维护树的直径
  7. 【Qt开发】 V4L2_CAP_VIDEO_OVERLAY与V4L2_CAP_VIDEO_CAPTURE的区别
  8. HTTP 常见相应状态码及含义
  9. 2019 我的世界多了一个 Python
  10. Java——HashMap底层源码分析