【自然语言处理】统计中文分词技术(一):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开始即可,因为词典最大单词长度为3max_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最长匹配数开始匹配截取breakmax_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.mzph.cn/news/767440.shtml

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

相关文章

Docker入门到实践之环境配置

Docker入门到实践之环境配置 docker 环境安装 Ubuntu/Debian: sudo apt update sudo apt install docker.ioCentOS/RHEL: sudo yum install dockerArch Linux: sudo pacman -S docker如果未安装成功,或者env的path未设置成功,运行时会报错 Bash: Do…

[HackMyVM]靶场 Slowman

kali:192.168.56.104 靶机:192.168.56.132 端口扫描 # nmap 192.168.56.132 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-24 15:28 CST Nmap scan report for 192.168.56.132 Host is up (0.00066s latency). Not shown: 995 filtered tcp ports (no-response) …

NX二次开发-调内部函数创建进度条MT_create_progress_bar

一、概述 最近学习NX二次开发&#xff0c;看到NX打开装配模型或者加载模型时会显示进度条的问题&#xff0c;个人觉得很有意思&#xff0c;然后参考阿飞2018中的文章进行学习。 二、代码解析 //User Defined Header File#include <uf.h>#include <uf_ui.h>#includ…

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法 需求&#xff1a;需要一个搜索框&#xff0c;可以选择员工&#xff0c;&#xff08;员工人数多无法一次性获取&#xff0c;全部放入options中&#xff09;&#xff0c;所以需要使用搜索功能&#xff0c;而且是可以多…

HarmonyOS NEXT应用开发之ArkWeb同层渲染

介绍 该方案展示了ArkWeb同层渲染&#xff1a;将系统原生组件直接渲染到前端H5页面上&#xff0c;原生组件不仅可以提供H5组件无法实现的一些功能&#xff0c;还能提升用户体验的流畅度 效果图预览 使用说明 进入页面即可看到同层渲染效果&#xff0c;Text&#xff0c;searc…

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅰ)

1.SQL概述 SQL&#xff08;Structured Query Language&#xff09;结构化查询语言&#xff0c;是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 SQL的动词 基本概念 基本表 &#xff1a;本身独立存在的表&#xff1b; SQL中一个关系就对应一个基本表&am…

SecureCRT:高效安全的远程连接工具

SecureCRT是一款功能强大的终端仿真工具&#xff0c;主要用于连接和运行包括Windows、UNIX和VMS在内的远程系统。它支持多种协议&#xff0c;如SSH1、SSH2、Telnet、SFTP、Rlogin、Serial、SCP等&#xff0c;确保用户与目标设备之间的通信安全&#xff0c;并防止网络攻击和窥探…

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

文章目录 HTTP缓存强缓存协商缓存状态码区别缓存优先级如何设置强缓存和协商缓存使用场景 HTTP缓存 HTTP缓存时利用HTTP响应头将所请求的资源在浏览器进行缓存&#xff0c;缓存方式分两种&#xff1a;强缓存和协商缓存。 浏览器缓存是指将之前请求过的资源在浏览器进行缓存&am…

安卓findViewById 的优化方案:ViewBinding与ButterKnife(一)

好多小伙伴现在还用findViewById来获取控件的id, 在这里提供俩种替代方案&#xff1a;ViewBinding与ButterKnife&#xff1b; 先来说说ButterKnife ButterKnife ButterKnife是一个专注于Android系统的View注入框架&#xff0c;在过去的项目中总是需要很多的findViewById来查…

java 实现发送邮件功能

今天分享一篇 java 发送 QQ 邮件的功能 环境&#xff1a; jdk 1.8 springboot 2.6.3 maven 3.9.6 邮件功能依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>&…

idea打包war包部署到tomcat以及访问路径问题

idea将web项目打包成war最重要的是配置atrificats。 首先打开file -》 project structure 创建之后&#xff0c;output directory即为输出war包的路径。Name可以随意&#xff0c;之后点击绿色&#xff0c;打开directory content 选择webapp目录&#xff0c;记得勾选include in…

(C语言)浮点数在内存中的存储详解

1. 浮点数 常见的浮点数&#xff1a;3.14159、 1E10等 &#xff0c;浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围&#xff1a; float.h 中定义. 2. 浮点数的存储 我们先来看一串代码&#xff1a; int main() {int n 9;float* pFloa…

安全工具介绍 SCNR/Arachni

关于SCNR 原来叫Arachni 是开源的&#xff0c;现在是SCNR&#xff0c;商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了&#xff0c;针对web app 的安全工具&#xff0c;DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…

嵌入式数据库--SQLite

目录 1. SQLite数据库简介 2. SQLite数据库的安装 方式一&#xff1a; 方式二&#xff1a; 3. SQLite的命令用法 1.创建一个数据库 2.创建一张表 3.删除表 4.插入数据 5. 查询数据 6.删除表内一条数据 7.修改表中的数据 8.增加一列也就是增加一个字段 1. SQLite数据库…

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接&#xff1a;2549. 统计桌面上的不同数字 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这是一个很简单的数学问题&#xff1a; 当n 5时&#xff0c;因为n % 4 1&#xff0c;所以下一天4一定会被放上桌面 当n 4…

Linux系统 安装docker

安装&#xff1a; 1、Docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2、更新yum包&#xff1a; sudo yum -y update 3、安装需要的软件包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另外…

kvm虚拟化

kvm虚拟化 1. 虚拟化介绍 虚拟化是云计算的基础。简单的说&#xff0c;虚拟化使得在一台物理的服务器上可以跑多台虚拟机&#xff0c;虚拟机共享物理机的 CPU、内存、IO 硬件资源&#xff0c;但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机&#xff08;Host&…

深度学习pytorch——多层感知机反向传播(持续更新)

在讲解多层感知机反向传播之前&#xff0c;先来回顾一下多输出感知机的问题&#xff0c;下图是一个多输出感知机模型&#xff1a; 课时44 反向传播算法-1_哔哩哔哩_bilibili 根据上一次的分析深度学习pytorch——感知机&#xff08;Perceptron&#xff09;&#xff08;持续更新…

数学(算法竞赛、蓝桥杯)--快速幂

1、B站视频链接&#xff1a;G01 快速幂_哔哩哔哩_bilibili 题目链接&#xff1a;P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; typedef long long LL; int a,b,p; int quickpow(LL a,int n,int p){…

Wear-Any-Way——可控虚拟试衣一键试穿,可自定义穿着方式

概述 Wear-Any-Way 是阿里巴巴最新推出的虚拟试衣技术&#xff0c;它不仅可以让用户在虚拟环境中试穿衣服&#xff0c;还可以根据需要自定义衣服的样式&#xff0c;比如卷起袖子、打开或拖动外套等。这种技术的引入旨在帮助消费者更好地了解衣服在不同穿着方式下的效果&#x…