R语言【utlis】——adist():字符串近似距离(编辑距离)

Package utils version 4.2.0


Description

计算字符向量之间的近似字符串距离。这个距离是一个广义的Levenshtein(编辑)距离,给出了将一个字符串转换为另一个字符串所需的最小可能的插入、删除和替换加权数。


Usage

adist(x, y = NULL, costs = NULL, counts = FALSE, fixed = TRUE,partial = !fixed, ignore.case = FALSE, useBytes = FALSE)

Arguments

参数【x】:一个字符向量。不支持长向量。

参数【y】:一个字符向量,或默认为NULL,即视作参数【x】的值。

参数【costs】:数值向量或命名列表,明确指出计算Levenshtein距离时要进行“insertions”,“deletions”和“substitutions”的加权。默认为NULL表示三种编辑方式加权相同。

参数【counts】:逻辑值指示是否将编辑次数(insertions,deletions和substitutions的次数)作为返回值的 counts 属性。

参数【fixed】:逻辑值。默认为TRUE,参数【x】视为正常的字符。否则,参数【x】将视为标准的正则字符串,并且参数【partial】自动设置为FALSE。

参数【partial】:逻辑值。指示编辑后的参数【x】是否要完全匹配参数【y】。

参数【ignore.case】:逻辑值。如果为TRUE,计算编辑距离时忽略大小写。

参数【useBytes】:逻辑值。如果为TRUE,计算编辑距离将使用字节,而不是字符。


Details

两个字符串s和t之间的(广义的)Levenshtein(或编辑)距离是将s转换为t(以便转换完全匹配t)所需的插入、删除和替换的最小可能加权数。

这个距离是在partial = FALSE时计算的,目前使用的是一种动态规划算法(例如,参见https://en.wikipedia.org/wiki/Levenshtein_distance),其空间和时间复杂度为O(mn),其中m和n分别是s和t的长度。

另外,计算变换序列和计数是O(max(m,n))。

广义Levenshtein距离也可以用于近似(模糊)字符串匹配,在这种情况下,可以找到与模式s距离最小的t的子字符串(可以将其视为正则表达式,在这种情况下使用最左和最长匹配的原则适用),参见,例如https://en.wikipedia.org/wiki/Approximate_string_matching。这个距离是由Ville Laurikari (https://github.com/laurikari/tre)使用' ' tre ' '为partial = TRUE计算的,并且对应于agrep使用的距离。在这种情况下,给定的cost值被强制为整数。

注意,插入和删除的代价可以不同,在这种情况下,s和t之间的距离可以不同于t和s之间的距离。


Value

具有x和y元素的近似串距离的矩阵,其行和列分别对应于x和y。

如果counts为TRUE,则转换计数作为该矩阵的“counts”属性返回,作为一个三维数组,其维度分别对应于x的元素、y的元素和转换类型(插入、删除和替换)。

此外,如果partial = FALSE,转换序列将作为返回值的“trafos”属性返回,作为包含元素“M”、“I”、“D”和“S”的字符串,分别表示匹配、插入、删除和替换。

如果partial = TRUE,则匹配子字符串的偏移量(第一个和最后一个元素的位置)将作为返回值的"offsets"属性返回(包含两个偏移量),−1表示不匹配。


Examples

adist("kitten", "sitting")
     [,1]
[1,]    3
drop(attr(adist("kitten", "sitting", counts = TRUE), "counts"))
ins del sub 1   0   2 
attr(adist(c("kitten", "sitting"), counts = TRUE), "trafos")
     [,1]      [,2]     
[1,] "MMMMMM"  "SMMMSMI"
[2,] "SMMMSMD" "MMMMMMM"
adist("lasy", "1 lazy 2")
     [,1]
[1,]    5
adist("lasy", "1 lazy 2", partial = TRUE)
     [,1]
[1,]    1

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

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

相关文章

Java集合框架(包装类、泛型)

前言: 本篇文章我们来讲解Java中的集合框架,就相当于车轮子。Java是面向对象的语言,所以相对于C语言有自身优势,就比如现成的数据结构(比如栈,队列,堆等)。Java的集合框架大家也不用…

13 年后,我如何用 Go 编写 HTTP 服务(译)

原文:Mat Ryer - 2024.02.09 大约六年前,我写了一篇博客文章,概述了我是如何用 Go 编写 HTTP 服务的,现在我再次告诉你,我是如何写 HTTP 服务的。 那篇原始的文章引发了一些热烈的讨论,这些讨论影响了我今…

2019 年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书(笔记详解)

1. 网络拓扑图 2. IP 地址规划表 3. 设备初始化信息 阶段一 任务 1:网络平台搭建 1、根据网络拓扑图所示,按照 IP 地址参数表,对 DCFW 的名称、各接口IP 地址进行配置。 2、根据网络拓扑图所示,按照 IP 地址参数表,对 DCRS 的名称进行配置,创建 VLAN 并将相应接口划入 …

二十、K8S-1-权限管理RBAC详解

目录 k8s RBAC 权限管理详解 一、简介 二、用户分类 1、普通用户 2、ServiceAccount 三、k8s角色&角色绑定 1、授权介绍: 1.1 定义角色: 1.2 绑定角色: 1.3主体(subject) 2、角色(Role和Cluster…

第三百一十六回

[tod] 我们在上一章回中介绍了"如何在输入框中处理光标"相关的内容,本章回中将介绍如何添加输入框默认值.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在项目中经常使用输入框获取用户输入的内容,有时候在输入框中反复输入相…

城市合伙人计划:资源共享、知识交流、合作创新

城市合伙人计划是一种合作伙伴关系,旨在通过共享资源、知识和经验,共同推动城市的经济发展和社会进步。这种计划通常涉及市政府、企业、社会组织和个人等多个方面,通过合作共同解决城市面临的问题和挑战。 城市合伙人计划的具体形式和内容可…

基于SSM的图书管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88825395?spm1001.2014.3001.5503 Java项目-14 1、导入源码 不成功导入模块也可以 2、配置jdk-一般为1.8 3、修改文件中数据库连接名与密码 4、配置Maven 5、更新Maven 7、添加数据库…

深入探究Java核心注解及自定义注解的奥秘

深入探究Java核心注解及自定义注解的奥秘 Java作为一门成熟的编程语言,其注解机制为开发者提供了极大的便利。注解不仅能够提供代码的额外信息,还能够被编译器和运行时环境所使用,从而实现更加丰富和动态的编程范式。在本文中,我…

Python爬虫之非关系型数据库存储#5

NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库。NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高。 非关系型数据库又可细分如下。 键值存储数据库&am…

【MySQL】-12 MySQL索引(上篇MySQL索引类型前置-1)

MySQL索引 索引1 索引基础2 索引与优化1 选择索引的数据类型1.1 选择标识符 2 索引入门2.1 索引的类型2.1.1 B-Tree索引2.1.2 Hash索引2.1.3 空间(R-Tree)索引2.1.4 全文(Full-text)索引 索引的优点:索引是最好的解决方案吗? 索引 索引(在MYS…

【笔记】Harmony学习:下载安装 DevEco Studio 开发工具IDE

IDE 安装 从官网下载DevEco Studio 安装包后进行安装, 安装完毕后,本地环境可能要配置相关工具,可以通过下面的诊断检测一下本地环境,通过蓝色“Set it up now” 可以快速安装。 1. Node.js (for ohpm) 2. ohpm 下载op的包管理&a…

精灵图,字体图标,CSS3三角

精灵图 1.1为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁的接受和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 因此,为了有效地减少…

Linux无交互自动安装miniconda3

一、普通执行 # 下载miniconda3 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py311_23.9.0-0-Linux-x86_64.sh # 自动安装miniconda3至/opt/miniconda3目录下 bash Miniconda3-py311_23.9.0-0-Linux-x86_64.sh -p /opt/miniconda3 -b# 执行codn…

Lua metatable metamethod

示例代码 《programming in lua》里有一个案例很详细,就是写一个集合类的table,其负责筛选出table中不重复的元素并组合成一个新的table。本人按照自己的方式默写了一次,结果发现大差不差,代码如下: Set {} --集合--…

43.1k star, 免费开源的 markdown 编辑器

简介 项目名: MarkText-- 简单而优雅的开源 Markdown 编辑器 Github 开源地址: https://github.com/marktext/marktext 官网: https://www.marktext.cc/ 支持平台: Linux, macOS 以及 Windows。 操作界面: 在操作界…

一场由对生成型人工智能的普遍不满引发的全面攻击正在展开

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Lua序列化

我们经常需要序列化一些数据,为了将数据转换为字节流或者字符流,这样我们就可以保存到文件或者通过网络发送出去。我们可以在 Lua 代码中描述序列化的数据,在这种方式下,我们运行读取程序即可从代码中构造出保存的值。 number/st…

Qt QML学习(文章链接汇总)

Qt QML学习(一):Qt Quick 与 QML 简介 Qt QML学习(二):QML 语法 持续更新中…

【Linux】学习-动静态库

动静态库 头文件与库的区别 头文件一般而言,是声明和宏定义。头文件是在预处理阶段使用的 库文件是已经编译好的二进制代码。是一种目标文件,库文件是在链接阶段使用的 对于头文件和库我们可以这样理解,就是头文件提供的是一个函数的声明&…

第十五届蓝桥杯全国软件和信息技术专业人才大赛个人赛(软件赛)软件测试组竞赛规则及说明

第十五届蓝桥杯全国软件和信息技术专业人才大赛个人赛 (软件赛)软件测试组竞赛规则及说明 目录