热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LanguageModels

本章介绍语言模型,内容包括:IntroductiontoN-gramsEstimatingN-gramProbabilitiesEvaluationa

本章介绍语言模型,内容包括:


  1. Introduction to N-grams
  2. Estimating N-gram Probabilities
  3. Evaluation and Perplexity
  4. Smoothing

Introduction to N-grams

Probalilistic Language Models(概率语言模型)的首要任务是估计一个字符串序列或者句子出现的可能性大小

这里写图片描述
自然的,可以定义c(x1,x2,,xn)为在训练集中句子x1x2xn出现的次数,N是训练集中句子的数目,直接定义
这里写图片描述
这个模型的泛化能力很差,那些在训练集中没有出现的句子,它的概率就强制为0了。

假设W是一句话,w1,w2,,wn是构成这句话的单词,利用链式法则求W的概率公式如下:
这里写图片描述
现在的目标变成估计P(wi|w1w2wi1)了,同样,如果直接采取频率的估计方法,可能的句子太多,将永远不会有足够的数据来估计这个条件概率密度。引入Markov Assumption:句子当前词出现的概率仅与前N1个词有关,那么该模型就成为”N元模型”
这里写图片描述
最简单的模型即Unigram model,每个词出现的概率与上下文无关,
这里写图片描述
Bigram model:认为每个单词的出现只与它的前一个单词相关,
这里写图片描述
我们也可以使用4元模型,5元模型,N越大,语言模型的准确率越大,但是每增加一元,带来的是计算量的指数增长。事实上,句子中的long distance dependencies(长程依赖)是存在的,如:The computer which I had just put into the machine room on the fifth floor crashed.最后一个单词crashed实际上是与句子中靠前的computer相关,就算是使用5元模型也不可能把单词之前的相关性展示出来。

Estimating N-gram Probabilities

以二元模型为例,采用最大似然估计(Maximum Likelihood Estimate),得到参数如下:
这里写图片描述
只需要用全部语料库中连着出现(wi1,wi)的次数 除以wi1出现的次数,当然要保证语料库足够大.在实际计算句子的概率时,往往在对数空间进行运算,有效避免了underflow(概率都是一些很小的数,几个小数相乘很快就超出了计算机精度了)。

一些公开的语言模型:


  • SRILM
  • Google N-Gram Release
  • Google Book N-grams

Evaluation and Perplexity

如何评估模型?首先我们根据training set(训练集数据)求得模型参数,然后使用新的数据集(test set)来测试所建立语言模型的性能。Train set和Test set属于同一领域时,训练出的语言模型的准确性就高,对test set的预测性就越好。倘若两者属于不同领域,那么所训练的模型就未必好。


  • Extrinsic evaluation:根据一个具体的任务,训练两个语言模型A和B,然后使用大量数据来监测A和B,比较两者的准确率,这会消耗大量时间
  • Intrinsic evaluation:Perplexity
    这里写图片描述

Smoothing

2元语言模型中,很多单词对出现的次数为0,多元模型中情况更甚,另外,很可能我们使用的train set数据中计算的某个单词对概率为0,但是在test set中确实真实存在的,采用平滑技术解决零概率的问题


  1. Add-one Smoothing
    这里写图片描述
    Add-one Smoothing不适用于N-grams,通常用于平滑其他NLP模型,如文本分类,以及一些零概率出现比较少的情况。
    更一般的形式是Add-k Smoothing
    这里写图片描述
  2. Interpolation
    有时我们需要将多种语言模型——trigram(三元)、bigram(二元)、unigram(一元)模型混合使用,这就需要使用插值方法。
    这里写图片描述
    如何设置λ呢?把原有的train set数据分成两份,一份继续作为train set(训练语料),用于初始的频率估计;另一份用来改善最初的频率估计,这一份便称为“held-out data”
    这里写图片描述

推荐阅读
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 【问题】在Android开发中,当为EditText添加TextWatcher并实现onTextChanged方法时,会遇到一个问题:即使只对EditText进行一次修改(例如使用删除键删除一个字符),该方法也会被频繁触发。这不仅影响性能,还可能导致逻辑错误。本文将探讨这一问题的原因,并提供有效的解决方案,包括使用Handler或计时器来限制方法的调用频率,以及通过自定义TextWatcher来优化事件处理,从而提高应用的稳定性和用户体验。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
author-avatar
ynq02008146
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有