文档章节

N-gram的原理、用途和研究

Airship
 Airship
发布于 2017/08/23 07:45
字数 1023
阅读 51
收藏 0

N-gram的原理、用途和研究

N-gram的基本原理

转自:http://blog.sciencenet.cn/blog-713101-797384.html

N-gram是计算机语言学和概率论范畴内的概念,是指给定的一段文本或语音中N个项目(item)的序列。项目(item)可以是音节、字母、单词或碱基对。通常N-grams取自文本或语料库。

N=1时称为unigram,N=2称为bigram,N=3称为trigram,以此类推。

举例来说:将“informationretrieval”视为一段文本,它的5-grams的items依次为:

infor,nform,forma,ormat,rmati,matio,ation,tion,ionr,onre,nret,retr,retri,etrie,triev,rieva,ieval

有时为了便于分析,还会在前面加空格,这就多出4个items:____i,___in,__inf,_info

举例中文:“你今天休假了吗”,它的bigram依次为:

你今,今天,天休,休假,假了,了吗

制造这种语言模型的原因是基于这么一种思想:在整个语言环境中,句子T的出现概率是由组成T的N个item的出现概率组成的,如下公式所示

P(T)=P(W1W2W3Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)

以上公式难以实际应用。此时出现马尔科夫模型,该模型认为,一个词的出现仅仅依赖于它前面出现的几个词。这就大大简化了上述公式。

P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1)

通常采用bigram和trigram进行计算。

N-gram的用途

20世纪80年代至90年代初,n-gram技术被广泛地用来进行文本压缩,检查拼写错误,加速字符串查找,文献语种识别。90年代,该技术又在自然语言处理自动化领域得到新的应用,如自动分类,自动索引,超链的自动生成,文献检索,无分隔符语言文本的切分等。

目前N-gram最为有用的就是自然语言的自动分类功能。基于n-gram的自动分类方法有两大类,一类是人工干预的分类(Classification),又称分类;一类是无人工干预的分类(Clustering),又称聚类。人工干预的分类,是指人工预先分好类(如Yahoo!的层次结构类),然后,计算机根据特定算法自动地将新添加到数据库的文献划归某一类。这类方法缺点是,人们须预先具备关于整个文献库和分类的知识。无人工干预的分类,是指计算机自动地识别文献组(集合),人们勿需预先具备关于整个文献库和分类的知识。

可以想象,如今信息泛滥的时代,资源呈指数方式递增。依靠人工信息识别和分类已经变得不现实,人类依靠计算机对自然语言本文的自动分类正在成为现实。这又与KDA和SVM结合起来,利用机器学习,首先利用Trainingdata形成分类函数,然后利用Testingdata进行测试其准确性。

N-gram中的数据平滑

对于一个包含2000个词的文本,使用bigram方法就会形成2000×2000的矩阵,trigram就形成2000×2000×2000的矩阵,其中含有大量的0值,即稀疏矩阵。此时需要采用数据平滑技术(datasmoothing)使得;并且P(Wk)均不等于0。

N-gram的相关研究

以上介绍都很浅薄,有兴趣可以参考相关研究:

英家庆,使用N-gram模型對中文文件自動分類,硕士论文,

http://ethesys.lib.mcu.edu.tw/ETD-db/ETD-search/getfile?URN=etd-0817107-135543&filename=etd-0817107-135543.pdf

 

图  .N-gram处理中文流程

何浩,杨海棠,一种基于 N-Gram 技术的中文文献自动分类方法,情报学报,http://study.hbecrc.org/lcq/xueshuyanjiu/UploadFiles_9984/200704/20070417110725112.pdf

George Doddington,Automatic Evaluation of MachineTranslation Quality Using N-gram Co-Occurrence Statistics,http://dl.acm.org/citation.cfm?id=1289189.1289273

 

 

转载本文请联系原作者获取授权,同时请注明本文来自王磊科学网博客。
链接地址:http://blog.sciencenet.cn/blog-713101-797384.html

本文转载自:http://www.cnblogs.com/cdsj/p/5720391.html

共有 人打赏支持
Airship
粉丝 38
博文 886
码字总数 19240
作品 0
南京
高级程序员
私信 提问
语音识别引擎--Julius

Julius 是一种高性能,两通大词汇量连续语音识别(LVCSR)语音相关的研究和开发的解码器软件。基于字的N-gram和上下文相关的HMM模型,它可以进行几乎实时实时解码目前大多数电脑在60K字听写任...

匿名
2012/07/24
7.5K
0
吾爱NLP--我与自然语言处理

0、自然语言处理--NLP 0.1 数字、文本、语言 "数字、文字和自然语言处理一样,都是信息的载体,数字与语言的产生都是为了同一个目的----记录和传播信息。" --《数学之美》 文字只是信息的载体...

流川枫AI
2017/06/13
0
0
脸书论文翻译《Bag of Tricks for Efficient Text Classification》

这篇论文挂在arxiv上已经一年了,第一版并没有引起我太多的注意,因为那个时候fastText看上去更像是一个实验室的helloWorld,直到最近我被一遍又一遍刷屏的CNN文本分类弄得有点烦躁,所以想用...

戴德曼
2017/07/15
0
0
Hanlp实战HMM-Viterbi角色标注中国人名识别

这几天写完了人名识别模块,与分词放到一起形成了两层隐马模型。虽然在算法或模型上没有什么新意,但是胜在训练语料比较新,对质量把关比较严,实测效果很满意。比如这句真实的新闻“签约仪式...

左手的倒影
昨天
0
0
NLP应该如何学、如何教?斯坦福大学大牛Dan Jurafsky教授专访

雷锋网 AI 科技评论按:自然语言处理是一个高度跨学科的领域,包含了语言学、计算机科学、统计学等等许多传统学科的内容。在课堂中,自然语言处理的教师者们要根据课程长度、学生的水平、领域...

WBLUE
10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

solr使用规范

0. 目的 规范solr设计、用法,避免bug,提高性能 1. 设计规范 solr的用途是查询,不是存储,建议查询结果尽量都为id主键,而后再拿该id主键到缓存或者db中再查询相关信息,例如:请勿将经销商...

andersChow
26分钟前
1
0
11-《深度拆解JVM》之Java对象的内存布局

一、问题引入 在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对...

飞鱼说编程
30分钟前
1
0
Windows Install Docker

win7、win8 win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker toolbox...

linuxprobe16
35分钟前
1
0
混合云环境中扩展Kubernetes的挑战及方案

流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kubernetes扩展。 引 言 假设您的业务是在线的:您...

RancherLabs
43分钟前
1
0
Java集合小抄

Java集合小抄 1. List 1.1 ArrayList 以数组实现。节约空间,但是数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组。因此最好能给出数组大小的预估值。默认第一...

傅小水water
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部