问题描述:由于公司业务产品中,需要用户自己填写公司名称,而这个公司名称存在大量的乱填现象,因此需要对其做一些归一化的问题。在这基础上,能延伸出一个预测用户填写的公司名是否有效的模型出来。

目标:问题提出来了,就是想找到一种办法来预测用户填写的公司名是否有效?

问题分析:要想预测用户填写的公司名称是否有效,需要用到NLP的知识内容,我们首先能够想到的是利用NLP中的语言模型,来对公司名称进行训练建模,并结合其他的特征(如:长度等)进行预测。

一、N-Gram的原理

N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。(这也是隐马尔可夫当中的假设。)整个句子出现的概率就等于各个词出现的概率乘积。各个词的概率可以通过语料中统计计算得到。假设句子T是有词序列w1,w2,w3...wn组成,用公式表示N-Gram语言模型如下:

P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)***p(wn|w1w2w3...)

一般常用的N-Gram模型是Bi-Gram和Tri-Gram。分别用公式表示如下:

Bi-Gram:  P(T)=p(w1|begin)*p(w2|w1)*p(w3|w2)***p(wn|wn-1)

Tri-Gram:  P(T)=p(w1|begin1,begin2)*p(w2|w1,begin1)*p(w3|w2w1)***p(wn|wn-1,wn-2)

  • 注意上面概率的计算方法:P(w1|begin)=以w1为开头的所有句子/句子总数;p(w2|w1)=w1,w2同时出现的次数/w1出现的次数。以此类推。(这里需要进行平滑)

二、N-Gram的应用

根据上面的分析,N-Gram(有时也称为N元模型)是自然语言处理中一个非常重要的概念,通常在NLP中,它主要有两个重要应用场景:

(1)、人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。

(2)、另外一方面,N-Gram的另外一个作用是用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段。

1、N-gram在两个字符串的模糊匹配中的应用

首先需要介绍一个比较重要的概念:N-Gram距离。

(1)N-gram距离

它是表示,两个字符串s,t分别利用N-Gram语言模型来表示时,则对应N-gram子串中公共部分的长度就称之为N-Gram距离。例如:假设有字符串s,那么按照N-Gram方法得到N个分词组成的子字符串,其中相同的子字符串个数作为N-Gram距离计算的方式。具体如下所示:

字符串:s="ABC",对字符串进行分词,考虑字符串首尾的字符begin和end,得到begin,A,B,C,end。这里采用二元语言模型,则有:(begin,A)、(A,B)、(B,C)、(C,end)。

字符串:t="AB",对字符串进行分词,考虑字符串首尾的字符begin和end,得到begin,A,B,end。这里采用二元语言模型,则有:(begin,A)、(A,B)、(B,end)。

此时,若求字符串t与字符串s之间的距离可以用M-(N-Gram距离)=0。

然而,上面的N—gram距离表示的并不是很合理,他并没有考虑两个字符串的长度,所以在此基础上,有人提出非重复的N-gram距离,公式如下所示:

上面的字符串距离重新计算为:

      4+3-2*3=1

2、N-Gram在判断句子有效性上的应用

假设有一个字符串s="ABC",则对应的BI-Gram的结果如下:(begin,A)、(A,B)、(B,C)、(C,end)。则对应的出现字符串s的概率为:

P(ABC)=P(A|begin)*P(B|A)*P(C|B)*P(end|C)。

3、N-Gram在特征工程中的应用

在处理文本特征的时候,通常一个关键词作为一个特征。这也许在一些场景下可能不够,需要进一步提取更多的特征,这个时候可以考虑N-Gram,思路如下:

以Bi-Gram为例,在原始文本中,以每个关键词作为一个特征,通过将关键词两两组合,得到一个Bi-Gram组合,再根据N-Gram语言模型,计算各个Bi-Gram组合的概率,作为新的特征。

转载于:https://www.cnblogs.com/ljy2013/p/6425277.html

语言模型(N-Gram)相关推荐

  1. DLM:微信大规模分布式n-gram语言模型系统

    来源 | 微信后台团队 Wechat & NUS<A Distributed System for Large-scale n-gram Language Models at Tence ...

  2. edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统

    n-gram语言模型用于就是计算句子的概率,通俗来讲就是判断这句话是人话的可能性有多少.n就是将句子做切割,n个单词为一组. 如何计算句子的概率?根据条件概率和链式规则 P(B|A)=P(A,B)/P ...

  3. NLP基础:n-gram语言模型和神经网络语言模型

    文章目录 语言模型的计算 n-gram 语言模型 n-gram 平滑技术 神经网络语言模型(NNLM) 基本思想 神经网络语言模型小结 语言模型评价指标-困惑度 语言模型是自然语言处理中的重要技术,假 ...

  4. chatbot2 RNN语言模型

    基于RNN的语言模型 RNN语言模型理论基础 参考文献 cbow/skip gram 的局限性#### 解决方案 rnn模型细节 数学表示 一个输入一个输出的不是循环神经网络. RNN语言模型实践 d ...

  5. 如何计算给定一个unigram语言模型_CS224n笔记[5]:语言模型(LM)和循环神经网络(RNNs)...

    CS224n笔记[5]:语言模型(LM)和循环神经网络(RNNs) 作者:郭必扬 许久没更新了,十分惭愧,翻了翻之前的笔记,才之前上一期我们讲的是"依存分析".本期,我们介绍一下语 ...

  6. 语言 双线性内插_数位语音信号处理概论 Lesson6 语言模型

    在上一节lesson中主要总结了HMM在声学模型中的用法,本小节主要总结语言模型相关的内容.在语音识别领域,语言模型评估的是一句话到底有多像一句人话,在语音识别.拼写纠错.机器翻译.音字转换都有许多应 ...

  7. nlp-tutorial代码注释1-1,语言模型、n-gram简介

    系列语:本系列是nlp-tutorial代码注释系列,github上原项目地址为:nlp-tutorial,本系列每一篇文章的大纲是相关知识点介绍 + 详细代码注释. 本文知识点介绍来自斯坦福大学CS ...

  8. 神经网络 和 NLP —— 语言模型和词向量

    前段时间一口气读完了 NN4NLP,很是畅快,非常喜欢作者行文讲解的口吻和逻辑.大概两周读完,每页都有收获,读完后反而担心有所疏漏,知识太多留不住,索性从头来一遍,把学习过程的知识点和思考记录下来,也 ...

  9. [VLDB2019]DLM:微信大规模分布式n-gram语言模型系统

    Wechat & NUS<A Distributed System for Large-scale n-gram Language Models at Tencent>分布式语言模 ...

最新文章

  1. python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )
  2. LinkedList ArrayList Vector的区别
  3. Jenkins CLI命令行工具,助你轻松管理 Jenkins
  4. C++trie树的多重搜索算法的实现(附完整源码)
  5. 数字图像处理——引导滤波
  6. VC2010 项目的创建
  7. windows rt c语言,有arm架构的windows平板吗??与x86的win有什么不同?arm写c语言怎样?
  8. [HNOI 2011]数学作业
  9. Jedis 1.0.0 版 源码分析系列3:JedisPool.java
  10. html5 原生 弹窗,HTML5 Popmotion.js实现的弹窗控件
  11. 一定要吃透的四个人性真相
  12. 让Fiddler调试localhost和127.0.0.1
  13. 社区列表根据关注人数排序(排行榜)的实现思路整理
  14. 《C++标准库》学习笔记 — STL —流
  15. 浅谈MySQL安全加固
  16. MYSQL-mysql中的truncate的用法
  17. 快速理解数据库函数依赖(平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递依赖)
  18. 开发通用资料——英文缩写
  19. 游戏盾,有效解决游戏行业安全管理问题
  20. HTML a 标签的 href 属性

热门文章

  1. Vue和iview-admin搭建的项目进行兼容
  2. koa --- 使用koa-multer上传文件+elementUI
  3. 03 渲染元素ReactDOM.render
  4. Hive安装中遇到过的坑
  5. 2springboot:快速创建springboot项目
  6. vsCode ext install 不工作
  7. SQL计算100以内的质数(可以把100换成任意的整数)
  8. Cobub无码埋点关键技术的实现
  9. 实现物联网项目,你需要提前知道的6件事情
  10. 跳過 Windows RT的UI