Speech and Language Processing-之文本规范化

news2024/12/23 6:46:32

在对文本进行几乎任何自然语言处理之前,都必须对文本进行规范化。至少有三个任务通常作为任何规范化过程的一部分:

1. 分词

2. 规范化词格式

3. 句子分段

       让我们从一个简单的(如果有点幼稚的话)单词标记化和非malization(以及频率计算)版本开始,它可以在一个UNIX命令行中单独完成英语,灵感来自Church(1994)。我们将使用一些Unix命令:tr,用于系统地更改输入中的特定字符;Sort,按字母顺序对输入行进行排序;uniq,它折叠并计算相邻的相同线。
       例如,让我们从一个文本文件sh.txt中的莎士比亚的“完整单词”开始。我们可以使用tr通过将每个非字母字符序列更改为换行符来对单词进行标记(' a- za -z '表示字母,-c选项com-补充为非字母,-s选项将所有序列压缩为单个字符):
tr -sc ' A-Za-z ' ' \n ' < sh.txt

输出如下:

                   THE
                   SONNETS
                   by
                   William
                   Shakespeare
                   From
                   fairest
                   creatures
                   We

因此,标记化的标准方法是使用基于正则表达式的确定性算法,将正则表达式编译成非常高效的有限状态自动机。 

例如,在汉语中,单词是由汉字组成的(在汉语中称为汉字)。每个字符通常代表一个单一的意义单位(称为语素),并且可以作为一个音节发音。单词平均有2.4个字符长。但在汉语中,如何定义一个词是很复杂的。例如,考虑下面的句子:

事实上,对于大多数中文NLP任务来说,采用字符而不是单词作为输入效果更好,因为对于大多数应用程序来说,字符处于合理的语义水平,而且大多数单词标准都会导致包含大量非常罕见的单词的庞大词汇表。 然而,对于日文和泰文,字符是一个太小的单位,因此需要分词算法。在需要单词边界而不是字符边界的罕见情况下,这对中文也很有用。这些语言的标准分割算法使用在手工分割训练集上通过监督机器学习训练的神经序列模型。

使用子词标记很有帮助的一个原因是处理未知单词。

未知单词与机器学习系统特别相关。正如我们将在下一章中看到的,机器学习系统通常会在一个语料库(训练语料库)中学习一些关于单词的事实,然后使用这些事实来对单独的测试语料库及其单词做出决定。因此,如果我们的训练语料库包含,说low,和lowest,但不是lower,但然后这个词lower出现在我们的测试语料库中,我们的系统将不知道如何处理它。这个地方其实意思就是如果训练集里面的词是low和lowest,如果测试集合里面出现了lower,那么模型就不知道如何处理了。

这个问题的解决方案是使用一种标记化,其中大多数标记是单词,但有些标记是频繁的语素或其他子词,如-er,这样就可以通过组合部分来表示未见过的单词。

最简单的算法是字节对编码,或BPE (Sennrich et al., 2016)。字节对编码基于一种文本压缩方法(Gage, 1994),但这里我们将其用于标记化。该算法的直觉是迭代地合并频繁的字符对。

该算法从一组等于一组字符的符号开始。每个单词都表示为一个字符序列加上一个特殊的单词结束符号。在算法的每一步,我们计算符号对的数量,找到最频繁的符号对(' A ', ' B '),并用新合并的符号(' AB ')替换它。我们继续计数和合并,创建新的越来越长的字符串,直到我们完成k次合并;K是算法的一个参数。

 

 

 

 

 如下是BEP算法的代码:

 

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

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

相关文章

CIC 滤波器——不同长度的单级CIC滤波器的频谱特性

CIC 滤波器 % 多速率信号处理过程的关键是设计满足要求的抗混叠滤波器&#xff1a; % 第一&#xff1a;滤波器在有用信号频段内的纹波系数满足要求&#xff1b; % 第二&#xff1a;抽取或内插处理后&#xff0c;在有用信号频段内不产生频谱混叠&#xff1b; % 第三&#xf…

ASM磁盘组增加磁盘

续昨天的问题&#xff0c;DATA磁盘组空间不足的问题&#xff0c;客户也紧张&#xff0c;一早就讨论方案&#xff0c;新增2个2T的磁盘&#xff0c;将原来2个500G磁盘下线&#xff0c;下午存储端配置后&#xff0c;下面就是主机和数据库的事情&#xff08;为了避免客户信息泄露&a…

生成树协议 STP

文章目录 1 概述2 生成树协议 STP2.1 桥 ID&#xff08;Bridge ID&#xff09;2.2 路径开销&#xff08;Path Cost&#xff09;2.3 示例 3 扩展 1 概述 #mermaid-svg-QRMpkzeB3Xf66zNv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#3…

【学习笔记】- 零基础学React

React是用于构建用户界面的JavaScript库。想要深入学习 react &#xff0c;就应该从 jsx 入手 react脚手架初始化项目 >> npm install -g create-react-app >> create-react-app proname >> npm run start运行之后&#xff0c;出现以下画面&#xff0c;至此…

DHCP服务

~ 安装和配置 DHCP 服务&#xff0c;为办公区域网络提供地址上网&#xff1b; ~ 创建地址池 inside_pool,地址池范围 192.168.0.100 - 192.168.0.200&#xff1b; ~ 根据题目 要求正确的配置网关和DNS信息&#xff1b; ~ 修改AppSrv 的dhcp服务器默认备份时间为150秒&#x…

案例3:Java汽车保养维修系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

dll文件丢失怎么恢复,修复丢失dll的全部方法分享

dll文件丢失怎么恢复&#xff1f;其实DLL 或称为动态链接库文件&#xff0c;是 Windows 操作系统中的重要文件之一&#xff0c;它包含了被应用程序或操作系统内部使用的函数和程序代码。当应用软件或系统内置应用启动时&#xff0c;会自动加载对应的 DLL 文件以获得所需要的程序…

ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析

第一章、生态系统服务讲解 1.生态系统服务概念和基本理论 ​ 2.生态系统服务评估方法与模型讲解 ​ ​ 3.生态系统服务权衡与协同研究方法与意义 ​ 4.文献可视化分析 ​ ​ 第二章、平台基础 一、ArcGIS Pro介绍1. ArcGIS Pro简介2. ArcGIS Pro基础3. ArcGIS Pro数据预处理4…

FLink 里面的时间语义说明

本文说明一下flink的时间语义 处理时间&#xff08;processTIme&#xff09; 执行相关操作的机器系统时间。 如果flink的流式处理程序是基于processtime。那么代码中所有的操作都是将基于运算符的机器系统时钟时间。每小时的processTime window包括在系统时钟指示完整一个小时…

直线导轨水平仪零位调整方法

对于直线导轨的使用&#xff0c;相信很多人都知道&#xff0c;这主要是因为直线导轨的使用范围非常广泛&#xff0c;小到抽屉&#xff0c;大到机械设备&#xff0c;我们都能看到他的身影&#xff0c;接触得多自然就熟悉了。 事实上&#xff0c;大家对直线导轨的了解可能就仅限于…

BM41-输出二叉树的右视图

题目 请根据二叉树的前序遍历&#xff0c;中序遍历恢复二叉树&#xff0c;并打印出二叉树的右视图 数据范围&#xff1a; 0≤n≤10000 要求&#xff1a; 空间复杂度 O(n)&#xff0c;时间复杂度 O(n) 如输入[1,2,4,5,3],[4,2,5,1,3]时&#xff0c;通过前序遍历的结果[1,2,4,…

Redis——BigKey问题

目录 MoreKey案例 测试数据 如何向redis数据库中一次性的插入100W条数据 如何将 100W条数据一次性写入redis数据库中 遍历百万、千万级别数据能否使用keys *? 生产上如何限制keys *、flushdb、flushall等危险命令&#xff1f; 不使用keys *使用什么遍历&#xff1f; 使…

Spring学习小结_2

文章目录 篇112 Bean的生命周期Bean实例属性填充循环引用Aware接口Spring IoC 整体流程总结 13 Spring整合MyBatis剖析 篇1 Spring学习小结_1 https://blog.csdn.net/m0_58730471/article/details/130075657?spm1001.2014.3001.5501 12 Bean的生命周期 Spring Bean的生命周期…

当下火爆出圈的 ChatGPT ,你了解多少?

ChatGPT 是什么&#xff1f;ChatGPT 有什么特点&#xff1f;ChatGPT 可以做什么&#xff1f;ChatGPT 初体验 当下 AI 聊天程序 ChatGPT 可谓如火如荼&#xff0c;因它给出的答案通常更为合理且更有人情味&#xff0c;全网讨论度非常高。 ChatGPT 是什么&#xff1f; ChatGPT 是…

仪表板展示 | X-lab开放实验室GitHub开源项目洞察大屏

背景介绍 X-lab开放实验室是一个开源软件产业开放式创新的共同体&#xff0c;由来自国内外著名高校、创业公司、部分互联网与IT企业的专家学者与工程师所构成&#xff0c;目前已在包括开源治理标准制定、开源社区行为度量与分析、开源社区流程自动化、开源全域数据治理与洞察等…

CSS - 实现容器溢出后隐藏滚动条并且能正常滚动,盒子高度超出后不显示滚动条但是能正常滚动(附带详细示例,完美解决方案)

前言 网上很多都会使用 JS 来实现&#xff0c;其实纯 CSS 就能完成。 本文实现了 当外层容器盒子溢出时&#xff0c;去掉滚动条的显示&#xff08;但能正常滚动&#xff09;&#xff0c;适用于 Vue、React 等全部前端项目&#xff0c; 您可以直接复制示例源码&#xff0c;运行…

Android性能优化—ViewPagers + Fragment缓存优化

大家看标题&#xff0c;可能会有点儿懵&#xff0c;什么是ViewPagers&#xff0c;因为在很久之前&#xff0c;我们使用的都是ViewPager&#xff0c;但是现在更多的是在用ViewPager2&#xff0c;因此用ViewPagers&#xff08;ViewPager、ViewPager2&#xff09;来代替两者&#…

第10届蓝桥杯省赛真题剖析-2019年3月24日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第126讲。 第10届蓝桥杯省赛&#xff0c;这是2019年3月24日举办的省赛Scratch考试真题&#xff0c;比赛是在线下举办的…

分组双轴图:揭示数据中的关联性和趋势变化

简介 分组双轴图是一种数据可视化图表&#xff0c;指有多个&#xff08;≥2&#xff09;Y轴的数据图表&#xff0c;多为分组柱状图折线图的结合&#xff0c;图表显示更为直观&#xff0c;可以很好地展示不同指标之间的关系&#xff0c;帮助用户更好地理解数据&#xff0c;做出…

深度学习 - 44.MMOE 与 Gate 之多目标学习

目录 一.引言 二.摘要 Abstract 三.介绍 Introduction 四.相关工作 RELATED WORK 1.DNN 中的多任务学习 2.SubNet 集成与 Expert 混合 3.多任务学习应用 五.建模方法 MODELING APPROACHES 1.Shared-bottom Multi-task Model 2.Mixture-of-Experts 3.Multi-gate Mixt…