【自然语言处理】统计中文分词技术(一):1、分词与频度统计

文章目录

  • 一、词与分词
    • 1、词 vs 词素
    • 2、世界语言分类
  • 二、分词的原因与基本原因
    • 1、为什么要分词
    • 2、分词规范
    • 3、分词的主要难点-切分歧义
      • 如何排除切分歧义
        • 利用词法信息
        • 利用句法信息
        • 利用语义信息
        • 利用语用、语境信息
    • 4、分词的主要难点-未登录词
      • 未登录词
      • 如何识别未登录词
  • 三、分词的一般方法
    • 1、基于词典的方法(又称机械分词方法)
      • 1. 正向最大匹配算法
      • 2. 逆向最大匹配算法
    • 2、基于统计的分词方法
    • 3、基于理解的分词方法
    • 4、词典与统计相结合的词汇切分方法

一、词与分词

1、词 vs 词素

  • 词是语言中能够独立运用的最小单位,是指词在语法结构中的地位和作用而言的。
  • 从语言的词本身来讲,很多词可以进一步分析成若干个最小的音义统一体,即词素。
  • 词素是构成词的要素。词素是比词低一级的单位。
    • 参考黄伯荣和廖旭东老师的《现代汉语(上)》(P251)中介绍的“替代法”。简单来说,能被替换的是词,不能被替换的是词素。比如说“茶杯”这个词,“茶杯”中的“茶”可以替换成“水”,“杯”又可以替换成“叶”,所以“茶杯”是一个词,有两个词素。但是“彷徨”这个词中,“彷”和“徨”都不能被替换,所以“彷徨”是一个词素,不过同时也是一个词。“茶杯”和“彷徨”都有两个字,也都是一个词。但是,“茶杯”是一个由两个语素组成的词,而“彷徨”既是一个由一个语素组成的词。。。

在这里插入图片描述

2、世界语言分类

  传统语言学根据词的结构将世界语言分为三类:孤立语、黏着语、屈折语

  • 孤立语:又称“词根语”、“无形态语”,以汉语为代表

    • 词内没有专门表示语法意义的附加成分,形态变化很少,语法关系靠词序和虚词来表示
    • 例如:“我吃饭”中的“我”、“吃”、“饭”都是独立的词,词序和上下文决定了它们之间的语法关系。
  • 黏着语:又称“胶着语”,以日语为代表

    • 词内有专门表示语法意义的附加成分,一个附加成分表达一种语法意义,词根或词干跟附加成分结合不紧密
  • 曲折语:以英语为代表

    • 用词的形态变化表示语法关系,词根或词干跟词的附加成分结合的很紧密,一个附加成分表达多种语法意义
      在这里插入图片描述
  • 孤立语和黏着语存在分词问题

    • 在孤立语言和黏着语言中,由于词本身没有太多的形态变化,因此分词相对较简单。在汉语中,词语之间一般使用空格或标点符号进行分隔,每个词都具有独立的语义和语法功能。

二、分词的原因与基本原因

1、为什么要分词

  • 汉语的机器自动分词是汉语信息处理系统的重要组成部分
  • 正确的机器自动分词是正确的中文信息处理的基础
    • 文本检索
      • 和服 | 务 | 于三日后裁制完毕,并呈送将军府中。
      • 王府饭店的设施 | 和 | 服务 | 是一流的。
        如果不分词或者“和服务”分词有误,都会导致荒谬的检索结果。
    • 文语转换
      • 他们是来 | 查 | 金泰 | 撞人那件事的。(“查”读音为cha)
      • 行侠仗义的 | 查金泰 | 远近闻名。(“查”读音为zha)

2、分词规范

  • 中国国家标准GB13715 刘源等《信息处理用现代汉语分词规范及自动分词方法》
  • 分词规范内容实录
    • 二字或三字词,以及结合紧密、使用稳定的
      • 发展 可爱 红旗
      • 对不起 自行车 青霉素
    • 四字成语一律为分词单位,以及四字词或结合紧密、使用稳定的四字词组
      • 胸有成竹 欣欣向荣
      • 社会主义 春夏秋冬 由此可见
    • 五字和五字以上的谚语、格言等,分开后如不违背原有组合的意义,应予切分
      • 时间/就/是/生命/
      • 失败/是/成功/之/母

3、分词的主要难点-切分歧义

如何排除切分歧义

  利用前趋字串和后继字串在词法、句法、语义、语用方面的信息。

利用词法信息
  • 湖上有几只美丽的白/天鹅
  • 加入规则:“如果交段与其后继字串组成名词,则将该歧义词首字单切,否则,确认该歧义词为词”。
利用句法信息
  • 利用歧义字串与前趋字串和后继字串的搭配关系等句
    法信息确定正确切分
  • 例:一阵/风/吹/过来/了
  • 加入规则:“如果歧义字段是量词且直接前趋字串是数词,那么歧义字段的首段单切,否则,该歧义字段成词”
利用语义信息
  • 例:学生会兴奋得手舞足蹈
  • 学生/会/兴奋/得/手舞足蹈
  • 学生会/兴奋/得/手舞足蹈
  • 加入规则:“如果歧义切分字段后继动词的义项中含有动作发出者为“人”这个义素,则歧义字段的尾字单切,否则该歧义字段成词”
利用语用、语境信息
  • 日本保留和尚使用的古代庙宇已经不多了
  • 乒乓球拍卖完了

4、分词的主要难点-未登录词

未登录词

  • 就是在词典中没有登录过的人名(中国人名和外国人译名)、地名、机构名、新词语、缩略语等。当采用匹配的方法来切词时,由于词典中没有登录这些词,会引起自动切词的困难。
  • 歧义切分字段在汉语书面文本中所占的比例并不很大,在实际的书面文本中,特别是在新闻类文本中,未登录词的处理是书面文本自动切分的一个十分突出的问题。这是汉语书面语自动切分的另一个难点。

如何识别未登录词

  • 汉语自然语言处理的经典难题之一
  • 人们探索了多种方法,如互信息、期望方差法、语言模型法等等
  • 基于最大熵、马尔科夫模型等统计分类模型是比较常用的方法

三、分词的一般方法

  中文词汇切分技术大体上可以分为:
1.基于词典的词汇切分方法(又称机械词汇切分)
2.基于统计的词汇切分方法
3.基于理解的词汇切分方法
4.词典与统计相结合的词汇切分方法

1、基于词典的方法(又称机械分词方法)

  本质上是字符串匹配的方法,将一串文本中的文字片段和已有的词典进行匹配,如果匹配到,则此文字片段就作为一个分词结果。
1)正向最大匹配法(从左到右的方向);
2)逆向最大匹配法(从右到左的方向);
3)最小切分(每一句中切出的词数最小)
4)双向最大匹配(进行从左到右、从右到左两次扫描

  • 优点是速度快,时间复杂度可以保持在O(n),实现简单,效果尚可;
  • 但对歧义和未登录词处理效果不佳
    • 基本就是不处理~

1. 正向最大匹配算法

  • 基于词典词汇切分中最大正向匹配是基于“每次从句子中切分出尽量长的词语”的原理。即一个词的长度越长,从这个词中所获取的信息就有可能更多,同时也更确切。
  • 比如“王小花”,这是一个人名,假设其存在于词典中,而“王”、“小”、“花”三个也均为词典中存在的单字词,倘若我们将“王小花”分为“王/小/花”,这将让人不知所云,而使用最长匹配的方法将会匹配出“王小花”这个三字词。
ch_dict = ['基于', '解析', '语义解析', '方法', '逻辑', '逻辑形式', '产生','更可', '解释', '可解释', '推理过程']
sentence = '基于语义解析的方法由于逻辑形式而产生了更可解释的推理过程'
segment_list = []   # 存放分词后的分词词组
# print(sentence)
# 例句不为空时,循环地进行分词操作

while len(sentence) >= 1:
    # 最大匹配单词的长度为5,当然实际意义从3开始即可,因为词典最大单词长度为3
    max_match_len = 5
    # 当匹配单词长度大于1时,循环判断分词
    while max_match_len > 1:
        # 判断前 max_match_len 个字符是否存在于字典
        if sentence[0:max_match_len] in ch_dict:
            segment_list.append(sentence[0:max_match_len])      # 追加到分词词组中
            sentence = sentence[max_match_len:len(sentence)]    # 将符合的词语从原例句中截取
            # 退出循环,重新从max_match_len最长匹配数开始匹配截取
            break

        max_match_len -= 1  # max_match_len累减,开始匹配4个字符,3个字符,,,

    # 只剩下一个汉字时,说明当前不再存在任何符合的词语,直接截取一个汉字作为词组
    if max_match_len == 1:
        segment_list.append(sentence[0:1])      # 追加单个汉字词语
        sentence = sentence[1:len(sentence)]    # 截取例句

# 输出进行分词后的例句
print('/'.join(segment_list))
基于/语义解析//方法///逻辑形式//产生//更可/解释//推理过程

2. 逆向最大匹配算法

  • 从右到左取词,每次取尽可能长的词,匹配词典中的词语。

2、基于统计的分词方法

  • 基于统计的分词方法是在给定大量已经分词的文本的前提下,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。例如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词方法渐渐成为了主流方法
  • 主要的统计模型有:N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等

3、基于理解的分词方法

  • 基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。
  • 它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,语法子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。
  • 这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

4、词典与统计相结合的词汇切分方法

  利用词典匹配和统计模型的方法,结合了基于词典的规则和基于统计的概率模型,以提高分词准确性和效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark spark-submit 提交应用程序

Spark spark-submit 提交应用程序 Spark支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群。Apache Mesos—通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用。Hadoop YARN—Hadoop2中的资源管理器。 注意&…

力扣3. 无重复字符的最长子串

Problem: 3. 无重复字符的最长子串 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.川建一个set集合存储最长的无重复的字符; 2.创建双指针p、q,每次当q指针指向的字符不在set集合中时将其添加到set集合中让q指针后移,并且更新…

【Transformer】transformer注解

every blog every motto: You can do more than you think. 0. 前言 transformer注解 在过去的一年里,《Attention is all you need》中的transformer一直萦绕在很多人的脑海里。除了在翻译质量上产生重大改进之外,它还为许多其他NLP任务提供了一种新的…

cocos3.0 关于UI组件学习

Sprite 图片:官方文档 Size Mode: 1.Raw:原始大小 2.TRIMMED: 默认,会裁切原始图片透明像素 3.Custom:自定义,只要修改ContentSize,会自动设置 Type 1.Simple:普通,会铺满,一张图。 2.Sliced…

卷积神经网络-卷积层

卷积神经网络-卷积层 1多层感知机(MLP)2卷积神经网络(CNN)3MLP和CNN关系与区别4仍然有人使用MLP的原因:5MLP的局限性:MLP的应用领域:总结:6全连接到卷积全连接层 vs 卷积层结构差异应…

(一)基于IDEA的JAVA基础7

关系运算符 运算符 含义 范例 结果 等于 12 false &#xff01; 不等于 1&#xff01;2 true > 大于 1>2 false < 小于 …

使用html做一个2048小游戏

下载地址: https://pan.xunlei.com/s/VNtiF13HxmmE4gglflvS1BUhA1?pwdvjrt# 提取码&#xff1a;vjrt”

Springboot家乡特色推荐系统

目录 背景 技术简介 系统简介 界面预览 背景 在当今这个网络迅猛发展的时代&#xff0c;计算机技术已经广泛应用于我们生活的每个角落&#xff0c;互联网在经济和日常生活等多个方面扮演着至关重要的角色&#xff0c;它已成为人们分享资源和快速交流信息的关键平台。在中国…

备战蓝桥杯Day35 - 动态规划 - 01背包问题

问题描述 隐含前提&#xff1a; 1.物体是不可分的&#xff0c;要么装&#xff0c;要么不装&#xff0c;不能只装一部分。 2.物体顶多使用一次。 动态规划思路 我在b站上看的闫氏dp分析大法的视频&#xff0c;他对dp问题做了总结归纳。 从集合的角度分析dp问题。求出有限集…

基于netcore的乡镇土地竞拍系统前端vue+mysql数据库

基于netcore的乡镇土地竞拍系统前端vuemysql数据库 本系统将采用采用Visual Studio2019版本为该系统的开发工具&#xff0c;Net 语言进行开发。系统从选题开始&#xff0c;共经历了搜集选题背景信息和选题目的及意义的分析&#xff0c;通过对国内外的研究&#xff0c;需求分析的…

nodejs+vue高校洗浴管理系统python-flask-django-php

高校洗浴管理系统采用数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写&#xff0c;使用了express框架。该系统从两个对象&#xff1a;由管理员和学生来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对学生管理、浴室信息、浴室预约、预约…

Spark Streaming DStream

Spark Streaming DStream DStream 即Discretized Stream&#xff0c;中文叫做离散流&#xff0c;Spark Streaming提供的一种高级抽象&#xff0c;代表了一个持续不断的数据流。 DStream可以通过输入数据源来创建&#xff0c;比如Kafka、Flume&#xff0c;也可以通过对其他DS…

加密技术概述

传输数据时的四个问题 窃听 数字加密 假冒 消息认证或数字签名 篡改 消息认证码或数字签名 事后否认 数字签名 加密技术 将数据变成第三者的计算机无法理解的形式&#xff0c;然后再将其恢复成原本数据的一系列操作就是加密技术。 哈希函数 哈希函数可以把给定的数据转…

jvm底层

逐步细化 静态链接&#xff1a;静态方法(符号引用)替换为内存指针或者句柄直接引用) 动态链接&#xff1a;程序期间将符号引用替换为直接引用 对象头&#xff1a; 指针压缩&#xff1a; -XX:UseCompressedOops 开启指针压缩 减少内存消耗&#xff1b;大指针在主内存 缓存间移…

栅格地图路径规划:基于霸王龙优化算法(Tyrannosaurus optimization,TROA)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

Wireshark TS | DNS 案例分析之外的思考

前言 承接之前一篇《Packet Challenge 之 DNS 案例分析》&#xff0c;在数据包跟踪文件 dnsing.pcapng 中&#xff0c;关于第 4 题&#xff08;What is the largest DNS response time seen in this trace file? &#xff09;的分析过程中曾经碰到一个小问题&#xff0c;主要…

[BT]BUUCTF刷题第6天(3.24)

第6天 Web [极客大挑战 2019]PHP Payload&#xff1a; O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}这道题考点是网站源码备份文件泄露和PHP反序列化&#xff0c;有篇介…

【WEEK4】 【DAY5】AJAX - Part Two【English Version】

2024.3.22 Friday Following the previous article 【WEEK4】 【DAY4】AJAX - Part One【English Version】 Contents 8.4. Ajax Asynchronous Data Loading8.4.1. Create User.java8.4.2. Add lombok and jackson support in pom.xml8.4.3. Change Tomcat Settings8.4.4. Mo…

HTML5和CSS3新特性

Html新增属性 1.新增语义化标签 <header>&#xff1a;头部标签 <nav>&#xff1a;导航标签 <article>&#xff1a;内容标签 <section>&#xff1a;定义文档某个区域 <aside>&#xff1a;侧边栏标签 <footer>&#xff1a;尾部标签 2.…

【深度学习】pytorch,MNIST手写数字分类

efficientnet_b0的迁移学习 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transforms from torchvision.datasets import MNIST from torch.utils.data import DataLoader from torchvision import models import matplo…