首页 > 编程语言 >C#,深度好文,精致好码,文本对比(Text Compare)算法与源代码

C#,深度好文,精致好码,文本对比(Text Compare)算法与源代码

时间:2024-03-19 10:01:11浏览次数:31  
标签:Compare 文本 Wunsch C# BLAST 算法 序列 源代码 比较

Vladimir I. Levenshtein

一、文本对比的列文斯坦距离(编辑距离)算法

在日常应用中,文本比较是一个比较常见的问题。文本比较算法也是一个老生常谈的话题。
文本比较的核心就是比较两个给定的文本(可以是字节流等)之间的差异。目前,主流的比较文本之间的差异主要有两大类。一类是基于编辑距离(Edit Distance)的,例如LD算法。一类是基于最长公共子串的(Longest Common Subsequence),例如Needleman/Wunsch算法等。


列文斯基距离(LD,Levenshtein Distance)又成为编辑距离算法(Edit Distance)。他是以字符串A通过插入字符、删除字符、替换字符变成另一个字符串B,那么操作的过程的次数表示两个字符串的差异。

文件1里面是需要比较的内容,文件2是被比较的文本,现在需要找到在文件1中每一行的文本在文件2中是否存在并相等,如果相等,就在一份结果文件中输出,文件1的哪一行与文件2的哪一行相同,反之不相同就输出文件1的哪一行不相同货不存在。


可以对两段文本进行对比,检测/比较两个文本有什么不同的差异,以便修改,常用于程序代码,就是不需要人工查看,尤其是大文件,有几百上千行的代码,这时候就建议使用比较工具了,不用浪费过多时间去寻找。


为了判断文本文件的内容是否发生变化,确定变化的内容,并尽量降低系统开销,提出了一种基于位置的文本文件比较算法。算法利用位置优先原则,简化了比较过程。实验结果表明该算法可以应用于文件监控,而且易于理解。


二、相似度计算

在自然语言处理任务中,我们经常需要判断两篇文档是否相似、计算两篇文档的相似程度。比如,基于聚类算法发现微博热点话题时,我们需要度量各篇文本的内容相似度,然后让内容足够相似的微博聚成一个簇;在问答系统中,我们会准备一些经典问题和对应的答案,当用户的问题和经典问题很相似时,系统直接返回准备好的答案;在监控新闻稿件在互联网中的传播情况时,我们可以把所有和原创稿件相似的文章,都看作转发,进而刻画原创稿件的传播范围;在对语料进行预处理时,我们需要基于文本的相似度,把重复的文本给挑出来并删掉……总之,文本相似度是一种非常有用的工具,可以帮助我们解决很多问题。

三、尼德曼-翁施算法(Needleman-Wunsch Algorithm)

尼德曼-翁施算法(Needleman-Wunsch Algorithm)是基于生物信息学的知识来匹配蛋白序列或者DNA序列的算法。这是将动态算法应用于生物序列的比较的最早期的几个实例之一。该算法是由 Saul B. Needlman和 Christian D. Wunsch 两位科学家于1970年发明的。本算法高效地解决了如何将一个庞大的数学问题分解为一系列小问题,并且从一系列小问题的解决方法重建大问题的解决方法的过程。该算法也被称为优化匹配算法和整体序列比较法。Needleman-Wunsch 算法仍然被广泛应用于优化整体序列比较中。

蛋白序列?DNA序列?没错,此算法同样用于文本对比。

 Saul B. Needlman

 

 Christian D. Wunsch

四、 史密斯-沃特曼算法(Smith-Waterman algorithm)

史密斯-沃特曼算法(Smith-Waterman algorithm)是一种进行局部序列比对(相对于全局比对)的算法,用于找出两个核苷酸序列或蛋白质序列之间的相似区域。该算法的目的不是进行全序列的比对,而是找出两个序列中具有高相似度的片段。
该算法由坦普尔·史密斯(Temple F. Smith)和迈克尔·沃特曼(Michael S. Waterman)于1981年提出。史密斯-沃特曼算法是尼德曼-翁施算法的一个变体,二者都是动态规划算法。这一算法的优势在于可以在给定的打分方法下找出两个序列的最优的局部比对(打分方法使用了置换矩阵和空位罚分)。该算法和尼德曼-翁施算法的主要区别在于该算法不存在负分(负分被替换为零),因此局部比对成为可能。回溯从分数最高的矩阵元素开始,直到遇到分数为零的元素停止。分数最高的局部比对结果在此过程中产生。在实际运用中,人们通常使用该算法的优化版本。

蛋白序列?核苷酸序列?没错,此算法也同样用于文本对比。

 Temple F. Smith

Michael S. Waterman 

五、 BWT(Burrows-Wheeler Transform 算法)

Burrows-Wheeler 算法,被广泛应用于数据压缩技术中,也可称作块排序压缩,简称 BWT. 1994 年,在加利福尼亚州帕洛阿尔托的 DEC 系统研究中心,Michael Burrows 和 David Wheeler 发明了该算法,故称之为Burrows-Wheeler算法。

压缩算法?没错,可用于文本比较!!!!

 Michael Burrows

 David Wheeler

 六、BLAST生物信息学算法

BLAST是一个被广泛使用于分析生物资讯的程式,因为它可以兼顾我们在做搜寻时的速度以及搜寻结果的精确度。因为当我们所要搜寻的目标数据库非常庞大的时候,速度就变成一项很需要考量的因素。在像BLAST和FASTA这些快速算法被开发之前,我们是使用动态规划算法来作数据库的序列搜寻,这真的非常的耗时。BLAST使用启发式搜索来找出相关的序列,在速度上比完全只使用动态规划大约快上50倍左右,不过它不像动态规划能够保证搜寻到的序列(Database sequence)和所要找的序列(Query sequence)之间的相关性,BLAST的工作就是尽可能找出数据库中和所要查询的序列相关的资讯而已,精确度稍微低一点。此外,BLAST比FASTA更快速,因为BLAST只对比较少出现或是较重要的一些关键字作更进一步的分析,而FASTA是考虑所有共同出现在所要搜寻的序列和目标序列的字。从下面介绍的算法可以更进一步的了解。


BLAST可以让研究者在其中寻找与其感兴趣的序列相同或类似的序列。 例如如果某种非人动物的一个以前未知的基因被发现,研究者一般会在人类基因组中做一个BLAST搜索来确认人类是否包含类似的基因(通过序列的相似性)。BLAST算法以及实现它的程序由美国国家生物技术信息中心(NCBI)的Eugene Myers、Stephen Altschul、Warren Gish、David

标签:Compare,文本,Wunsch,C#,BLAST,算法,序列,源代码,比较
From: https://blog.csdn.net/beijinghorn/article/details/125100335

相关文章

  • matinal:SAP FICO会计凭证如何实现自动拆分
    ......
  • GPT实战系列-LangChain的Prompt提示模版构建
    GPT实战系列-LangChain的Prompt提示模版构建LangChainGPT实战系列-LangChain如何构建基通义千问的多工具链GPT实战系列-构建多参数的自定义LangChain工具GPT实战系列-通过Basetool构建自定义LangChain工具方法GPT实战系列-一种构建LangChain自定义Tool工具的简单方法G......
  • 基于多种优化算法的物联网无人机基站研究【布谷鸟搜索CS、大象群体优化EHO、灰狼优化G
     ......
  • LT6911UXE PIN对PIN LT6911UXC HDMI桥接到MIPIDSI/CSI/2 PORT LVDS,支持标准的4K60HZ分
    LT6911UXE描述: LT6911UXE是一款高性能HDMI2.0到MIPIDSI/CSI转换器,可用于VR、智能手机和显示器应用。HDMI2.0输入支持高达6Gbps的数据速率,这为60Hz的视频提供了足够的带宽。同时,还支持HDCP2.3进行数据解密。对于MIPIDSI/CSI输出,LT6911UXE具有可配置的单端口或双端口MIPIDSI......
  • 【JavaScript编程实操10】1.实现一个函数,要求传递2个参数,返回两个参数的和 2.创建一个
    前言1、实现一个函数,要求传递2个参数,返回两个参数的和代码:实现效果:2、创建一个函数,传递两个参数,返回两个参数的相乘和相加的和代码:实现效果:总结前言    本次继续针对Javascript阶段的函数与对象相关方面的实操练习,共有2个实操,这两个实操具有相似性,只是一个......
  • C#在不区分大小写的情况下比较字符串是否相等
    string.Equals(varData_QCMH04.ST_NO.Trim(),tempSteelType,StringComparison.OrdinalIgnoreCase)publicvoidGetRemoteStandardToLocal(){try{//MyRegion读取数据库获取原始数据usingIDbConnectiondbConnection=newOracleConnection(st......
  • php站群程序24年苹果cms影视站泛目录站群源码模板权重神器
    php站群程序24年苹果cms影视站泛目录站群源码模板权重神器演示地址:http://fan.chinabic.com/程序简介:2024年新版,可以看截图2月28日蜘蛛统计1、基于苹果CMS二次开发,包苹果CMS基础功能。2、支持实际在线视频播放,增加泛目录功能,并且泛内页同时能正常播放视频内容。3、自......
  • HDFSRPC安全认证Kerberos篇推广
    本文主要阐述HDFSRPC安全认证相关的实现。主要介绍Kerberos相关的实现。写在前面相关blog可以先看一下https://segmentfault.com/a/1190000039085046?sort=newesthttps://blog.csdn.net/qq_35995514/article/details/106348765https://blog.csdn.net/S1124654/article/detail......
  • mongo page query based on conditions
    一、MongoTemplate中Aggregation应用使用Aggregation聚合查询支持返回固定字段支持分组计算(count)总数、(sum)求和、(avg)平均值、(max)最大值、(min)最小值等publicPage<Student>getListWithAggregation(StudentVOstudentVO){Sortsort=Sort.by(Sort.Directi......
  • CentOS7防火墙
    提示修改防火墙配置文件之前,需要对之前防火墙规则做好备份重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙拒绝firewalld服务管理显示服务的状态systemctlstatusfirewalld.service启动服务systemctlstartfirewal......