NLP基础——中文分词

简介

分词是自然语言处理(NLP)中的一个基本任务,它涉及将连续的文本序列切分成多个有意义的单元,这些单元通常被称为"词"或"tokens"。在英语等使用空格作为自然分隔符的语言中,分词相对简单,因为大部分情况下只需要根据空格和标点符号来切分文本。

然而,在汉语等语言中,并没有明显的单词界限标记(如空格),因此汉语分词比较复杂。汉字序列必须被正确地切割成有意义的词组合。例如,"我爱北京天安门",应该被正确地划分为"我/爱/北京/天安门"。

方法

中文分词技术主要可以归类为以下几种方法:

  1. 基于字符串匹配的方法:这种方法依赖一个预先定义好的字典来匹配和确定句子中最长能够匹配上的字符串。这包括正向最大匹配法、逆向最大匹配法以及双向最大匹配法。

  2. 基于理解的方法:通过模拟人类理解句子含义进行分词,考虑上下文、句法结构和其他信息。

  3. 基于统计学习模型:利用机器学习算法从大量已经人工标注好了分词结果的数据集里学习如何进行有效地分词。常见算法包括隐马尔可夫模型(HMM)、条件随机场(CRF)以及近年来流行起来基于深度学习框架构建神经网络模型(RNNs、CNNs、LSTMs、Transformer、BERT等)。

  4. 混合方法:结合以上几种不同策略以提高精确度和鲁棒性。

  5. 基于规则: 通过制定一系列规则手动或半自动地进行文字断开, 这通常需要专业知识并且效率不高, 但可以在特定情境下发挥作用。

Python栗子

基于字符串匹配,最大前向匹配,代码如下

python 复制代码
def max_match_segmentation(text, dictionary):
    max_word_length = max(len(word) for word in dictionary)
    start = 0
    segmentation = []

    while start < len(text):
        for length in range(max_word_length, 0, -1):
            if length > len(text) - start:
                continue
            word = text[start:start + length]
            if word in dictionary:
                segmentation.append(word)
                start += length
                break
        else:  # 如果没有找到,则按单字切分
            segmentation.append(text[start])
            start += 1

    return segmentation

# 示例字典和用法:
dictionary = {"我", "爱", "北京", "天安门"}
text_to_segment = "我爱北京天安门"

segments = max_match_segmentation(text_to_segment, dictionary)

print("分词结果:", "/ ".join(segments))

构建思路(如何实现基于统计的分词方法)

基于统计学习的中文分词方法其核心思想是从大量已经分词的文本(语料库)中学习如何将连续的汉字序列切分成有意义的词汇。通常包括以下几个步骤:

  1. 语料库准备:收集并整理一定量的已经进行过人工分词处理的文本数据,作为训练集。

  2. 特征提取:从训练数据中提取有助于模型学习和预测的特征。在传统统计模型中,这些特征可能包括:

    • 字符及其邻近字符
    • 词性标注信息
    • 字符组合频率
  3. 概率模型选择:选择合适的统计概率模型来估算不同切分方式出现的概率。常见模型包括:

    • 隐马尔可夫模型(HMM)
    • 条件随机场(CRF)
    • 最大熵模型
    • 支持向量机(SVM)
  4. 参数估计与训练:利用选定的统计学习算法对特征和标签进行建模,并通过算法调整参数以最大化某种性能指标或者最小化误差。

  5. 解码与优化:使用如Viterbi算法等解码技术找到给定字序列下最可能对应的词序列。

  6. 评估与调整:通过交叉验证、留出验证或引入开发集等方式,在非训练数据上评价分词效果,并据此调整特征或者优化参数。

  7. 迭代改进: 在实际应用过程中,根据反馈持续追踪新出现单字、新兴流行语等元素,更新语料库并重新训练以保证系统性能不断提升。

基于统计学习方法进行中文分词具有较强实用性和广泛适用性。它不依赖复杂规则体系,而是通过从数据本身"学会"如何正确地将句子划分为单个单词或短语。

分词参考链接

相关推荐
Lab_AI几秒前
从代理到自研,从工具到平台:创腾科技的AI for Science破局之路
人工智能·ai·ai for science·ai4s·ai+材料创新·ai+药物发现·ai+药物研发
YOLO数据集集合几秒前
无人机检测与追踪数据集 | 无人机检测 反无人机 低空安防 目标追踪 YOLO格式9010期
人工智能·yolo·目标检测·计算机视觉·无人机·无人机检测
SL-staff1 分钟前
APS排产规则底座实践:如何用生产全局配置统一自动拆分、成批基数与齐套策略
大数据·数据库·人工智能·智能制造·aps·mes·排产规则
BioRunYiXue3 分钟前
RACE技术全攻略:从全长克隆到靶基因验证
java·javascript·网络·人工智能·科技·算法·eclipse
七点半.8 分钟前
LLM 工程能力
人工智能·llm
F&C嘉准传感器11 分钟前
超细聚焦光纤传感模组:微米级极小光斑,精密微型元器件组装定位零偏差
人工智能·安全·目标检测·自动化·产品运营
CodeBlog-star12 分钟前
Codex Harness 全面开源:OpenAI的 AI Agent 底层执行框架
人工智能·开源·openai·codex·harness
MartinYeung516 分钟前
[论文学习]BadRobot:物理世界中具身大语言模型智能体的越狱攻击
人工智能·学习·语言模型
CIO_Alliance17 分钟前
AI深度系列(1)|神经元激活函数与MLP原理:理解神经网络的基础
人工智能·深度学习·神经网络·机器学习·tensorflow·ai+ipaas·企业cio联盟
9i编程18 分钟前
9. AI编写的SKILL,坑我一一试过,这次我自己改写:逐行Code Review登录代码:username改名account、伪删除双键唯一,4个设计坑一次
人工智能·openai·ai编程