NLP(二)_汉语言分词技术-最大匹配法
前述
词是自然语言中最小的有意义的构成单位。汉语文本是基于单字的文本,汉语的书面表达方式以汉字作为最小单元,词与词之间没有明显的界限标志,因此,分词是汉语文本分析处理中首先要解决的问题之一。
分词可能是自然语言处理中最基本的问题,在英文中,天然地使用空格来对句子做分词工作,而中文就不行了,没有特点符号来标志某个词的开始或者结尾,而分词通常对语义的理解是特别重要的
汉语言分词系统面临的困难
- 如何识别未登录词(新词):词典系统没有收录的词。
- 专有名词:中文人名(“朱镕基总理”)、地名、机构名(“杭州哇哈哈集团”)、外国译名(“奥斑马、乔丹”)、时间词(1979年5月26日);
- 重叠词:“高高兴兴”;
- 派生词(衍生词):“一次性用品”、“精致的猪猪女孩”、“佛系”;(最初是英语的gouci)
- 与领域系相关的术语(互联网、人工智能);
- 如何廉价高效的获取分词规则
- 词语边界歧义,指的是对于一个给定的汉语句子或汉字串,有多种词语边界划分形式。包括组合歧义和交叉歧义。
- 实时性问题:分词算法的准确性和速度。
分词规范
实例:
结合紧密、使用稳定的二字或三字词:
发展、可爱、红旗、对不起、自行车、青霉素
四字成语一律为分词单位:
胸有成竹、志存高远
五字或五字以上的谚语、格言等,分开后如不违背原有组合的意义,应予以切分。
时间/就/是/生命
失败/是/成功/之/母
结合紧密、使用稳定的词组则不予切分
不管三七二十一
惯用语和有转义的词或词组,在转义的语言环境下,一律为分词单位:
母女能顶/半边天
他/像个/铁公鸡
略语一律为分词单位(形式较长的名词或常用短语的简化形式)
科技、奥运会、工农业
分词单位加形成儿化音的“儿”:
花儿、悄悄儿、玩儿
阿拉伯数字任然保留原有形式
现代汉语中的其他语言的汉字音译外来词,不予切分:
巧克力、吉普
不同的语言环境中的同形异构现象,按照具体语言环境的语义进行切分:
把/手/举起来
这个/把手/是木制的
动词分词规范简介:
动词前的否定副词一律单独切分
用肯定加否定的形式表示疑问的动词词组一律切分,不完整的则不予切分:
说/没/说、相信/不/相信
动宾结构的词
开会、跳舞、解决/吃饭/问题
结合不紧密或是有众多与之相同的结构词组的动宾词组一律不予切分
跳/新疆/舞、吃/两顿/饭
复合趋向动词一律不予切分:
出去、进来
常用的分词技术
最大匹配法
最大匹配法的分词实现很简单,并且可以满足一些对分词准确率要求不高的应用系统。基本思想是,选取一定长度(中文词的最大长度一般为6-8个字)的汉字串作为最大字符串,将其同词表中的词语进行匹配,如果匹配不成功,则删掉一个汉字继续匹配,如果匹配成功,当前字符串即为一个词。按照匹配的方向,最大匹配法分为:(1)正向最大匹配法
(2)逆向(反向)最大匹配法
(3)双向最大匹配法
设S'为句子S的一个子串,词表中最长词的字数为m,正向最大匹配法的过程描述如下:
初始化:指针p1指向句子的首位置
算法执行:
(1) 如果p1到达句子末尾,分词结束;
(2) p2 = p1 + m;
(3) 如果p1和p2之间的字符串S'在词表中不存在,p2--,重复(3);
(4) 如果p1和p2之间的字符串S'在词表中存在,则S'是一个词,p1 = p2+1,转(1);
例如:“计算机科学和工程”
逆向最大匹配法从句尾开始对句子进行扫描,算法的过程描述如下:
初始化:指针p1指向句子的末尾位置
算法执行:
(1) 如果p1到达句子首位置,分词结束;
(2) p2 = p1 - m;
(3) 如果p1和p2之间的字符串S'在词表中不存在,p2++,重复(3);
(4) 如果p1和p2之间的字符串S'在词表中存在,则S'是一个词,p1 = p2-1,转(1);
例如:“计算机科学和工程”
如果句子中不存在歧义,则分词的结果是一致的。但如果存在歧义,则切分结果不完全相同。例如,设词典中最长词的字数为7,输入的句子为:他是研究生物化学的。两种方法的切分结果如下:
正向切分结果:他/是/研究生/物化/学/的 。
反向切分结果:他/是/研究/生物/化学/的 。
无论正向匹配还是逆向匹配,均无法发现句子中的歧义,实际的分词算法中,常使用双向最大匹配法来检测歧义:比较正向和反向的切分结果,其中不一致的地方即是存在歧义的字符串。如上例中,“研究生物化学”的切分结果不一致,则该字符串中存在歧义。分词算法中,常利用双向最大匹配法发现歧义,再进一步对歧义词进行切分。
歧义词切分
分词中的歧义有两类,组合型歧义和交叉型歧义:
A、X、B分别为汉字串,如果其组成的汉字串AXB满足AX和XB同时为词,则汉字串AXB为交集型歧义字段。
例如:“研究生命的起源”可以切分为研究 生命 的 起源
研究生 命 的 起源
汉字串AB满足A、B、AB同时为词,则该汉字串为组合型歧义字段。
例如: “他从马上下来”可以切分为
他 从 马 上 下来
他 从 马上 下来
在实际的分词中,大部分交集型歧义并不会构成负面的影响,因为其在整体的语料中出现的比例比较低。
很多实际的分词系统中,并不考虑句子中歧义字段的歧义类型,而是利用概率模型对句子做统一的处理。
NLP(二)_汉语言分词技术-最大匹配法的更多相关文章
- NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ...
- 【nlp】中文分词基础原则及正向最大匹配法、逆向最大匹配法、双向最大匹配法的分析
分词算法设计中的几个基本原则: 1.颗粒度越大越好:用于进行语义分析的文本分词,要求分词结果的颗粒度越大,即单词的字数越多,所能表示的含义越确切,如:“公安局长”可以分为“公安 局长”.“公安局 长” ...
- SEO-长尾词与分词技术
长尾关键词与分词技术 长尾关键词:网站非目标关键词,能给网站带来流量的关键词. 例如:主关键词是成都网站建设 那么,跟成都网站建设相关的词,就叫做长尾关键词. 比如:成都网站建设哪里好?成都网 ...
- Python 自然语言处理(1)中文分词技术
中文分词技术 中文自动分词可主要归纳为“规则分词”“统计分词”和“混合分词”,规则分词主要是通过人工设立词库,按照一定方式进行匹配切分,实现简单高效,但对新词很难进行处理,统计分词能够较好应对新词发现 ...
- NLP舞动之中文分词浅析(一)
一.简介 针对现有中文分词在垂直领域应用时,存在准确率不高的问题,本文对其进行了简要分析,对中文分词面临的分词歧义及未登录词等难点进行了介绍,最后对当前中文分词实现的算法原理(基于词表. ...
- 安卓开发_数据存储技术_sqlite
一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...
- NLP自然语言处理中英文分词工具集锦与基本使用介绍
一.中文分词工具 (1)Jieba (2)snowNLP分词工具 (3)thulac分词工具 (4)pynlpir 分词工具 (5)StanfordCoreNLP分词工具 1.from stanfor ...
- [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供)
[问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供) \[|A|=\begin{vmatrix} 1 & x_1^2-ax_1 & x_1^3-ax_1^2 &am ...
- 【Lucene3.6.2入门系列】第04节_中文分词器
package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apach ...
随机推荐
- QSS类的用法及基本语法介绍
QSS类的用法及基本语法介绍 目录 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式8.1. 相对定 ...
- tpot从elastic search拉攻击数据之三 用于拉取的java程序
package download; import org.json.JSONArray; import java.io.*; import java.net.URL; import java.net. ...
- CNI flannel插件
// plugins/meta/flannel/flannel.go func cmdAdd(args *skel.CmdArgs) error 调用n, err := loadFlannelNetC ...
- spring-知识小结之注解为属性赋值
<1>.本类中的属性赋值 public class UserServiceImpl implements UserService { //按照类别赋值 // @Autowired //按照 ...
- Python3+Selenium3自动化测试-(一)
完成环境的安装并测试之后,我们对Selenium有了一定的了解了,接下来我们继续驱动浏览器做一些基本操作: 窗口尺寸设置.网页截图.刷新.前进和后退 窗口尺寸设置 在测试过程中,我们可能会要求打开浏览 ...
- SVN学习一
svn是subversion的缩写形式. svn是一个版本控制软件. 目标: 1.允许开发同时进行工作. 2.不覆盖其他人的文件变化. 3.保持历史的每一个版本. 版本控制系统分为两类: 1.集中式版 ...
- Springboot入门-日志框架配置(转载)
默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台. Logback是log4j框架的作者开发的新一代日志框架,它效率更高.能够适应诸多的运行环境,同时天然支 ...
- 阿里云上Docker Compose部署wordpress
先上官方文档: https://docs.docker.com/compose/wordpress/ 我的环境: [root@xyjk1002 ~]# cat /etc/redhat-release ...
- 用Tchromium替代webbrowser提交网页表单有关问题
用Tchromium替代webbrowser提交网页表单有关问题 提交表单时,使用js脚本,然后用 chrm.browser.Frame['ff'].ExecuteJavaScript 提交就可以 ...
- 名称空间(Namespaces)(转)
大致来说,命名空间只是将名称映射到对象的容器.正如你可能已经听到的,Python中的所有内容 - 字符串,列表,词典,函数,类等都是一个对象.这样的“名称与对象”的映射使我们能够通过分配给它的名称访问 ...