NLP-中文分词

中文分词

1、中文分词研究背景及意义

  • 和大部分西方语言不同,书面汉语的词语之间没有明显的空格标记,句子是以字串的形式出现。因此对中文进行处理的第一步就是进行自动分词,即将字串转变成词串。 比如“中国建筑业呈现新格局”分词后的词串是 中国/建筑业/呈现/新/格局。
  • 为什么中文分词如此重要呢,是因为它是处理中文的语义分析、文本分类、信息检索、机器翻译、机器问答等问题的基础。如果分词效果不好,很有可能会严重影响到后续的研究。 因为中文存在交集歧义,组合歧义,无法在句子中解决的歧义,具有未登录词等等特征,使得中文分词很难。
歧义类型分词结果 1分词结果 2
交集歧义研究/生命/的/起源研究生/命/的/起源
组合歧义他/从/马/上/下来他/从/马上/下来
无法在句子中解决的歧义南京市/长江大桥南京市长/江大桥
未登录词拜登/和/特朗普/通话拜登/和/特朗/普通话
颗粒选择联想公司联想/公司

2、中文分词主要方法

  • 中文分词根据实现特点大致可分为两个类别:基于词典的分词方法、基于统计的分词方法。

  • __ 基于词典的分词方法 __:基于词典的分词方法首先会建立一个充分大的词典,然后依据一定的策略扫描句子,若句子中的某个子串与词典中的某个词匹配,则分词成功。 常见的扫描策略有:正向最大匹配、逆向最大匹配、双向最大匹配和最少词数分词。

    • 正向最大匹配
      • 对输入的句子从左至右,以贪心的方式切分出当前位置上长度最大的词,组不了词的字单独划开。其分词原理是:词的颗粒度越大,所能表示的含义越精确。
    • 逆向最大匹配
      • 原理与正向最大匹配相同,但顺序不是从首字开始,而是从末字开始,而且它使用的分词词典是逆序词典,其中每个词条都按逆序方式存放。在实际处理时,先将句子进行倒排处理,生成逆序句子,然后根据逆序词典,对逆序句子用正向最大匹配。
    • 双向最大匹配
      • 将正向最大匹配与逆向最大匹配组合起来,对句子使用这两种方式进行扫描切分,如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小集处理。
    • 最少词数分词
      • 即一句话应该分成数量最少的词串,该方法首先会查找词典中最长的词,看是不是所要分词的句子的子串,如果是则切分,然后不断迭代以上步骤,每次都会在剩余的字符串中取最长的词进行分词,最后就可以得到最少的词数。
  • 总结:基于词典的分词方法简单、速度快,效果也还可以,但对歧义和新词的处理不是很好,对词典中未登录的词没法进行处理。

  • __ 基于统计的分词方法 __: 基于统计的分词方法是从大量已经分词的文本中,利用统计学习方法来学习词的切分规律,从而实现对未知文本的切分。随着大规模语料库的建立,基于统计的分词方法不断受到研究和发展,渐渐成为了主流。 常用的统计学习方法有:隐马尔可夫模型 (HMM)、条件随机场 (CRF) 和基于深度学习的方法。

    • HMM 和 CRF
      • 这两种方法实质上是对序列进行标注,将分词问题转化为字的分类问题,每个字有 4 种词位 (类别):词首 (B)、词中 (M)、词尾 (E) 和单字成词 (S),例如:我 (S) 喜 (B) 欢 (E) 计 (B) 算 (M) 机 (E)。由字构词的方法并不依赖于事先编制好的词典,只需对分好词的语料进行训练即可。当模型训练好后,就可对新句子进行预测,预测时会针对每个字生成不同的词位。其中 HMM 属于生成式模型,CRF 属于判别式模型。
    • 基于深度学习的方法
      • 神经网络的序列标注算法在词性标注、命名实体识别等问题上取得了优秀的进展,这些端到端的方法也可以迁移到分词问题上。与所有深度学习的方法一样,该方法需要较大的训练语料才能体现优势,代表为 BiLSTM-CRF。
  • 总结:基于统计的分词方法能很好地处理歧义和新词问题,效果比基于词典的要好,但该方法需要有大量人工标注分好词的语料作为支撑,训练开销大,就分词速度而言不如前一种。在实际应用中一般是将词典与统计学习方法结合起来,既发挥词典分词切分速度快的特点,又利用了统计分词结合上下文识别生词、自动消除歧义的优点。

3、jieba 分词全流程介绍

  • jieba 分词主要通过词典来进行分词及词性标注,两者使用了一个相同的词典。jieba 虽然使用了 HMM 来进行新词发现,但分词的结果优劣很大程度上取决于词典。
  • DAG (有向无环图)
  • 整体工作流程
    • 精确模式与全模式:
    • 搜索引擎模式:
  • HMM
    • HMM 示意图
    • HMM 模型的三个基本假设如下:
      • 有限历史性假设:
        • P(Status[i]|Status[i-1],Status[i-2],… Status[1]) = P(Status[i]|Status[i-1])
      • 齐次性假设 (状态和当前时刻无关):
        • P(Status[i]|Status[i-1]) = P(Status[j]|Status[j-1])
      • 观察值独立性假设 (观察值只取决于当前状态值):
        • P(Observed[i]|Status[i],Status[i-1],…,Status[1]) = P(Observed[i]|Status[i])
    • HMM 联合概率函数
    • HMM 的典型模型是一个五元组:
      • StatusSet: 状态值集合
        • 为 (B, M, E, S): {B:begin, M:middle, E:end, S:single}。分别代表每个状态代表的是该字在词语中的位置,B 代表该字是词语中的起始字,M 代表是词语中的中间字,E 代表是词语中的结束字,S 则代表是单字成词。
        • 示例:给/S 你/S 一个/BE 隐马尔科夫链/BMMMME 的/S 例子/BE 。/S
      • ObservedSet: 观察值集合
        • 为所有汉字 (东南西北你我他…),甚至包括标点符号所组成的集合。
        • 状态值也就是我们要求的值,在 HMM 模型中文分词中,我们的输入是一个句子 (也就是观察值序列),输出是这个句子中每个字的状态值。
      • InitStatus: 初始状态分布
      • TransProbMatrix: 转移概率矩阵
        • 【有限历史性假设】
        • 转移概率是马尔科夫链。Status(i) 只和 Status(i-1) 相关,这个假设能大大简化问题。所以,它其实就是一个 4x4(4 就是状态值集合的大小) 的二维矩阵。矩阵的横坐标和纵坐标顺序是 BEMS x BEMS。(数值是概率求对数后的值)
      • EmitProbMatrix: 发射概率矩阵
        • 【观察值独立性假设】
        • P(Observed[i], Status[j]) = P(Status[j]) * P(Observed[i]|Status[j])
          • 其中,P(Observed[i]|Status[j]) 这个值就是从 EmitProbMatrix 中获取。
    • Viterbi 算法
      • 假设上图为"小王子"的分词示例
      • S、E 代表开始和结束,我们需要找到从 S 到 E 的最大概率路径
      • 中间的矩阵行数等于状态数,列数等于句子长度,矩阵对应位置保存到该节点的最大概率和实现这个概率时上一列节点的状态。
  • 百度 LAC
  • 其它分词器
    • StanfordNLP
    • 哈工大 LTP
    • 复旦 NLP
    • Ansj
    • IK Analyzer

4、分词在搜索中的应用

  • jieba

    • 算法实现

      • 基于前缀词典进行扫描,对句子中汉字所有的可能情况构成有向无环图 (DAG)
      • 基于动归查找最大路径,找出基于词频的最大切分组合
      • 对于未登录词,采用基于字粒度的 HMM + viterbi 进行处理
    • 分词方式

      • 精准匹配
      jieba.lcut('中国科学院计算所')
      Out[13]: ['中国科学院', '计算所']
      
      • 词性标注
      import jieba.posseg as pseg
      Out[17]: [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]
      
      • 搜索分词 (粒度较细,该方法适合用于搜索引擎构建倒排索引)
      jieba.lcut_for_search('中国科学院计算所')
      Out[12]: ['中国', '科学', '学院', '科学院', '中国科学院', '计算', '计算所']
      
    • 自定义能力

      • 自定义词典、词性
      # 单词 词频 词性
      创新办   3   i
      
      • 目前我们只增加了词表,对于词频我们并没有设置,可以基于统计的方法来开发自定义的 tf-idf 文件来优化分词效果
      • 对于未登录词 (新词发现), 我们是可以基于自己的语料来训练 HMM 的状态转移矩阵来优化的
    • 其他开源工具 (均三年以上不更新)

      • 百度 LAC、HanLp、清华 THULAC、北大 pkuseg
    • 中文分词未来的展望

      • 被应用于各种词嵌入工具,Word2vec、Glove、ELMO、BERT, 但也逐渐的被代替 (基于字符/单字), 强依赖中文分词的场景也逐渐的减少
  • IK 分词器 (构建索引及搜索)

    • IK 分词器是基于正向匹配的分词算法
    • LetterSegmenter(字母分词器),CN_QuantifierSegment(量词分词器),CJKSegmenter(中日韩分词器)
    • IK 分词器,基本可分为两种模式 (粒度),一种为 smart 模式,一种为 max 模式
      • max 就是把每种可能的分词结果都给出
      • smart 就是需要在这几种分词模式中,寻找一种认为最合理的分词方式
    • IK 分词器的主要逻辑
      • 词典:原理为前缀树的存储方式,实现为数组 + map
      • 词的匹配:对输入的字符逐字的和字典进行匹配
      • 消除歧义:通过词典匹配出来的切分方式会有多种,寻找最合理的一种方式 (词元个数越少越好、路径跨度越大越好、逆向切分概率高于正向切分、词长越平均越好、词元位置权重比较)
    • 遗留的问题
      • smart 分词的结果并不是 max 的子集,官方推荐用 max 建立索引,用 smart 来搜索,但可能会导致两端对不齐的情况
  • 相关性优化
    • 搜索的目的是要理解用户搜索意图,准确衡量 query 与物料之间的相关程度。其中,query 与物料的相关性 (不单单是文本相似度) 计算是最重要的环节 (“全准优新”)
    • 文本误匹配:
      • 分词错误造成的误匹配
      • 召回时,为了更多的物料能被召回,query 可能会被拆成更细的粒度进行检索,但就会带来准召之间的博弈,例如"北京银行"是想寻找与该公司有关的信息,但"北京"和"银行"可能会分别匹配到相关的物料
    • 语义偏移:query 与物料字面匹配,但主要意图在语义上不相关,例如:“字节”-“字节码”, “一点点”-“每天成长一点点”
  • 搜索相关性技术
    • 基于文本匹配的方法:基于 TF-IDF、BM25 等 Term 匹配来计算文本相似度。优点实现简单、速度快,缺点为泛化性较差,无法处理一词多义或者多词一义的问题,很难避免漏匹配和误匹配的情况
    • 基于表示的语义匹配模型:基于表示方法分别学习 query 和 doc 的语义向量表示,再基于两个向量计算相似度,DSSM
    • 基于交互的语义匹配模型:基于交互的方法不直接学习 query 和 doc 的语义表示向量,而是基于基础信号为两者建立交互,最终通过分类计算相关性得分,ESIM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/487543.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Golang】Go语言编程思想(六):Channel,第三节,使用Channel实现树的遍历

使用 Channel 实现树的遍历 tree 在此处简单回顾一下之前学过的二叉树遍历,首先新建一个名为 tree 的目录,并在其下对文件和子目录进行如下组织: 其中 node.go 存放的是 Node 的定义: package treeimport "fmt"type…

spring 源码分析

1 IOC 源码解析 BeanDefinition: bean的定义。里面会有beanClass、beanName、scope等属性 beanClass:通过Class.forName生成的Class 对象beanName:context.getBean(“account”),acount就是beanNamescope: 作用区分单例bean、原型bean Bea…

快速搭建SpringBoot3+Vue3+ElementPlus管理系统

快速搭建SpringBoot3Vue3管理系统 前端项目搭建(默认开发环境:node20,Jdk17)创建项目并下载依赖--执行以下命令 前端项目搭建(默认开发环境:node20,Jdk17) 创建项目并下载依赖–执行以下命令 创建项目 y…

基于Hadoop大数据音乐推荐系统的设计与实现

摘 要 各种主流的音乐平台都为用户提供了的大量的音乐,让他们时刻都能沉浸在音乐的海洋之中。然而,过多的音乐往往使用户眼花缭乱,很难发现他们真正所需要的。一套优秀的推荐系统,可以很好地解决这个问题,既能帮助用户…

IDEA遇到EasyConnect中的网络资源无法访问的问题

IDEA遇到EasyConnect中的网络资源无法访问的问题 摘要由CSDN通过智能技术生成 点击编辑IDEA的 启动配置,然后在启动器下面的新增一个请求参数然后重新启动项目, java.net.preferIPv4Stack true IDEA就能连接到EasyConnect代理的网络服务 wanshanyu_ 关…

IP研究 | 大数据洞察黄油小熊的爆火之路

一只来自泰国的小熊在国内红成了顶流。 今年,黄油小熊以烘焙店“打工人”的超萌形象迅速走红,2个月内火遍中国的社交媒体,泰国门店挤满飘洋过海求合影的中国粉丝,根据数说故事全网大数据洞察,黄油小熊2024年度的线上声…

分数求和ᅟᅠ        ‌‍‎‏

分数求和 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为…

5G中的随机接入过程可以不用收RAR?

有朋友提到了一种不用接收RAR的RA过程,问这个是怎么回事。其实在刚刚写过的LTM cell switch篇章中就有提到,这里把所有相关的内容整理如下。 在RACH-less LTM场景,在进行LTM cell switch之前就要先知道target cell的TA信息,进而才…

Ubuntu安装grafana

需求背景:管理服务器,并在线预警,通知 需求目的: 及时获取服务器状态 技能要求: 1、ubuntu 2、grafana 3、prometheus 4、https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2F%2Fimg…

vue3获取、设置元素高度

前言 在web端常见的需求场景中,会经常遇到table表格需要根据页面可视区域使高度自适应的情况。 傻喵(作者本人)昨天在尝试使用vue3实现这个需求时,看了几篇网上写的回答,都不太全面,所以干脆自己写个总结吧.(第一次写&#xff0c…

美畅物联丨观看实时视频对服务器带宽有什么要求?

​随着互联网的迅猛发展,实时视频观看已然成为人们日常生活中不可或缺的一部分。不管是视频会议、在线教育,还是在线娱乐,实时视频都起到了极为重要的作用。不过,实时视频的流畅播放对服务器的带宽有着极高的要求。本文将深入探究…

MongoDB-固定集合(Capped Collection)

在 MongoDB 中,固定集合(Capped Collection)是一种具有特殊属性的集合。固定集合具有一个固定的最大大小,并且一旦达到该大小时,最早插入的文档将会被自动删除,以便为新的文档腾出空间。固定集合的这种特性…

EasyExcel注解使用

上接《Springboot下导入导出excel》,本篇详细介绍 EasyExcel 注解使用。 1. ExcelProperty value:指定写入的列头,如果不指定则使用成员变量的名字作为列头;如果要设置复杂的头,可以为value指定多个值order&#xff…

yolo-V3

1、研究背景及意义 1)对yolo进行创新,准确度更高。 2、创新点 1)主要是更换了主干网络,使用了多尺度特征融合。 3、网络结构 yolo-V3以Darket-Net-53为主干网络。网络输入一张尺寸为416416的图片,经过多层卷积分别…

零基础如何使用ChatGPT快速学习Python

引言 AI编程时代来临,没有编程基础可以快速上车享受时代的红利吗?答案是肯定的。本文旨在介绍零基础如何利用ChatGPT快速学习Python编程语言,开启AI编程之路。解决的问题包括:传统学习方式效率低、缺乏互动性以及学习资源质量参差…

重生之我在异世界学编程之C语言:枚举联合篇

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文枚举(Enum&#xff0…

MYSQL索引的分类和创建

目录 1、聚簇索引和非聚簇索引 tips: 小问题:主键为什么建议使用自增id? 2、普通索引 (常规索引)(normal) 3、唯一索引(UNIQUE ) 唯一索引和主键的区别: 唯一约束和唯一索引的区别&#…

Robust Depth Enhancement via Polarization Prompt Fusion Tuning

paper:论文地址 code:github项目地址 今天给大家分享一篇2024CVPR上的文章,文章是用偏振做提示学习,做深度估计的。模型架构图如下 这篇博客不是讲这篇论文的内容,感兴趣的自己去看paper,主要是分享环境&…

.NET 一款获取主机远程桌面端口的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

【开源】A066—基于JavaWeb的农产品直卖平台的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…