自然语言处理--双向匹配算法
自然语言处理作业1--双向匹配算法
一、概述
双向匹配算法是一种用于自然语言处理的算法,用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。
在双向匹配算法中,首先将两个文本分别进行处理,然后分别从两个文本的角度进行匹配。这种双向匹配可以更全面地考虑两个文本之间的相似性,避免单向匹配算法可能出现的遗漏或错误匹配的情况。
双向匹配算法通常包括以下步骤:
- 分词处理:对两个文本分别进行分词处理,将文本分割成词语或短语的序列。
- 特征提取:从两个文本中提取特征,如词频、词性、语义信息等。
- 匹配计算:使用不同的匹配算法(如余弦相似度、编辑距离等)计算两个文本之间的相似度或匹配程度。
- 结果合并:将两个文本的匹配结果进行合并,得到最终的匹配结果。
双向匹配算法能够更准确地捕捉两个文本之间的相似性,提高了文本对齐、翻译、语义匹配等任务的准确性和效率。因此,在自然语言处理领域中得到了广泛的应用。
二、算法描述
正向最大匹配算法是一种中文分词算法,用于将连续的中文文本切分成词语。步骤如下:
- 从切分列表的第一个位置开始,取出长为最大词长MaxLen的词语作为子串。
- 判断子串是否在词库中存在,若存在则将该词作为分词结果,并将切分列表中对应的部分删除。
- 若子串在词库中不存在,则将子串的最后一个字符去掉,得到一个新的子串。
- 重复步骤2和步骤3,直到子串为空或切分列表为空。
- 返回分词结果。
反向最大算法也是一种中文分词算法,与正向最大匹配算法相反,从待分词文本的末尾开始逆向切分成词语。步骤如下:
- 从切分列表最后一个位置开始,取出长为最大词长MaxLen的词语作为子串。
- 判断子串是否在词库中存在,若存在则将该词作为分词结果,并将切分列表中对应的部分删除。
- 若子串在词库中不存在,则将子串的第一个字符去掉,得到一个新的子串。
- 重复步骤2和步骤3,直到子串为空或切分列表为空。
- 返回分词结果。
逆向最大匹配算法与正向最大匹配算法的区别在于匹配的方向,逆向最大匹配算法从后往前匹配词语,但原理和步骤与正向最大匹配算法相似。
三、详细描述
以“对外经济技术合作与交流不断扩大。”为例,详细描述算法如下:
正向最大匹配算法:
假设最大词长MaxLen为5
- 取子串 “对外经济技”,扫描词典,没有匹配,子串长度减1变为“对外经济”
- “对外经济”,扫描词典,没有匹配,子串长度减1变为“对外经”
- “对外经”,扫描词典,没有匹配,子串长度减1变为“对外”
- “对外”, 扫描词典,有匹配,输出“对外”,输入变为“经济技术合”
- “经济技术合”,扫描词典,没有匹配,子串长度减1变为“经济技术”
- “经济技术合”,扫描词典,没有匹配,子串长度减1变为“经济技术”
- “经济技”,扫描词典,没有匹配,子串长度减1变为“经济”
- “经济”,扫描词典,有匹配,输出“经济”,输入变为“技术合作与”
- “技术合作与”,扫描词典,没有匹配,子串长度减 1 变为“技术合作”
- “技术合作”,扫描词典,没有匹配,子串长度减 1 变为“技术合”
- “技术合”,扫描词典,没有匹配,子串长度减 1 变为“技术”
- “技术”,扫描词典,有匹配,输出“技术”,输入变为“合作与交流”
- “合作与交流”,扫描词典,没有匹配,子串长度减 1 变为“合作与交”
- “合作与交”,扫描词典,没有匹配,子串长度减 1 变为“合作与”
- “合作与”,扫描词典,没有匹配,子串长度减 1 变为“合作”
- “合作”,扫描词典,有匹配,输出“合作”,输入变为“与交流不断”
- “与交流不断”,扫描词典,没有匹配,子串长度减 1 变为“与交流不”
- “与交流不”,扫描词典,没有匹配,子串长度减 1 变为“与交流”
- “与交流”,扫描词典,没有匹配,子串长度减 1 变为“与交”
- “与交”,扫描词典,没有匹配,子串长度减 1 变为“与”
- “与”,扫描词典,有匹配,输出“与”,输入变为“交流不断扩”
- “交流不断扩”,扫描词典,没有匹配,子串长度减 1 变为“交流不断”
- “交流不断”,扫描词典,没有匹配,子串长度减 1 变为“交流不”
- “交流不”,扫描词典,没有匹配,子串长度减 1 变为“交流”
- “交流”,扫描词典,有匹配,输出“交流”,输入变为“不断扩大。”
- “不断扩大。”,扫描词典,没有匹配,子串长度减 1 变为“不断扩大”
- “不断扩大”,扫描词典,没有匹配,子串长度减 1 变为“不断扩”
- “不断扩”,扫描词典,没有匹配,子串长度减 1 变为“不断”
- “不断”,扫描词典,有匹配,输出“不断”,输入变为“扩大。”
- “扩大。”,扫描词典,没有匹配,子串长度减 1 变为“扩大”
- “扩大”,扫描词典,有匹配,输出“扩大”, 输入变为“。”
- “。”,扫描词典,有匹配,输入变为“”,扫描终止
正向最大匹配法最终的切分结果为:“对外/经济/技术/合作/与/交流/不断/扩大/。”
反向最大匹配算法:
假设最大词长MaxLen为5
- 取子串 “不断扩大。”,扫描词典,没有匹配,子串长度减1变为“不断扩大”
- “断扩大。”,扫描词典,没有匹配,子串长度减1变为“扩大。”
- “扩大。”,扫描词典,没有匹配,子串长度减1变为“大。”
- “大。”,扫描词典,没有匹配,子串长度减1变为“。”
- “。”,扫描词典,有匹配,输出“。”,输入变为“流不断扩大”
- “流不断扩大”,扫描词典,没有匹配,子串长度减1变为“不断扩大”
- “不断扩大”,扫描词典,没有匹配,子串长度减1变为“断扩大”
- “断扩大”,扫描词典,没有匹配,子串长度减1变为“扩大”
- “扩大”,扫描词典,有匹配,输出“扩大”,输入变为“与交流不断”
- “与交流不断”,扫描词典,没有匹配,子串长度减1变为“交流不断”
- “交流不断”,扫描词典,没有匹配,子串长度减1变为“流不断”
- “流不断”,扫描词典,没有匹配,子串长度减1变为“不断”
- “不断”,扫描词典,有匹配,输出“不断”,输入变为“合作与交流”
- “合作与交流”,扫描词典,没有匹配,子串长度减1变为“作与交流”
- “作与交流”,扫描词典,没有匹配,子串长度减1变为“与交流”
- “与交流”,扫描词典,没有匹配,子串长度减1变为“交流”
- “交流”,扫描词典,有匹配,输出“交流”,输入变为“技术合作与”
- “技术合作与”,扫描词典,没有匹配,子串长度减1变为“术合作与”
- “术合作与”,扫描词典,没有匹配,子串长度减1变为“合作与”
- “合作与”,扫描词典,没有匹配,子串长度减1变为“作与”
- “作与”,扫描词典,没有匹配,子串长度减1变为“与”
- “与”,扫描词典,有匹配,输出“与”,输入变为“济技术合作”
- “济技术合作”,扫描词典,没有匹配,子串长度减1变为“技术合作”
- “技术合作”,扫描词典,没有匹配,子串长度减1变为“术合作”
- “术合作”,扫描词典,没有匹配,子串长度减1变为“合作”
- “合作”,扫描词典,有匹配,输出“合作”,输入变为“外经济技术”
- “外经济技术”,扫描词典,没有匹配,子串长度减1变为“经济技术”
- “经济技术”,扫描词典,没有匹配,子串长度减1变为“济技术”
- “济技术”,扫描词典,没有匹配,子串长度减1变为“技术”
- “技术”,扫描词典,有匹配,输出“技术”,输入变为“对外经济”
- “对外经济”,扫描词典,没有匹配,子串长度减1变为“外经济”
- “外经济”,扫描词典,没有匹配,子串长度减1变为“经济”
- “经济”,扫描词典,有匹配,输出“经济”,输入变为“对外”
- “对外”,扫描词典,有匹配,输出“对外”,输入变为“”,扫描终止
反向最大匹配法最终的切分结果为:“对外/经济/技术/合作/与/交流/不断/扩大/。”
四、软件演示

相关文章:
自然语言处理--双向匹配算法
自然语言处理作业1--双向匹配算法 一、概述 双向匹配算法是一种用于自然语言处理的算法,用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。 在双向匹配算法中,首先将两个文本分别进行处理,然后…...
IDEA 2023.3.2 安装教程
1.下载2023.3.2版本IDEA 链接:https://pan.baidu.com/s/1RkXBLz6qxsd8VxXuvXCEMA?pwd5im6 提取码:5im6 2.安装 3.解压文件,进入,选择方式3 4.将下面文件夹复制到任意位置(不要有中文路径) 5.进入下面文…...
C语言常见面试题:什么是宏,宏的作用是什么?
宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行…...
【0248】Background Writing实现机制分析
文章目录 1. 前言2. 有了checkpoint,为何还需要background writing?2.1 checkpoint和background writing有何差异? 如何协同工作?2.2 background writing如何工作? 职责是什么?1. 前言 本文是Background Writing进程理论篇,源码剖析实战篇会在后面给出。本文的主要内容…...
基于springboot+vue的教师工作量管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...
4-新建子模块(尝鲜)
新建子模块 Maven多模块下新建子模块流程案例。 1、新建业务模块目录,例如:ruoyi-test。 2、在ruoyi-test业务模块下新建pom.xml文件以及src\main\java,src\main\resources目录。 <?xml version"1.0" encoding"UTF-8&…...
反序列化字符串逃逸(上篇)
首先,必须先明白,这个点并不难,我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符,是不是很简单,哈哈哈! 好了,不闹了,其实: 这里你们只要懂…...
[C++]使用yolov5的onnx模型结合onnxruntime和bytetrack实现目标追踪
【官方框架地址】 yolov5框架:https://github.com/ultralytics/yolov5 bytetrack框架:https://github.com/ifzhang/ByteTrack 【算法介绍】 Yolov5与ByTetrack:目标追踪的强大组合 Yolov5和ByTetrack是两种在目标追踪领域具有显著影响力…...
i2c接口验证
用i2cdetect命令。 1,检测有几组i2c总线在系统上 i2cdetect -l 2,查询i2c总线上挂接的设备及设备的地址 i2cdetect -y <number> i2cdetect -y 0命令用于扫描I2C总线/dev/i2c-0,并列出所有在该总线上存在的有效I2C设备地址。...
1、Pandas 数据结构:从 Series 到 DataFrame
目录 Series 创建 Series Series 索引和选择 DataFrame 创建 DataFrame DataFrame 索引和选择 DataFrame 操作和转换 数据结构转换 Series Series 是 Pandas 中的一维数组形式的数据结构,它可以包含任何数据类型(整数、字符串、浮点数、Python对象…...
MySQL函数—字符串函数
MySQL函数—字符串函数 函数功能CONCAT(s1,s2,...sn)字符串拼接,将s1,s2,...sn拼接成一个字符串LOWER(str)将字符串全部转为小写UPPER(str)将字符串全部转为大写LPAD(str,n,pad)左填充,用字符串pad对str左边进行填充,达到n个字符串长度RPAD(s…...
PLC从HTTP服务端获取JSON文件,解析数据到寄存器
智能网关IGT-DSER集成了多种PLC协议,方便实现各种PLC与HTTP服务端之间通讯。通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可采用POST命令,将JSON文件提交给HTTP的服务端; 服务端有返回的JSON&…...
LeetCode 46. 全排列
46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#…...
NVMe TCG安全数据存储简介
NVMe(非易失性内存主机控制器接口规范)与TCG(可信计算组)的集成主要体现在数据安全、固件验证和硬件信任根等方面,以确保存储设备的数据保护能力和安全性。 TCG Opal定义了一套针对自加密硬盘(SED, Self-En…...
Linux命令-ab命令(Apache服务器的性能测试工具 )
Apache服务器的性能测试工具 ab命令 是一个测试你 Apache http 服务器的工具,你可以通过这个工具,指定一个单位时间内向 apache 发出的请求数量来看看你的 Apache 和机器配合的性能如何。 语法 []内容为ab命令后跟的语法,eg:ab …...
蓝桥杯java基础
数组的倒序与隔位输出 时间限制:1.000S 空间限制:128MB 题目描述 给定一个整数数组,编写一个程序实现以下功能: 1. 将输入的整数数组倒序输出,每个数之间用空格分隔。 2. 从正序数组中,每隔一个单位&a…...
Unity3d引擎中使用AIGC生成的360全景图(天空盒)
前言 在这里与Skybox AI一起,一键打造体验无限的360世界,这是这个AIGC一键生成全景图的网站欢迎语。 刚使用它是23年中旬,在没有空去给客户实地拍摄全景图时,可以快速用它生成一些相关的全景图,用作前期沟通的VR de…...
React Router v6 改变页面Title
先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …...
postman测试导入文件
01 上传文件参数 1.选择请求方式 选择post请求方式,输入请求地址 2.填写Headers Key:Content-Type ; Value:multipart/form-data 如下图 3.填写body 选择form-data,key选择file类型后value会出现按钮࿰…...
ZigBee学习(一)
文章目录 一、ZigBee介绍二、IEEE 802.15.42.1 物理层2.2 MAC层2.3 如何实现网络和设备寻址2.4 能量管理 三、ZigBee网络拓扑结构四、ZigBee配置参数 一、ZigBee介绍 ZigBee是一种基于IEEE 802.15.4标准的高级通信协议,它被设计用于低速率、低功耗和短距离无线通信&…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
【Redis】Redis从入门到实战:全面指南
Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...
