中文分词词典构造简述

词典构造方法之LDA主题模型 词典构造方法之LDA主题模型 主题模型LDA原理理解 LDA是一种非监督学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。 举例来说,假设 阅读详情

中文分词词典构造简述

在分词系统中常用的分词词典机制有:(1)基于整词二分;(2)基于TRIE索引树;(3)基于逐字二分.

一、基于整词二分的分词词典机制

这是一种广为使用的分词词典机制.其结构通常分为三级,前两级为索引,如图3.1听示。

图 3.1 基于整词二分的分词词典机制

 

1.首字散列表

词首字散列函数根据汉字的国标区位码给出。通过一次Hash运算即可直接定位汉字在首字散列表中的序号。也就是将词首字的国标码与其在首字散列表中的序号相对应。我国的GB2312-80标注规定汉语字符的交换码由两个ASCII码构成:第一个是区码,取值从OxA1到OxF7,共87个区,第二个是位码,从OxA1到0xFE,共94位。区码为OxA1到0xAE的存储全角符号,如标点、字母等。GB2312-80汉字的编码空间是BOA1-FIFE,共有72 * 94 = 6768个码位,实有6763个汉字,其中一级汉字3755个,接着是5个空位,后面是3008个二级汉字。设id是词首字在首字散列表中的序号,c1和c2是词首字的区码和位码,利用Hash方法求Id则有:

Id = (c1–176) * 94 + (c2 - 161)                       (3-1)

这种Hash方法实质上是一种一一映射。

 

首字散列表的一个单元包括两项内容:

1) 入口项 数(4字节):以该字为首字的词的个数。

2) 第一入口项指针(4字节):指向第一入口项在词索引表中的位置。

 

2.词索引表

因为词的长度可变(实际系统中还包括附属于该词的各类信息),故以选择不定长存储为宜,此外必须实现对词的随机访问,这两条决定了必须建立词索引表。词索引表的一个单元仅含一项内容:

1) 词典正文指针(4字节):指向词在词典正文中的位置。

 

3.词典正文

以词为单位的有序表,词典中的同一首字的词条按升序排列,通过词索引表和词典正文的配合,很容易实现指定词在词典正文中的整词二分快速查找。

 

在整词二分查询任意一个汉字串W[1…n], W[1]表示该字串首字,W[n]表示首字后面的 n个汉字,查询的过程为:

1) 根据首字散列表得到W[1]入口项指针和以它为首字的词在词索引表中所占的范围。

2) 根据 1)中得到的范围在词典正文中对汉字串W[n]进行二分查找。如果查询成功则W [l…n]为分词词典中的一个词.

整词二分法查询的基本原理很简单,但是每次查询都只能对汉字串W[l…n]是否为一个词进行判断,它不能从查询的中间过程中发现汉字串W[1…n]中所有可能包括的词。而且它查询的范围较大,总是在以W[1]为首字的所有词表范围内。而我们在分词过程中,需要得到一个汉字串S中所有可能切分出的词,也就是说要找出S中所有以W[1]为首字的词,如果用整词二分法来查询的话就需要进行多次的试探,即每改变一次待查字串W[1…n]的n值就要对词典进行一次查询,而且每次的查询过程都要在以W[1]为首字的所有词表范围内.因此整词二分法的查询效率不高.

 

二、基于TRIE索引树的分词词典机制

TRIE索引树是一种以树的多重链表形式表示的键树。

基于TRIE树的分词词典由两部分组成,如图3.2所示。

图 3.2 基于TRIE索引树的分词词典机制

1.首字散列表

同基于整 词二分的分词词典机制。首字散列表的一个单元是所对应汉字的TRIE索引树的根结点.

2.TRIE索引树结点

TRIE索引树结点是以下述结构为单元的,按关键字排序的数组:

关键字(2字节):单一汉字。

子树大小(2字节):以从根结点到当前单元的关键字组成的子串为前缓的词的个数。

子树指针(4字节):子树大小非0时,指针指向子树,否则指向叶子。

 

在TRIE索引树上查询任意一个词W[1…n]的过程为:

1) 根据首字散列表得到W[1]TRIE索引树,沿相应指针移动至目标结点NODE,i = 2。

2) 在NODE的关键字域中对汉字W[i]进行二分查找。

如果与NODE的第 j 个单元的关键字匹配成功则沿该单元的子树指针移至目标结点,并令该结点为新的NODE,i = i + 1,否则 查找失败,退出此过程。

3) 重做 2),直到 NODE为 叶子结点。

4) 如果 到达叶于结点时i>n,则

查询成功,W [l…n]为分词词典中的一个词,否则查询失败。

 

与整词二分的分词词典机制形成鲜明对照的是:基于TRIE索引树的分词词典机制每次仅仅只比较一个汉字,不需预知待查询词的长度,且在对汉字串S的一遍扫描过程中,就能得到所有可能切分的词。这种由短词及长词的确定性工作方式避免了整词二分的分词词典机制不必要的多次试探性查询。由于TRIE索引树已蕴含了词条信息,因此词典中不必再显式地罗列词条,可直接存储词的附属信息(叶子指针直接指向这些信息)。

TRIE索引树分词词典机制的主要缺点是其构造及维护比整词二分复杂。

 

基于TRIE索引树的另外一种构造方式就是:所有字都采用Hash散列的方式。其结构与图3.2 基本相同,不同的是其入口项个数要么为0 要么就是整个汉字字库的大小。这种方式在查询上有显著的效率提升,因为不需要执行二分查找,但是由于中文汉字数量巨大,同时也造成了大量空间的浪费。

 

三、基于逐字二分的分词词典机制

基于逐字二分的分词词典是针对整词二分和TRIE索引树的不足而设计的一种分词词典。逐字二分分词词典与整词二分分词词典在数据结构上相同,因此其构造比TRIE索引树简单。从查询方式来看,逐字二分不再将整个词作为关键字进行比较,而是类似TRIE索引树的情形,每次仅仅比较单个的汉字。因而其效果同TRIE索引树一样,不需预知待查询词的长度,且在对汉字串S的一遍扫描过程中,就能得到查询串中所有可能切分的词。

基于逐字二分分词词典,如图3.3所示。

NLP|中文分词技术及应用 摘要:中文分词是中文信息处理的重要基础,本文详细阐述了目前主要的几种中文分词算法的技术原理 、中文分词目前的瓶颈和评价准则,以及中文分词的具体应用。中文分词指将一个汉字序列切分成一个个单独的词。现有的中文分词算法有五大类:基于词典的方法,基于统计的方法,基于规则的方法,基于字标注的方法,基于人工智能技术(基于理解)的方法。中文分词目前主要有四个瓶颈,分别是分词歧义、未登录词识别、分词粒度问题、错别... 阅读详情

相关推荐

基于CRF的中文分词

 CRF简介Conditional Random Field:条件随机场,一种机器学习技术(模型)CRF由John Lafferty最早用于NLP技术领域,其在NLP技术领域中主要用于文本标注,并有多种应用场景,例如:分词(标注字的词位信息,由字构词)词性标注(标注分词的词性,例如:名词,动词,助词)命名实体识别(识别人名,地名,机构名,商品名等具有一定内在规律的实体名

王峰的Blog 3万+

python自然语言处理入门-词典分词

自然语言处理入门-词典分词 摘要 中文分词指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本。 词典分词是最简单、最常见的分词算法,仅需一部词典和一套查词典的规则即可。 给定一部词典,词典分词就是一个确定的查词与输出的规则系统。 1.什么是词 语言学定义:具备独立意义的最小单位。 基于词典的中文分词中的定义:词典中的字符串就是词。 1.1词的定义 齐夫定律:哈弗大学语言学家乔治 .金斯利 .齐夫于 1949年发表,...

weixin_38477351的博客 3029

实体词典 情感词典_基于情感词典的情感分析

NLP基于情感词典的情感分析情感分析主要是判别文本的情感倾向,即属于正面、负面、中性。利用机器提取人们对某人或事物的态度,从而发现潜在的问题用于改进或预测。目前主要的情感分析方法是基于情感词典的,以及基于监督或半监督学习的。基于情感词典的方法都好说,本篇接下来会详细讲;基于监督或半监督学习的方法主要是基于神经网络、深度学习的一些方法将文档转换成向量后,利用SVM、贝叶斯分类器等分类器再去分类,从而...

weixin_35829279的博客 5637

NLP-词典分词

NLP-词典分词一、环境安装pyhanlp二、hanlp词典获取三、完全切分四、正向最大切分(两种方式)五、反向最大切分 一、环境安装pyhanlp conda install -c conda-forge openjdk python=3.8 jpype1=0.7.0 -y pip install pyhanlp 二、hanlp词典获取 def load_dictionary(): """ 加载HanLP中的mini词库 :return: 一个set形式的词库 """

xu624735206的博客 668

易语言实现中文分词与断句技术及词典应用

本文还有配套的精品资源,点击获取 简介:本话题探讨了使用易语言开发基于词典的中文句子分词和断句技术。介绍了分词的基础概念、断句过程以及如何使用预定义词典进行文本处理。详细讨论了源代码“语义断句.e”中的算法逻辑和词典文件“词典.txt”的作用。此外,还提及了连接词处理和词性标注对提升分词和断句效果的重要性,以及这些技术在中文自然语言处理任务中的潜在应用。 1. 易语言...

weixin_31869917的博客 1448

百度分词词典——常用词词典 自然语言处理分词专用

百度分词词典——常用词词典 自然语言处理分词专用 能够辅助分词,共1876个词。

NLP入门(1)-词典分词方法及实战

分词是自然语言处理中最基本的任务之一,而词典分词是最简单、最常见的分词算法,仅需一部词典和一套查词典的规则即可。利用词典分词,最主要的是定制合适的切分规则。规则主要有正向...

abcdefg90876的博客 2339

中文分词字典

中文分词词库,格式如下: 00000001 李 168 n 00000002 李浩 133 nr2 00000003 互联网式 121 b ...

词典分词

中文分词:将一段文本拆分为一系列单词的过程。中文分词分为基于词典规则与基于机器学习这两大派别。 在基于词典的中文分词中,词典中的字符串就是词。 HanLP中的词典格式是一种以空格分隔的表格形式,易地裂是单词本身,之后两列分别是词性和相应的词频。 词典的加载 ...

skl454541398的博客 1769

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

永磁同步电机自抗扰控制ADRC(位置环/速度环控制器)Matlab/Simulink仿真(S-Function)

ESO是ADRC的核心,其作用是跟踪被控对象的输出,同时给出受控对象的各阶状态变量以及系统总扰动的实时估计,将其补偿到控制器中,实现动态补偿线性化。NLSEF采用非线性函数把TD产生的跟踪及微分信号与ESO给出的状态变量估计值之间的误差进行非线性组合得到初级控制量,然后同总扰动的补偿量一起生成最终的控制信号。自抗扰控制(ADRC)技术的核心思想是将简单的积分串联型视为标准模型,把系统模型中不同于标准型的部分和外部干扰之和视为总扰动,并将其扩张为一个新的状态。看作系统内外部扰动之和。令一个高阶状态变量为。

m0_66341377的博客 7613

关于双数组Trie查询词典构造总结

原贴:http://www.firtex.org/firtex_forum/archiver/?tid-241.html FirteX开发论坛 » FirteX开发者专区 » 关于双数组Trie查询词典构造总结 2007-5-12 12:25 AM firtexer 关于双数组Trie查询词典构造总结[b]首先需要对词典创建一个DFA[/b](如果对于DFA不熟悉的话,可以看

最实用的Linux博客 3428

Polymarket链上预测市场自动化交易代理开发实战指南

自动化交易代理是量化交易的核心工具,它通过预设的算法规则,自动执行市场分析、决策与下单操作,旨在提升交易效率与纪律性。其技术原理通常涉及实时数据获取、策略引擎计算、交易执行与风险管理等模块的协同工作。在区块链与DeFi领域,这类代理的价值尤为凸显,能够高效处理链上合约交互,捕捉去中心化市场的套利机会。具体到应用场景,链上预测市场如Polymarket,为自动化策略提供了丰富的博弈标的。本文以Polymarket交易代理项目为例,深入剖析其基于Node.js与ethers.js的技术栈实现,详解从环境配置、策

weixin_42533910的博客 581

中文分词--二级hash词典构造

1.汉字编码 汉字在计算机内部是以内码的形式进行存储的,汉字内码是汉字在汉字信息处理系统中最基本的表达形式,它与汉字交换码、汉字区位码有一定的对应关系。由于自定义编码顺序的特殊性,因而,可通过计算偏移量的方法来定位该汉字在编码表中任意的位置。国标GB2312汉字编码表共收录了6763个汉字。GB2312-80标注规定汉语字符的交换码由两个ASCII码构成:第一个是区码,取值从OxA1到OxF...

weixin_33816821的博客 264

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 364

使用KITTI数据集测试不同算法的性能

该文章将使用同一个kitti数据集来测试不同算法的性能,目前已经测试的算法包括:LIO-SAM,FAST-LIO2,Point-LIO,Faster-LIO。

wwtx的博客 2586

Python的情感词典情感分析和情绪计算

下面我们进行基于大连理工自定义词典的情感分析。核心模块调用大连理工词典,选取其中要用的列将情感极性转化一下,并计算得出真正的情感值(强度×极性(转后))找到情感词所属的大类分词 => 情感词间是否有否定词/程度词+前后顺序 => 情感分数累加import sysimport csv# 七个情感大类对应的小类简称: 尊敬score_class = {'乐':['PA','PE'],'好':['PD','PH', 'PG','PB','PK'],'怒':['NA' ],

s44359487yad的博客 7231

详解MegatronLM序列模型并行训练(Sequence Parallel)

MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。

分享机器学习、深度学习、分布式计算、MLSys相关领域知识 1万+

中文分词核心配置

<br />coreseek-3.2.13兼容sphinx-0.9.9的配置,可以不经修改,即可直接使用。<br /><br />不过,为了更好的针对中文进行检索,则需要使用coreseek新增的配置参数,设置中文分词。<br /><br />以下是中文分词的核心配置,请仔细阅读,应用到自己的配置之中:<br />source 数据源名称a { #...... #该部分的配置,直接采用sphinx的配置,无需更改即可直接使用 #...... } index 索引名称a { #以下部分的配置,

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 1705

Android perfetto 简介

android linux 性能优化 原理及操作

求变,从思想开始 3475

基于STM32设计的智能门锁(微信小程序+手机APP等多种方式开锁)(188)

当前智能门锁项目是基于STM32微控制器、ESP8266-WIFI模块、OLED显示屏、指纹模块、蓝牙模块、门禁刷卡模块、烟雾检测模块、火光检测模块、温湿度检测模块等硬件设备开发的一种智能门锁系统

1万+

结巴分词优点_中文分词概述及结巴分词原理

词是中文表达语义的最小单位,中文分词是中文文本处理的一个基础步骤,分词的结果对中文信息处理至为关键。本文先对中文分词方法进行概述,然后简单介绍结巴分词背后的原理。1.中文分词概述中文分词根据实现特点大致可分为两类:基于词典的分词方法、基于统计的分词方法。1.1 基于词典的分词方法基于词典的分词方法首先会建立一个充分大的词典,然后依据一定的策略扫描句子,若句子中的某个子串与词典中的某个词...

weixin_34474777的博客 1798

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

中文分词概述及结巴分词原理

词是中文表达语义的最小单位,自然语言处理的基础步骤就是分词,分词的结果对中文信息处理至为关键。 本文先对中文分词方法进行一下概述,然后简单讲解一下结巴分词背后的原理。 中文分词概述 简单来说,中文分词根据实现特点大致可分为两个类别: 基于词典的分词方法、基于统计的分词方法。 基于词典的分词方法 基于词典的分词方法首先会建立一个充分大的词典,然后依据一定...

dazha4426的博客 718

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: AIML 参考
下一篇: 警惕WS_EX_LAYERED属性的问题
b2b160
博客等级 码龄20年 2408粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值