自然语言处理 - 二元语法与中文分词
二元语法与中文分词
之前的一篇文章里(自然语言处理 - 分词初窥)中我们介绍并实现了基于词典的最大匹配分词方法。这种方法简单直观,且词典扩充很方便。但词典分词难以消除歧义,给定两种分词结果“商品 和服 务”以及“商品 和 服务”,词典分词不知道哪种更加合理。
但对于人类来说,我们平时接触的都是第二种分词方案,所以我们知道第二种更加合理,因此可以判定第二种是正确地选择。这就是利用了统计自然语言处理。统计自然语言处理的核心话题之一,就是如何利用统计手法对语言建模,
语言模型
模型指的是对事物的数学抽象,那么语言模型指的就是对语言现象的数学抽象。形式化上讲,给定一个句子,语言模型就是计算句子的出现概率 的模型,而统计的对象就是人工标注而成的语料库。
举个例子,对于下面的小型语料库:
商品 和 服务
商品 和服 物美价廉
服务 和 货币
每个句子出现的概率都是 1/3,这就是语言模型。然而 的计算非常难:句子数量无穷无尽,无法枚举。即便是大型语料库,也只能“枚举”有限的句子。实际遇到的句子大部分都在语料库之外,意味着它们的概率都被当作 0,这种现象被称为数据稀疏。
考虑到很多句子复用相同的词语,如果把句子看成词语列表 ,其中,每一个 都是一个词语,那么语言模型可以定义为:
其中 (Begin Of Sentence) ,(End Of Sentence) 来标记句子首尾的两个特殊"单词"。
然而随着句子长度的增大,语言模型会遇到如下两个问题:
- 数据稀疏:长度较大的句子出现频率较低,导致联合概率为 0
- 计算代价大:随着句子中词语的增多,需要存储的单词间的联合概率值也越多
马尔可夫过程
马尔可夫过程(Markov process)是一类随机过程。它的原始模型马尔可夫链,由俄国数学家A.A.马尔可夫于1907年提出。该过程具有如下特性:在已知目前状态的条件下,它未来的演变不依赖于它以往的演变。例如森林中动物头数的变化构成——马尔可夫过程。在现实世界中,有很多过程都是马尔可夫过程,如液体中微粒所作的布朗运动、传染病受感染的人数、车站的候车人数等,都可视为马尔可夫过程。
每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔可夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态,这个也叫作马尔可夫性质。用数学表达式即为:
n 元语言模型
这个"模型的每个状态都只依赖于之前的状态"的假设即称为马尔科夫假设。这个假设可用来简化语言模型,我们可以假设每个词语的出现概率仅依赖于前一个 词语。此时的语言模型称为二元语法模型,对应地,假设每个词语出现的概率仅信赖于前 n 个词语的模型即n 元语法模型。
语言模型给出了如何计算句子出现概率的方法(函数),具体的概率值取决于实际使用到的语料库。一些常用的语料库有:
- 《人民日报》语料库 PKU
- 微软亚洲研究院语料库 MSR
- 香港城市大学 CITYU(繁体)
- 台湾中央研究院 AS(繁体)
语料库 | 字符数 | 词语种数 | 总词频 | 平均词长 |
---|---|---|---|---|
PKU | 183万 | 6万 | 111万 | 1.6 |
MSR | 405万 | 9万 | 237万 | 1.7 |
AS | 837万 | 14万 | 545万 | 1.5 |
CITYU | 240万 | 7万 | 146万 | 1.7 |
MSR 在标注一致性、切分粒度上都要优于 PKU 且词频数更多,一般采用 MSR 作为分词语料的首选。
PKU 和 MSRA 的数据集下载地址:http://sighan.cs.uchicago.edu/bakeoff2005/。
参考
- 二元语法与中文分词
自然语言处理 - 二元语法与中文分词相关推荐
- 自然语言处理之中文分词(基于Python)
人生苦短,我用python 除了给你生孩子,python都能给你做到. 这句话所言不假,python拥有丰富的库,能完成各种各样的的功能. 只有你想不到的,没有python做不到的.下面我们来看看py ...
- 2019年了,中文分词到底该怎么做?中文分词十年方法大盘点(附下载)
https://www.toutiao.com/a6655113946241958403/ 2019-02-07 12:41:03 基本上所有的中文自然语言处理任务,第一步都需要先分词.中文分词是中文 ...
- 【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词:[统计学习方法]第十章 隐马尔可夫模型 · 代码目的:手写HMM进行中文分词 作者:CSDN 征途黯然. 一.数据集 数据集的形式如下 ...
- 【自然语言处理】N-最短路径法进行中文分词
本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词 · 参考文章:https://www.cnblogs.com/Finley/p/6619187.html · 代码目的:手写N-最短路径法 ...
- r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...
斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger), ...
- 【Python自然语言处理】中文分词技术——统计分词
中文分词方法 本文参考自书籍<Python自然语言处理实战:核心技术与算法> 用做个人的学习笔记和分享 1. 规则分词 规则分词的详细笔记 2. 统计分词 2.1 一般步骤 建立统计语言模 ...
- 【Python自然语言处理】中文分词技术——规则分词
中文分词方法 本文参考自书籍<Python自然语言处理实战:核心技术与算法> 用做个人的学习笔记和分享 1. 规则分词 规则分词是一种机械分词方法,主要通过维护词典,在切分语句时将语句的每 ...
- 自然语言处理与中文分词的难点总结--学习笔记
自然语言处理与中文分词的难点总结 2012年7月2日 10:01 中文自动分词 指的是使用计算机自动对中文文本进行词语的切分,即像英文那样使得中文句子中的词之间有空格以标识.中文自动分词被认为是中文自 ...
- 自然语言处理系列十七》中文分词》分词工具实战》Python的Jieba分词
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书<分布式机器学习实战>(人工智能科学与技术丛书)[陈敬雷编著][清华大学出版社] 文章目录 自然语言处理系列十七 分词工 ...
最新文章
- PHP mysql数据迁移,【MySQL】迁移数据目录php-php教程
- python-进程、线程
- C++ 类型转换 :C语言的类型转换、C++的四种强制类型转换、explicit
- 前沿观察 | SageDB:一个自学成才的数据库
- codeforces gym-101736 Farmer Faul 平衡树+并查集
- 无锁队列设计思路以及简要代码
- linux ftp下载函数函数,FTP下载的函数
- wxPython4.0中ListCtrl入门
- Kali Linux 秘籍 第二章 定制 Kali Linux
- android开发工具哪个好_小程序开发工具怎么用?哪个好用?
- 好的计算机教学,如何营造良好的计算机课堂教学氛围
- c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
- 金融分析师 python_金融分析中的Python环境搭建
- Tomcat的下载与安装
- 教师专用录微课及剪辑软件推荐-camtasia及使用教程
- tkmybatis 子查询_【10/21】南池袋送餐桌和椅子 收纳盒子 洗衣机 | 下落合站送洗衣机...
- 对联盟链的零星想法,欢迎指正交流
- HTML点击图片,弹窗并放大
- 啥是单点登录及单点登录原理
- C语言_统计单词长度
热门文章
- 2022年6月电子学会考级试卷真题解析(含答案和所有文档下载)
- 用20行python代码给证件照换底色
- 不能相见的爱人——丘比特的爱情故事
- Git版本控制与工作流
- 计算机毕业设计springboot小组学习系统
- VirtualBox 虚拟机安装Windows10,珍藏版!!!
- 基于大学生内卷行为的调查研究
- 【315期】面试官问:在大数据量情况下,如何优化 ElasticSearch 查询?
- 网络安全与网站安全及计算机安全:如何使用Kali Linux的MSF进行MS12-020安全演练
- 在git上传报错Updates were rejected because the tip of your curren branch is behind its remote counterpart