二元语法与中文分词

之前的一篇文章里(自然语言处理 - 分词初窥)中我们介绍并实现了基于词典的最大匹配分词方法。这种方法简单直观,且词典扩充很方便。但词典分词难以消除歧义,给定两种分词结果“商品 和服 务”以及“商品 和 服务”,词典分词不知道哪种更加合理。

但对于人类来说,我们平时接触的都是第二种分词方案,所以我们知道第二种更加合理,因此可以判定第二种是正确地选择。这就是利用了统计自然语言处理。统计自然语言处理的核心话题之一,就是如何利用统计手法对语言建模,

语言模型

模型指的是对事物的数学抽象,那么语言模型指的就是对语言现象的数学抽象。形式化上讲,给定一个句子,语言模型就是计算句子的出现概率 的模型,而统计的对象就是人工标注而成的语料库。

举个例子,对于下面的小型语料库:

商品 和 服务
商品 和服 物美价廉
服务 和 货币

每个句子出现的概率都是 1/3,这就是语言模型。然而 的计算非常难:句子数量无穷无尽,无法枚举。即便是大型语料库,也只能“枚举”有限的句子。实际遇到的句子大部分都在语料库之外,意味着它们的概率都被当作 0,这种现象被称为数据稀疏

考虑到很多句子复用相同的词语,如果把句子看成词语列表 ,其中,每一个 都是一个词语,那么语言模型可以定义为:

其中 (Begin Of Sentence) ,(End Of Sentence) 来标记句子首尾的两个特殊"单词"。

然而随着句子长度的增大,语言模型会遇到如下两个问题:

  1. 数据稀疏:长度较大的句子出现频率较低,导致联合概率为 0
  2. 计算代价大:随着句子中词语的增多,需要存储的单词间的联合概率值也越多

马尔可夫过程

马尔可夫过程(Markov process)是一类随机过程。它的原始模型马尔可夫链,由俄国数学家A.A.马尔可夫于1907年提出。该过程具有如下特性:在已知目前状态的条件下,它未来的演变不依赖于它以往的演变。例如森林中动物头数的变化构成——马尔可夫过程。在现实世界中,有很多过程都是马尔可夫过程,如液体中微粒所作的布朗运动、传染病受感染的人数、车站的候车人数等,都可视为马尔可夫过程。

每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔可夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态,这个也叫作马尔可夫性质。用数学表达式即为:

n 元语言模型

这个"模型的每个状态都只依赖于之前的状态"的假设即称为马尔科夫假设。这个假设可用来简化语言模型,我们可以假设每个词语的出现概率仅依赖于前一个 词语。此时的语言模型称为二元语法模型,对应地,假设每个词语出现的概率仅信赖于前 n 个词语的模型即n 元语法模型

语言模型给出了如何计算句子出现概率的方法(函数),具体的概率值取决于实际使用到的语料库。一些常用的语料库有:

  1. 《人民日报》语料库 PKU
  2. 微软亚洲研究院语料库 MSR
  3. 香港城市大学 CITYU(繁体)
  4. 台湾中央研究院 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/。

参考

  • 二元语法与中文分词

自然语言处理 - 二元语法与中文分词相关推荐

  1. 自然语言处理之中文分词(基于Python)

    人生苦短,我用python 除了给你生孩子,python都能给你做到. 这句话所言不假,python拥有丰富的库,能完成各种各样的的功能. 只有你想不到的,没有python做不到的.下面我们来看看py ...

  2. 2019年了,中文分词到底该怎么做?中文分词十年方法大盘点(附下载)

    https://www.toutiao.com/a6655113946241958403/ 2019-02-07 12:41:03 基本上所有的中文自然语言处理任务,第一步都需要先分词.中文分词是中文 ...

  3. 【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码

    本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词:[统计学习方法]第十章 隐马尔可夫模型 · 代码目的:手写HMM进行中文分词 作者:CSDN 征途黯然. 一.数据集   数据集的形式如下 ...

  4. 【自然语言处理】N-最短路径法进行中文分词

    本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词 · 参考文章:https://www.cnblogs.com/Finley/p/6619187.html · 代码目的:手写N-最短路径法 ...

  5. r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...

    斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger), ...

  6. 【Python自然语言处理】中文分词技术——统计分词

    中文分词方法 本文参考自书籍<Python自然语言处理实战:核心技术与算法> 用做个人的学习笔记和分享 1. 规则分词 规则分词的详细笔记 2. 统计分词 2.1 一般步骤 建立统计语言模 ...

  7. 【Python自然语言处理】中文分词技术——规则分词

    中文分词方法 本文参考自书籍<Python自然语言处理实战:核心技术与算法> 用做个人的学习笔记和分享 1. 规则分词 规则分词是一种机械分词方法,主要通过维护词典,在切分语句时将语句的每 ...

  8. 自然语言处理与中文分词的难点总结--学习笔记

    自然语言处理与中文分词的难点总结 2012年7月2日 10:01 中文自动分词 指的是使用计算机自动对中文文本进行词语的切分,即像英文那样使得中文句子中的词之间有空格以标识.中文自动分词被认为是中文自 ...

  9. 自然语言处理系列十七》中文分词》分词工具实战》Python的Jieba分词

    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书<分布式机器学习实战>(人工智能科学与技术丛书)[陈敬雷编著][清华大学出版社] 文章目录 自然语言处理系列十七 分词工 ...

最新文章

  1. PHP mysql数据迁移,【MySQL】迁移数据目录php-php教程
  2. python-进程、线程
  3. C++ 类型转换 :C语言的类型转换、C++的四种强制类型转换、explicit
  4. 前沿观察 | SageDB:一个自学成才的数据库
  5. codeforces gym-101736 Farmer Faul 平衡树+并查集
  6. 无锁队列设计思路以及简要代码
  7. linux ftp下载函数函数,FTP下载的函数
  8. wxPython4.0中ListCtrl入门
  9. Kali Linux 秘籍 第二章 定制 Kali Linux
  10. android开发工具哪个好_小程序开发工具怎么用?哪个好用?
  11. 好的计算机教学,如何营造良好的计算机课堂教学氛围
  12. c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
  13. 金融分析师 python_金融分析中的Python环境搭建
  14. Tomcat的下载与安装
  15. 教师专用录微课及剪辑软件推荐-camtasia及使用教程
  16. tkmybatis 子查询_【10/21】南池袋送餐桌和椅子 收纳盒子 洗衣机 | 下落合站送洗衣机...
  17. 对联盟链的零星想法,欢迎指正交流
  18. HTML点击图片,弹窗并放大
  19. 啥是单点登录及单点登录原理
  20. C语言_统计单词长度

热门文章

  1. 2022年6月电子学会考级试卷真题解析(含答案和所有文档下载)
  2. 用20行python代码给证件照换底色
  3. 不能相见的爱人——丘比特的爱情故事
  4. Git版本控制与工作流
  5. 计算机毕业设计springboot小组学习系统
  6. VirtualBox 虚拟机安装Windows10,珍藏版!!!
  7. 基于大学生内卷行为的调查研究
  8. 【315期】面试官问:在大数据量情况下,如何优化 ElasticSearch 查询?
  9. 网络安全与网站安全及计算机安全:如何使用Kali Linux的MSF进行MS12-020安全演练
  10. 在git上传报错Updates were rejected because the tip of your curren branch is behind its remote counterpart