当前位置: 首页 > article >正文

自然语言处理(5)—— 中文分词

中文分词的基本原理及实现

    • 1. 什么是词
    • 2. 基本原理
    • 3. 发展趋势:多数场景无需显式分词

信息处理的目标是使用计算机能够理解和产生自然语言。而自然语言理解和产生的前提是对语言能够做出全面的解析。

汉语词汇是语言中能够独立运用的最小的语言单位,是语言中的原子结构。由于中文缺乏类似英文的空格分隔,分词的准确性直接影响后续任务(如机器翻译、情感分析)的效果。因此,对中文进行分词就显得至关重要。

中文分词(Chinese Word Segmentation)是自然语言处理的基础任务,旨在将连续的中文字符序列切分成具有独立语义的词语。

以下从基本原理、主流方法、实现工具及挑战展开介绍。


1. 什么是词

古往今来,汉字虽然有5万多个,但常用的汉字大约仅有6000个。即便如此,其中很多汉字在日常生活中较少用到。然而,这些有限的汉字足以维持词汇的长期更新,因为扩大中文词汇的方法是通过构造汉字的复合新词,而不是创造新的字符来完成的。这就造成了汉语中所谓的词和短语之间没有明确的界限。

这可能也就是中国的一些语法学家认为,中文没有词语而只有汉字的原因,并创造了一个术语–“字短语”来代替传统的词汇。董振东就认为:“‘词或字符’的争论源于他们都急于给中国语言一个硬规范的共同基础。遗憾的是,中文不是那么明确的或硬的,它是软的。我们必须认识到其‘柔软度’”。

除构词法的原因之外,人们还因为自身的方言、受教育程度、亚文化等差异因素,对词汇的认识也不同。这些事实都成为制定统一的汉语分词标准的障碍。但是对于计算机系统而言,同一种语言应使用统一的规范来划分词汇,否则,很难想象在多重标准下的词汇系统能够计算出相同的语义结果。

随着 NLP的大规模应用,计算语言学界逐渐统一了汉语词汇的标准。
《信息处理用现代汉语分词规范》关于汉语词的定义给出了如下说明:汉语信息处理使用的、具有确定的语义或语法功能的基本单位

2. 基本原理

中文分词的实现依赖于三大类方法:

(1)基于规则(词典)的分词方法

  • 核心思想:通过预定义的词典匹配文本中的词条,优先匹配最长词。
  • 典型算法
    • 正向最大匹配(FMM):从左到右逐字扫描,优先匹配最长词(如“北京大学”优先于“北京”)。
    • 逆向最大匹配(BMM):从右到左扫描,适用于处理后缀歧义(如“为人民办公益”可能误分为“为人/民办/公益”)。
    • 双向最大匹配:结合FMM和BMM,若结果一致则采纳,否则按最小词数或上下文调整。
  • 特点:速度快、实现简单,但依赖词典质量,无法处理未登录词和新词。

(2)基于统计的分词方法

  • 核心思想:利用大规模语料训练语言模型,通过概率选择最优分词路径。
  • 典型模型
    • N-gram语言模型:计算词序列联合概率,例如“南京市长江大桥”的切分路径通过Bigram或Trigram概率比较。
    • 隐马尔可夫模型(HMM):将分词转化为序列标注问题(BEMS:词首/中/尾/单字),如“北京/大学”标注为“B-E B-E”。
    • 条件随机场(CRF):相比HMM,考虑全局特征,标注更精准。
  • 特点:能处理未登录词和歧义,但需大量标注数据。

(3)基于深度学习的分词方法

  • 核心思想:通过神经网络自动学习上下文特征,端到端输出分词结果。
  • 典型模型
    • BiLSTM-CRF:双向LSTM捕捉上下文,CRF优化标签序列。
    • Transformer:自注意力机制处理长距离依赖,如《Multi-Criteria Chinese Word Segmentation with Transformer》。
    • 预训练模型(如BERT):直接以字符为单位建模,无需显式分词(如“陈敬雷分布式机器学习实战”整体处理)。
  • 特点:准确率高,但依赖算力和数据量,模型复杂度高。

实现工具与案例

  1. 主流工具

    • jieba:基于HMM和前缀词典,支持精确模式、全模式和搜索引擎模式。
      • 原理:构建前缀词典生成DAG(有向无环图),动态规划选择最大概率路径。
      • 示例:“研究生物”可能切分为“研究生/物”(HMM纠正为“研究/生物”)。
    • HanLP:集成词典与统计模型,支持多任务(如词性标注、NER)。
    • THULAC:清华大学开源工具,结合CRF和深度学习。
  2. 代码实现(以jieba为例)

    import jieba
    # 精确模式
    seg_list = jieba.cut("南京市长江大桥", cut_all=False)
    print("/".join(seg_list))  # 南京/市/长江大桥
    # 搜索引擎模式
    seg_search = jieba.cut_for_search("陈敬雷分布式机器学习实战")
    print("/".join(seg_search))  # 陈敬雷/分布式/机器/学习/实战/分布式机器学习/机器学习
    

3. 发展趋势:多数场景无需显式分词

  • 预训练模型的突破
    BERT、GPT等模型直接以字符或子词(如WordPiece)为输入,通过上下文隐式学习词边界和语义组合。例如“机器学习”无需提前切分,模型能自动关联“机”与“器”、“学”与“习”形成整体语义。
  • 实验证据
    ACL 2019论文在语言模型、机器翻译等任务中验证,字符级模型效果优于词级模型。原因包括:
    • 数据稀疏性:词级模型面临低频词和OOV问题(如CTB数据集中约40%的词出现≤4次)。
    • 噪声传递:分词工具误差(如“南京市长江大桥”误切为“南京/市长/江大桥”)会损害模型性能。

无需分词的典型场景

场景原因
预训练语言模型直接处理字符或子词,通过自注意力机制学习长距离依赖和词组合规律。
文本分类/情感分析字符级CNN或Transformer能捕捉局部语义,如“好评”和“差评”无需依赖词边界。
机器翻译字符级输入减少OOV问题,如“Transformer”作为未登录词可通过子词拆分处理。

仍需分词的特定场景

场景原因
依赖词结构的任务如词性标注、句法分析,传统方法需显式分词定义词单位(但部分预训练模型已内化此类能力)。
信息检索(IR)若查询与文档使用相同分词规则,可提升召回率(如“机器学习”切分为“机器/学习”匹配更多结果)。
小数据场景数据量不足时,分词可提供词级特征辅助模型(如“苹果公司”作为整体提升实体识别准确率)。

深度学习模型并非完全不需要分词,但显式分词的场景已大幅减少

未来随着模型对细粒度语义的理解加深,分词的“中间层”角色将进一步弱化,但作为医疗、法律等专业领域知识载体仍具实用价值。

相关文章:

自然语言处理(5)—— 中文分词

中文分词的基本原理及实现 1. 什么是词2. 基本原理3. 发展趋势:多数场景无需显式分词 信息处理的目标是使用计算机能够理解和产生自然语言。而自然语言理解和产生的前提是对语言能够做出全面的解析。 汉语词汇是语言中能够独立运用的最小的语言单位,是语…...

解锁物联网高效开发,Synaptics SYN43756E Wi-Fi 6E 芯片登场

Synaptics 的 SYN43756E 芯片是一款高性能的 Wi-Fi 6E 支持 11a/b/g/n/ac/ax 的物联网(IoT)SoC,具备多项先进特性,适用于多种应用场景,以下是其主要优势: 1. 广泛的应用场景 智慧家庭:支持多种…...

C++和标准库速成(十二)——练习

目录 练习1.1题目答案 练习1.2题目答案 练习1.3题目答案 练习1.4题目答案 练习1.5题目答案 练习1.6题目答案 参考 练习1.1 题目 修改下面的Employee结构体,将其放在一个名为HR的名称空间中。你必须对main()中的代码进行那些修改才能使用此新实现?此外&a…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…...

5、linux c 线程 - 上

【四】线程 1. 线程的创建 #include <pthread.h> ​ int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*routine)(void *), void *arg); pthread_t *thread&#xff1a;指向线程标识符的指针&#xff0c;用于存储新创建线程的 ID。 const p…...

2024年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)

2024 年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书&#xff08;四&#xff09;&#xff09; 背景描述&#xff1a;任务一&#xff1a;Hadoop 完全分布式安装配置&#xff08;25 分&#xff09;任务二&#xff1a;离线数据处理&#xff08;25 分&#xff0…...

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…...

dify创建第一个Agent

1、首先LLM模型必须支持 Function Calling 由于deepseek-R1本地化部署时还不支持&#xff0c;所以使用 qwq模型。 2、创建空白 Agent 3、为Agent添加工具 4、测试 当未添加时间工具时 询问 时间 如下 5、开启时间工具 询问如下...

⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree

图论入门【数据结构基础】&#xff1a;什么是树&#xff1f;如何表示树&#xff1f; 之前我们有分别讲解二叉树的三种遍历的相关代码实现&#xff1a; ⭐算法OJ⭐二叉树的前序遍历【树的遍历】&#xff08;C实现&#xff09;Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…...

深度解析 | Android 13 Launcher3分页指示器改造:横线变圆点实战指南

一、需求背景与技术挑战 在Android 13系统定制开发中&#xff0c;我们面临将Launcher3桌面从传统双层架构优化为现代单层布局的挑战。原生系统采用的分页横线指示器在视觉呈现上存在两点不足&#xff1a; 风格陈旧不符合Material You设计规范 空间占用较大影响屏幕利用率 通…...

2. 商城前端部署

商城客户端前端部署 https://gitee.com/newbee-ltd/newbee-mall-api-go 使用开源新蜂商城的前端&#xff0c;git clone到本地 然后在vscode终端依次输入下列指令&#xff08;配置好vue3相关环境的前提下&#xff09;&#xff1a; npm install npm i --legacy-peer-deps npm …...

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙&#xff08;OpenHarmony&#xff09;构建的分布式操作系统生态&#xff0c;旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务&#xff0c;覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…...

基于STM32进行FFT滤波并计算插值DA输出

文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话五、项目联想与扩展1. 倍频2. 降频3. 插值3.1 线性插值3.2 样条插值 一、前言背景 STM32 对 AD 采样信号进行快…...

【Oracle资源损坏类故障】:详细了解坏块

目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…...

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");...

第三十一篇 数据仓库(DW)与商业智能(BI)架构设计与实践指南

目录 一、DW/BI架构核心理论与选型策略1.1 主流架构模式对比&#xff08;1&#xff09;Kimball维度建模架构&#xff08;2&#xff09;Inmon企业工厂架构&#xff08;3&#xff09;混合架构 二、架构设计方法论与实施步骤2.1 维度建模实战指南&#xff08;1&#xff09;模型选择…...

智能追踪台灯需求文档

一、项目背景 设计一款具备人体感知与动态追踪能力的智能台灯&#xff0c;实现以下核心目标&#xff1a; 自动开关&#xff1a;检测到人体活动时自动开启光源&#xff0c;无人时关闭以节省能耗。主动追踪&#xff1a;通过机械结构实时调整光照方向&#xff0c;确保用户始终处…...

给语言模型增加知识逻辑校验智能,识别网络信息增量的垃圾模式

给LLM增加逻辑校验模型&#xff0c;赋予其批判性智能。 网络系统上信息不断增长&#xff0c;相当部分是非纯粹的人类生成&#xff0c;而是由各种模型生成输出。模型持续从网络取得信息&#xff0c;生成信息输出到网络&#xff0c;AI生态系统与网络信息池之间陷入信息熵增循环。…...

Electron打包文件生成.exe文件打开即可使用

1 、Electron 打包&#xff0c;包括需要下载的内容和环境配置步骤 注意&#xff1a;Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架 首先需要电脑环境有Node.js 和 npm我之前的文章有关nvm下载node的说明也可以去官网下载 检查是否有node和npm环…...

单播、广播、组播和任播

文章目录 一、单播二、广播三、组播四、任播代码示例&#xff1a; 五、各种播的比较 一、单播 单播&#xff08;Unicast&#xff09;是一种网络通信方式&#xff0c;它指的是在网络中从一个源节点到一个单一目标节点对的传输模式。单播传输时&#xff0c;数据包从发送端直接发…...

AI生成移动端贪吃蛇游戏页面,手机浏览器打开即可玩

贪吃蛇游戏可计分&#xff0c;可穿墙&#xff0c;AI生成适配手机浏览器的游戏&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name"viewport" …...

Cursor+Claude-3.5生成Android app

一、Android Studio下载 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安装完成 二、新建工程 点击new project 选择Empty Activity 起一个工程名 当弹出这个框时 可以在settings里面选择No proxy 新建好后如下 点击右边模拟器&#xff0c…...

NLP高频面试题(九)——大模型常见的几种解码方案

大模型常见的几种解码方案 在自然语言生成任务中&#xff0c;如何从模型生成的概率分布中选择合适的词汇&#xff0c;是影响文本质量的关键问题。常见的解码方法包括贪心搜索&#xff08;Greedy Search&#xff09;、束搜索&#xff08;Beam Search&#xff09;、随机采样&…...

QT Quick(C++)跨平台应用程序项目实战教程 3 — 项目基本设置(窗体尺寸、中文标题、窗体图标、可执行程序图标)

目录 1. 修改程序界面尺寸和标题 2. 窗体图标 3. 修改可执行程序图标 上一章创建好了一个初始Qt Quick项目。本章介绍基本的项目修改方法。 1. 修改程序界面尺寸和标题 修改Main.qml文件&#xff0c;将程序宽度设置为1200&#xff0c;程序高度设置为800。同时修改程序标题…...

Transformers x SwanLab:可视化NLP模型训练(2025最新版)

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一&#xff08;100k Star&#xff09;&#xff0c;现在主流的大语言模型&#xff08;LLaMa系列、Qwen系列、ChatGLM系列等&#xff09;、自然语言处理模型&#xff08;Bert系列&#xff09;等&#xff0c;都在使用T…...

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符&#xff0c;如下图所示&#xff1a; 原因大概是&#xff1a;conda 环境的双重激活&#xff1a;可能是 conda 环境没有被正确清理或初始化&#xff0c;导致 base 和 toolsZCH 同时被激活。 解决办法就是 &#xff1a;conda deactivate 两次…...

Android项目实战搭建 MVVM架构

View层 具体代码&#xff1a; activity: /*** description:* 普通Activity基类&#xff0c;不带ViewModel,显示基本加载状态* 需要获取到子类的布局id用于databinding的绑定* author YL Chen* date 2024/9/4 21:34* version 1.0*/ abstract class BaseActivity<VB : ViewD…...

Mybatis的基础操作——03

写mybatis代码的方法有两种&#xff1a; 注解xml方式 本篇就介绍XML的方式 使用XML来配置映射语句能够实现复杂的SQL功能&#xff0c;也就是将sql语句写到XML配置文件中。 目录 一、配置XML文件的路径&#xff0c;在resources/mapper 的目录下 二、写持久层代码 1.添加mappe…...

React:React主流组件库对比

1、Material-UI | 官网 | GitHub | GitHub Star: 94.8k Material-UI 是一个实现了 Google Material Design 规范的 React 组件库。 Material UI 包含了大量预构建的 Material Design 组件&#xff0c;覆盖导航、滑块、下拉菜单等各种常用组件&#xff0c;并都提供了高度的可定制…...

奇迹科技:蓝牙网关赋能少儿篮球教育的创新融合案例研究

一、引言 本文研究了福建奇迹运动体育科技有限公司&#xff08;简称‘奇迹科技’&#xff09;如何利用其创新产品体系和桂花网蓝牙网关M1500&#xff0c;与少儿篮球教育实现深度融合。重点分析其在提升教学效果、保障训练安全、优化个性化教学等方面的实践与成效&#xff0c;为…...