海德格尔说“词语破碎处,无物可存在”。中文句子不像英文那样的词与词之间有显示空格边界,使得词和词组边界模糊。

为了让计算机更容易理解文本,通常中文信息处理的第一步是中文分词。中文分词是在中文句子中的词与词之间加上边界标记。

本文首先介绍词、词组、句子、语言模型等基本概念及基本原理,比如:短语结构语法(PSG)模型、n元语法模型( n-gram)、神经网络语言模型(NNLM)、Masked Language Model(MLM);

接着介绍主要中文分词方法,比如最短路径分词、n元语法分词、由字构词分词、循环神经网络分词、Transformer分词;

然后介绍当前主要使用的分词工具,比如jieba、HanLP、FoolNLTK;

最后抛出个人认为垂直领域如何中文分词及发展趋势。

文章目录如下:

一、中文分词原理
1、中文分词
2、词、词组、句子
3、语言模型
4、中文分词发展简史
二、中文分词方法
1、最短路径分词
2、n元语法分词
3、由字构词分词
4、循环神经网络分词
5、Transformer分词
三、中文分词工具
1、jieba
2、HanLP
3、FoolNLTK
四、总结
1、规则 VS 统计 VS 深度
2、垂直领域中文分词
3、中文分词发展趋势

直接上PPT

中文分词的原理、方法与工具

为什么要中文分词?

为什么要中文分词?

一、中文分词原理

中文分词原理的目录

1、中文分词

什么是中文分词?

给出定义:中文分词是在中文句子中的词与词之间加上边界标记。

什么是中文分词?

中文分词总的来说就两种方法:一种是由句子到词;另一种是由字到词。

中文分词的基本概念、语言模型

中文分词本质:划分词的边界

中文分词本质:划分词的边界

同时,中文分词也面临着分词规范、歧义切分、新词识别等挑战。

中文分词面临

2、词、词组、句子

什么是词?什么是词组?什么是句子?

搞懂这些基本概念,更容易处理它们。

什么是词?什么是词组?什么是句子?

3、语言模型

什么是语言模型?

由语音、词汇、语法构成的交流模型。

语言模型

短语结构语法( Phrase Structure Grammar, PSG)

语言模型——PSG

n元语法模型( n-gram)

语言模型—— -gram

常见的n元语法模型如下表所示:

常见的n元语法模型

神经网络语言模型(NNLM)

神经网络语言模型(NNLM)

Masked Language Model(MLM)

Masked Language Model(MLM)

4、中文分词发展简史

中文分词发展简史

二、中文分词方法

中文分词代表方法有最短路径分词、n元语法分词、由字构词分词、循环神经网络分词、Transformer分词等。

中文分词方法的目录

1、最短路径分词

最短路径分词

2、n元语法分词

n元语法分词

举一个n元语法分词的例子。

一个n元语法分词的例子

3、由字构词分词

由字构词分词

常用的三类由字构词

常用的三类由字构词

4、循环神经网络分词

循环神经网络分词

循环神经网中文分词有:LSTM、LSTM+CRF、BiLSTM-CRF、LSTM-CNNs-CRF等。

循环神经网络中文分词的结构图如下:

循环神经网络中文分词的结构图

5、Transformer分词

2014年,Google在《Recurrent Models of Visual Attention》论文中提出Attention机制。

2017年,Google在《Attention is All You Need》论文中提出Transformer模型。

Transformer分词

2019年,邱锡鹏在《Multi-Criteria Chinese Word Segmentation with Transformer》论文中提出Transformer中文分词模型如下图所示:

Transformer中文分词模型

Transformer中文分词学习结果如下图所示:

Transformer中文分词学习结果

三、中文分词工具

中文分词工具工具很多,这里我们选择使用较多,关注度较高的jieba、HanLP、FoolNLTK等来介绍。

中文分词工具的目录

jieba、HanLP、snownlp、FoolNLTK、LTP、THULAC等分词工具概览。

jieba、HanLP、snownlp、FoolNLTK、LTP、THULAC等分词工具概览

1、jieba

jieba概述

jieba概述

jieba分词原理:HMM(隐马尔可夫模型)。更多HMM内容可参考:

刘启林:隐马尔可夫模型HMM的原理及应用​zhuanlan.zhihu.com

HMM中文分词的图结构

jieba中文分词代码实例如下:

# jieba 0.42.1import jiebastring = '我喜欢北京冬奥会'print(",".join(jieba.cut(string)))

2、HanLP

HanLP概述

HanLP概述

HanLP实现的基于CRF分词原理如下:

CRF中文分词的图结构

HanLP中文分词代码实例如下:

# HanLP1.7.7from pyhanlp import *string = '我喜欢北京冬奥会'HanLP.Config.ShowTermNature = Falseprint(HanLP.segment(string))

3、FoolNLTK

FoolNLTK概要

FoolNLTK概要

FoolNLTK分词原理如下:

BiLSTM-CRF模型架构

BiLSTM-CRF模型架构

各分词工具对比表如下:

分词工具对比表

中文分词工具使用总结如下:

中文分词工具使用总结

四、总结

总结的目录

1、规则 VS 统计 VS 深度

基于规则分词、基于统计分词与基于深度学习分词的对比。

基于规则分词、基于统计分词与基于深度学习分词的对比

2、垂直领域中文分词

垂直领域的中文分词现状与挑战。

垂直领域中文分词

3、中文分词发展趋势

中文分词发展趋势

中文分词呈现两个发展趋势:

1、越来越多的Attention方法应用到中文分词上。

2、数据科学与语言科学融合,发挥彼此优势。

由于当前自己的能力和水平的限制,我的可能是错的,或者是片面,这里抛砖引玉,期待与您一起交流探讨。

参考文献:

1、中国社会科学院语言研究所词典编辑室, 现代汉语词典(第7版), 商务印书馆[M], 2017.01

2、宗成庆, 统计自然语言处理(第2版), 清华大学出版社[M], 2013.08

3、黄昌宁, 赵海, 由字构词——中文分词新方法, 中国中文信息学会二十五周年学术会议[J], 2006

4、姜维, 文本分析与文本挖掘, 科学出版社[M], 2018.12

5、Xipeng Qiu等, Multi-Criteria Chinese Word Segmentation with Transformer, 2019.06

中文路径_中文分词的原理、方法与工具相关推荐

  1. 使GDAL库支持中文路径或中文文件名的处理方法

    之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图: 解决方法: 1.      在所有使用GDALAllRegist ...

  2. cv2.imread无法读取/保存中文路径下的图片的解决方法

    cv2.imread无法读取/保存中文路径下的图片的解决方法 关于无法读取 用cv2.imread读取中文路径下的图片会出现空.这种情况下windows会出现,mac好像还没出现过. 解决方法是,使用 ...

  3. GDAL C#中文路径,中文属性名称乱码问题

    昨天写的博客,将C#读取shp中文属性值乱码的问题应该可以解决,博客地址为:http://blog.csdn.net/liminlu0314/article/details/54096119,然后又测 ...

  4. python图片(带有中文路径和中文名称的)读写

    import cv2 import numpy as np import os # 读带有中文路径和中文名称的图片 def cv_imread(file_path):cv_img = cv2.imde ...

  5. php900塞孔油墨_丝印产品塞孔方法和工具的制作方法

    丝印产品塞孔方法和工具的制作方法 [专利说明] [技术领域] [0001]本发明涉及一种丝印领域,特别涉及一种丝印产品的塞孔方法. [[背景技术]] [0002]印制板也称为印制线路板或印制电路板(P ...

  6. python支持中文路径_打开python遍历中文目录得到的文件路径报错

    各位朋友们好,我是一名python新手,现在遇到一个问题,恳请各位朋友们能指点一下我. 我的环境是:ubuntu14.04系统,python2.7 用python遍历一个目录,目录层次结构如下: 这是 ...

  7. python找不到文件中文文件名_找不到的方法虽然存在于同一个py文件中 - python

    我是python的新手,我的背景是VB.我收到错误,因为"NameError:name'GetASetting'未定义". 日志:[INFO ] Kivy v1.8.0 Purge ...

  8. composer 路径_深入学习Composer原理(三)

    本系列第三篇文章,一起了解下PSR规范中的PSR4和PSR0规范 首先恭喜大家,包括我自己,坚持到了现在.这篇文章之后,Composer的基础原理就清晰明了咯.也就是说,Composer所利用的正是s ...

  9. C++正则匹配中文乱码_中文正则表达式匹配-正则中文匹配

    使用std::wregex #include <QtCore/QCoreApplication> #include <iostream> #include <string ...

最新文章

  1. hdu5701-中位数计数
  2. Java线程池原理及使用
  3. 一元多项式的加减以及求导
  4. bob战队 rust_c、rust、golang、swift性能比较
  5. html——windows.onload()与$(document).ready()区别
  6. java子网划分_IP地址子网划分_动力节点Java学院整理
  7. 你必须知道的10项大数据思维原理
  8. 西电软件工程概论复习纲要
  9. 树莓派是什么?能干什么?
  10. HTML5和CSS3 API文档分享
  11. pip install:Requirement already satisfied
  12. 日本护照持有者可以免签进入全球193个目的地,创下历史记录
  13. 教育直播系统如何开发?
  14. 道不投不足与谋:(,决定放弃原来的博客空间,不再更新
  15. 腾讯微博android版本,腾讯微博 Android版
  16. STM32读取SHT3x系列温湿度传感器,标准库和HAL库
  17. python接口自动化项目_Python+requests接口自动化完整项目框架整理笔记
  18. 搜索引擎与PageRank
  19. ROS wiki系列|通过ROS wiki-tutorials学习服务和参数
  20. 云服务器流量是什么东西_流量服务-是什么

热门文章

  1. 一个短小精悍的在线jshint工具
  2. SAP JAM tag Cloud
  3. CRM_REPORT_RF_CHECK_AUTHORITY call CRM_REPORT_RF_AUTH_OBJ_ORD_LP
  4. 使用SAP WebIDE往Github上推送代码修改时遇到错误消息 Commit request failed Commit failed. Ref must be HEAD and is HEAD
  5. 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...
  6. python3.8.2中文手册chm_springboot2.2.X手册:构建全局唯一的短链接数据中心
  7. 计算机图形学跳一跳_“跳一跳”刷不到第一?试试这几个微信小游戏!
  8. python打开方式包括_python打开文件的方式有哪些
  9. linux QT 结束当前进程_软件特攻队|为什么 Qt 成为 c++ 界面编程的第一选择?
  10. python打字案例_Python 小案例 打字练习