基于规则和基于统计的区别、方法简介
来源:互联网 发布:java urlencoder 乱码 编辑:程序博客网 时间:2024/05/16 01:40
最近在网络上一直在了解有关基于规则和基于统计的方法的文章,但是觉得说的还是很笼统,为此,根据自己所做的工作参考一些材料聊聊自己的认识,说的较为简单,希望大家能给予批评指正!
说起基于规则和基于统计就不能不说一下有关NLP的一些基本研究方法,首先这谈谈理性主义和经验主义在哲学上的不同之处:
其一就是对语言知识来源不同的认识:理性主义认为人的很大一部分语言知识都是与生俱来的,由遗传决定;经验主义认为人的语言知识是通过感官输入,经过一些简单的联想与通用化的操作而得到的。
其次区别之二就是理性主义研究人的语言知识结构,实际的语言数据只是提供这种内在知识的间接证据;而经验主义直接研究这些实际的语言数据。
其三就是它们运用的是不同的理论,理性主义通常是基于Chomsky的语言原则,通过语言所必须遵守的一系列原则来描述语言;经验主义通常是基于Shannon的信息论。
其四就是采用的是不同的处理方法,理性主义是通过一些特殊的语句或是语言现象的研究得到对人的语言能力的认识,而这些语句和语言现象在实际的应用中不常见,而经验主义偏重於对大规模的语言数据,更偏重于对实际使用中的普通语句的统计。
由哲学思想的理性主义和经验主义可以得到基于规则和基于统计的方法,可以说,哲学的两种思想是导致NLP的两个分支。理性主义问题的求解方法是通过规则的分析方法,建立符号处理系统,目前的方法有基于规则库、词典标准、推到算法设计等,具体实现方法有、形式语言、语法理论、词法理论、推理方法等,主要是以Chomsky的文法理论为基础,通过知识库和推理系统的结合来建立NLP系统。而经验主义的问题求解方法是通过大规模的真实语料(语言数据)的计算方法,例如目前的方法就是大规模真实数据的收集、标注和建立统计模型,具体的实现方法是建立语言模型、HMM、机器学习和搜索算法等。主要是以统计学、信息论和机器学习为基础,是以语料库和统计模型的结合来建立NLP系统。
上面主要是基于规则和基于统计方法的介绍,下面主要是谈谈基于统计的语言模型。
由于大规模数据的出现为自然语言统计处理提供了真实的环境,因此统计方法的研究的进步也推动了语料库语言学的发展,同大规模语料库和统计方法,可以发现人们在使用语言的规律,还可以对机器学习、自动获取语言知识,还可以对未知语言现象进行推测。统计语言模型说的简单点其实就是计算某些时数据概率的模型,人们可以通过语言模型进行数据语言统计的概率进而来预测未发生的概率。概率的计算在这不多说,都可以通过网络得到。
目前有关语言模型中最常见的方法有n-gram模型方法、决策树方法、条件随机域方法、神经网络、最大熵模型方法、最大熵马尔科夫模型方法方法等等。其中最为大家所认知的语言模型是N-gram模型,因此在此也主要介绍一下N-gram模型
N-gram模型又称为n-1阶马尔科夫模型,主要内容就是当前所要使用的词的出现概率仅仅与前面n-1个词相关。这就是一个预测未来查询项的方法,可以用到查询纠错,拼音算法都是可以,主要是通过参数估计,通过对数据用EM算法进行训练,在尽管用户输入不准确的情况下来呈现给用户最想要的数据。N-gram本身的缺点就是会产生数据稀疏性,因此可以通过数据的平滑性来增加N-gram模型的精确度,目前有关N-gram的平滑型方法有多种,例如:加法平滑、Good-Turing平滑、线性插值平滑、Katz平滑、Back-off(后备/后退)平滑、绝对减值平滑等,这些方法详细介绍可以在网络中找到,在这里就不再陈述了。
- 基于规则和基于统计的区别、方法简介
- 基于规则经验主义和基于统计的自然语言处理方法的比较
- 基于统计的自然语言处理和基于规则的自然语言处理的一些个人看法
- 基于规则和规则引擎的系统
- 基于规则与统计相结合的互联网突发事件识别研究
- 基于图像的人数统计方法
- 基于规则的专家系统
- 基于规则的分类
- 基于规则的分类
- 基于规则的分类
- 基于谱聚类的图像分割方法简介
- 基于语义和规则的Web网页细粒度信息抽取方法
- MongoDB的简介和使用(基于JAVA)
- 基于规则的分形图形生成方法
- 基于小端规则的几个java方法
- 基于规则的授权机制
- 基于规则的访问控制
- 基于规则的业务流程分析
- 为ASP.NET MVC配置基于Active Directory的表单认证方式
- sqlite3使用点滴
- Android:Activity的LaunchMode比较
- 第十二章 BIRT报表的部署与配置
- 为什么V8引擎这么快
- 基于规则和基于统计的区别、方法简介
- 编程复习4链表移动
- Struts 模板
- C#visual(控件)的打印
- CSS中内容的剪切属性clip
- 英语音标
- C++ 读取键盘输入(cin/cin.getline()/cin.get()/cin.clear())
- HighCharts +java 做图 由于看不懂JfreeChar 搜到可用HighCharts作图的一个js,还简单,下面是自己的一个新增用户的统计图
- Lucene:按词条搜索—TermQuery