词法分析

1.语言的分类

传统语言学根据词的形态结构把语言分为三大类:

分析型语言

黏着性语言

曲折型语言

1.1分析型语言

词基本没有专门表示语法意义的附加成分

形态变化少

语法关系靠词序、虚词来表示

如:汉语、藏语

1.2黏着型语言

词内有专门表示语法意义的附加成分,一 个附加成分表达一种语法意义,一种意义 也基本上由一个附加成分来表达

词根或词干跟附加成分的结合不紧密

如:日语

1.3曲折型语言

用词的形态变化来表示语法关系,一个形态成分可以表示若干种不同的语法意义

词根或词干跟词的附加成分结合得很紧密, 往往不容易截然分开

如:英语、德语、法语等

简单比较(汉语与英语的比较)

汉语:词与词紧密相连,没有明显的分界标志

英语:用空格隔开,无需分词

汉语的词形态变化少,靠词序或虚词来表示, 而英语用词的形态变化来表示语法关系

所以对汉语进行词的自动切分  对英语进行词的形态还原

2.汉语的自动分词

根据GB-13715规范:

汉语信息处理

• 用计算机对汉语的音、形、义等信息进行的处理。

• 最小的能独立运用的语言单位

词组

• 由两个或两个以上的词,按一定的语法规则组成,表 达一定意义的语言单位

分词单位

• 汉语信息处理使用的、具有确定的语义或语法功能的 基本单位。它包括本规范的规则限定的词和词组。

汉语分词

• 从信息处理需要出发、按照特定的规范,对汉语按分 词单位进行划分的过程。

汉语自动分词主要包括:

1 根据分词规范,建立机器词典;

2 根据分词算法和机器词典,把字串切分为词 串。

3 机器学习方法和统计方法

构建词典:把没有明显分界标志的字串切分为词串。 包括:标点符号、数字、数学符号、各种 标记、人名、地名、机构名等未登录词的识别。

构建分词词典是一件非常难并且乏味的事情,那些构建词典的大佬都是值得敬佩的,像大佬鞠躬

汉语分词的重要性

汉语中词是汉语语言中最小的独立运用单位

分词是句法分析的基础,是所有应用系统 进行的第一步。

只有进行了分词,才可以继续进行下面的 语法分析、语义分析等。

一般句法分析所凭借的语法知识主要来自 机器词典和句法规则库,这些都是根据词 条来收录的,因此需要事先对一连串的汉字进行分词

应用包括:词频统计、自动摘要、自动分类、 机器翻译等都需要事先进行分词。

汉语分词又分为基于规则和基于统计的分词方法

基于规则的分词法:

(1) 事先人工建立好分词词典和分词规则库。

(2) 原理为基于字符串匹配进行分词,这样就要 求有足够大的词表为依据。

(3) 通过一定的算法来实现,如正向最大匹配法、 逆向最大匹配法、双向匹配法等。

(4) 优缺点:当分词词典所收容的词较少时,显 然覆盖度就有限,分词的正确率就低。

基于统计的分词法:

(1)利用字与字间、词与词间的同现频率作为分词的依 据, 可以没有建立好的词典

(2)需要大规模的训练文本, 用来训练模型参数

(3)优点:不受应用领域的限制;

(4)缺点:训练文本的选择将影响分词结果

3.基于规则的分词算法

3.1正向最大匹配分词法(MM)

算法描述:

设MaxLen表示最大词长,D为分词词典

(1) 从待切分语料中按正向取长度为MaxLen的字串str,令 Len=MaxLen;

(2) 把str与D中的词相匹配;

(3) 若匹配成功,则认为该字串为词,指向待切分语料的指 针向前移Len个汉字(字节),返回到(1);

(4) 若不成功:如果Len>1,则将Len减2,从待切分语料中 取长度为Len的字串str,返回到(2)。否则,得到长度为 2的单字词,指向待切分语料的指针向前移1个汉字, 返回(1)。

举例:比如说有一个分词词典:我,我是,我在,吃饭

比如说我们要对一个句子“我在吃饭”进行分词,那么我们首先先设定一个MaxLen,这里我们将MaxLen设为3,那么我们从句子里面取出三个字也就是 “我在吃”  去词典里面去匹配,发现词典里面匹配不到   “我在吃”   那么我们进行第(4)步操作,我们将长度减一,也就是变成  “我在”  去词典里面匹配,发现匹配成功!然后我们将指针向前移两个字,再取最后的  “吃饭”   去词典里面匹配,匹配成功,那么我们最后的分词结果为:

“我在 / 吃饭”

正向最大匹配分词缺点:

忽视“词中有词”的现象,导致切分错误

如切分:”幼儿园地节目”

切分结果为:幼儿园/地/节目/

正确结果为:幼儿/园地/节目/

最大词长难以确定

太长,匹配所花时间多,算法时间复杂度提高

太短,不能切分长度超过它的词,导致切分正确率 降低

3.2逆向最大匹配法(RMM)

与正向匹配算法反向,一开始的时候从尾部开始取,去MaxLen个字,然后匹配不成功的时候len减一则减去开头那个字

3.3双向匹配法

算法描述:

对同一个字符串分别采用MM和RMM两种方 法进行切分处理,如果能够得到相同的切分 结果,则认为切分成功,否则认为有疑点。

针对疑点:

•采用上下文信息,根据歧义规则库进行排歧;

•或进行人工干预,选取一种切分为正确的切分。

优点:

克服了MM方法里忽视“词中有词”的现象

缺点:

• 于算法复杂度的提高

• 并且为了支持正反向匹配算法,词典设置要复杂

• 对某些句子仍然无法发现歧义

4.基于统计的中文分词算法

概率最大分词方法

基本思想:选择概率最大的分词路径作为最优结果:

输入:字符串S:幼儿园地节目

输出:

词串W1:幼儿园/ 地/ 节目/

词串W2:幼儿/ 园地/ 节目/

即求 max(P(W1|S), P(W2|S))

依据贝叶斯定理及独立性假设:

举例:

我们这里随便假设一个概率表格,我们对字符串 “有意见分歧” 进行分词,我们给出两种分词的路径如下:

                      

经过计算:

                  可见:P(W1)>P(W2)                   所以我们最后的结果为:有 / 意见 / 分歧 /

概率最大分词方法优化:

根据分词的左临词来决定总的概率

利用动态规划算法来实现: 即最优路径中的第i个词wi 的累计概率等于它的左相 邻词wi-1的累积概率乘以wi 自身的概率

具体步骤:

对一个待分词的字串S,按照从左到右的顺序取出全 部候选词w1,w2,…,wi ,wn;

计算每个候选词的概率值P(wi ),记录每个候选词的全部左邻词;

计算每个候选词的累计概率,累计概率最大的候选词为最佳左邻词;

如果当前词wn是字串的尾词,且累计概率P’(wn)最大,则wn是S的终点词;

从wn开始,按照从右到左顺序,依次将每个词的最 佳左邻词输出,即S的分词结果.

举例:

我们下面使用概率最大分词方法来对 “结合成分子时”

概率表:

可见,我们执行最后一步,从“时”开始往左进行扫描最佳左邻词,“时”的最佳左邻是 分子(P(分子)>P(子))

以此类推,我们最后得到的概率最大分词为:结合/ 成/ 分子/ 时/

5.评测指标

正确率 (precision, P) :测试结果中正确切分的个数 占系统所有输出结果的比例

召回率(Recall ratio, R):测试结果中正确结果的个 数占标准答案总数的比例

F-度量值:正确率和召回率的综合值

本菜鸟学习不好,如有不妥望各位大佬指点

如要转载请说明原文:https://blog.csdn.net/qq_36652619/article/details/83789218

自然语言菜鸟学习笔记(二)相关推荐

  1. 自然语言菜鸟学习笔记(七):RNN(循环神经网络)及变体(LSTM、GRU)理解与实现(TensorFlow)

    目录 前言 RNN(循环神经网络) 为什么要用循环神经网络(RNN)? 循环神经网络(RNN)可以处理什么类型的任务? 多对一问题 一对多问题 多对多问题 循环神经网络结构 单层网络情况 正向传播 反 ...

  2. NLP自然语言处理学习笔记(二)Word2Vec

    NLP自然语言处理学习笔记(二)Word2Vec 一.Word2Vec 二.负采样 本文是根据吴恩达教授的教学视频来整理的学习笔记,部分图片来源于视频的截图.原教学视频连接 https://mooc. ...

  3. 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)

    Java提升篇11(Java其它高级特性--注解与反射) 注解(Annotation) JDK内置注解 自定义注解 元注解(meta-annotation) 反射(reflection) 动态语言 反 ...

  4. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

  5. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  6. Mongodb使用学习笔记(二)

    文章目录 Mongodb使用学习笔记(二)之查询篇 1. MongoDB命令学习 (1) MongoDB 查询文档 1.1 全部查询 1.2 单条件查询 1.3 多条件查询 1.3.1 AND拼接多条 ...

  7. 五子棋人机大战(Java菜鸟学习笔记)

    五子棋人机大战(Java菜鸟学习笔记) 逻辑是: 1.绘制棋盘: 2.人机开始各执行一次操作,每进行一次操作就进行判断输赢 其中判断输赢主要分成四个方向,横向.纵向以及交叉向,此时可以画图来找规律实现 ...

  8. 对python的评价语_Python自然语言处理学习笔记之评价(evaluationd)

    对模型的评价是在test set上进行的,本文首先介绍测试集应该满足的特征,然后介绍四种评价方法. 一.测试集的选择 1.首先,测试集必须是严格独立于训练集的,否则评价结果一定很高,但是虚高,不适用于 ...

  9. 自然语言处理学习笔记(1)——词典分词

    自然语言处理学习笔记(1)--词典分词 一.相关定义(P32) 中文分词:将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于源文本. 词典分词:一个确定的查词与输出的规则系统,仅需要一部词典和一 ...

最新文章

  1. 数据竞争(data race)问题分析的利器——valgrind的Helgrind
  2. Future 模式介绍
  3. This function or variable may be unsafe
  4. Mac 安装rabbitmq
  5. L1-045 宇宙无敌大招呼
  6. 数组指针和指针数组的区别(1)
  7. 名企进名校精选IT人 07年毕业生就业看好
  8. Oracle入门(十四.6)之使用标量数据类型
  9. mongodb最多数据库_2020 年3 月数据库排行:前 10 整体下行,出新技术了?
  10. C语言程序设计第9堂作业
  11. 6.企业应用架构模式 --- 会话状态
  12. [Linux学习]更改默认启动图形界面或命令行
  13. RoboBee和RoboFly领衔微型昆虫机器人:从“上天入海”到“挣脱束缚”
  14. FPGA实验-VGA显示
  15. Blogspot.com再次解封
  16. spring boot打包本地idea跑能行,上线jar包跑不行 解决
  17. 论文阅读《Characterizing BDS signal-in-space performance from integrity perspective》3
  18. 打开小米5开发者选项
  19. Charles工具使用-pc端
  20. js中push使用 (数组)

热门文章

  1. Matplotlib--用Python创建各种数据可视化图形
  2. Unty3d 中textmeshpro如何生成中文字体
  3. 入网指南:一文读懂你身边的网络
  4. 高中的计算机考试是什么水平,高中生每次考试,自己老师的评分,为何与电脑阅卷的成绩差那么多...
  5. Python开发技巧-教你制作Python进度条
  6. Android 常用ADB命令汇总!!! -- 持续补充
  7. Codeforces 1634 C. OKEA ——简单思维
  8. 汇总我在IDEA中使用Maven导包遇到的问题
  9. 百度全民小视频主播火热招募中,星球传媒教你如何实现自己的主播梦
  10. 完美国际最新服务器,完美国际2:新服“永恒”明日开启,新老朋友踏实安家...