文本比较算法Ⅷ——再议Nakatsu算法

简介:

研究文本比较算法已经一段时间了。把思路重新理了理。

  在“文本比较算法Ⅳ——Nakatsu算法”中提到“对角线上的数字就是最长公共子序列的下标”。

  在“文本比较算法Ⅶ——线性空间求最长公共子序列的Nakatsu算法”中提到“每行最左边不为V的数字就是最长公共子序列的下标”。

  以上两个结论,网友Sumtec都提出了质疑,并提出了反例。经过本人的验算,Sumtec是正确的,我的文章有问题。

  不过,不能说Nakatsu算法有问题。在“文本比较算法Ⅶ——线性空间求最长公共子序列的Nakatsu算法”中的前半部分详细阐述了Nakatsu算法的计算过程,这个是没有问题的。只是本人急于将其优化成线性空间,而忽视了证明,故而得出了错误的结论。

 

  为何执着于Nakatsu算法?还是有原因的。

 

  文本比较算法的核心是什么?是为了求出两个文本的最佳匹配

  何为两个文本的最佳匹配?匹配是两个文本的对应关系,它包含了相同的部分,包含了相异的部分(增加、删除、修改)。对于两个文本来说,匹配不是唯一的。那最佳匹配就是包含了最多的相同部分(最长公共子序列),同时长度又是最短的。

  例如:

  A:GGATCGA

  B:GAATTCAGTTA

  最佳匹配为

    A:GGA_TC_G__A

    B:GAATTCAGTTA

    (蓝色部分表示相同部分,黑色表示相异部分,下同)

 

  又例如:

  A:481234781

  B:4411327431

  最佳匹配为:

    A:48123478_1

    B:4411327431  

 

  在研究一系列的LD算法和LCS算法后发现,LD算法侧重于相异部分,LCS算法侧重于相同部分

  故曾经有个推论“两文本A、B的最佳匹配长度为LD(A,B)+LCS(A,B)的值

 

  很不幸,这个结论又是错的。给个反例

  A:11111112

  B:23333333

  LD(A,B)=8;LCS(A,B)=1

  最佳匹配为:

    A:11111112_______

    B:_______23333333

  最佳匹配的长度为15≠8+1

 

  故两个文本的相似度的计算公式应该为LCS(A,B)/MATCH(A,B)。MATCH(A,B)表示最佳匹配的长度。

 

  如果只是为了计算一个最长公共子序列。那么在“文本比较算法Ⅵ——用线性空间计算最大公共子序列(翻译贴)”中的Hirschberg算法就能很好的解决这个问题。但是要注意的是,不是每个最长公共子序列都能求出最佳匹配的。因此,Hirschberg算法对于求最佳匹配无能为力。

 

  我现在对于求最佳匹配的思路就是求出每一个最长公共子序列,依次算出各自的匹配,从中找到最佳匹配。

 

  我想,这个时候,Nakatsu算法派上用处了。可以知道,当最长公共子序列的长度为P时,Nakatsu算法占用的空间为P(m-P),是个二次空间,且知道当P为m/2时,占用空间最大,为m2/4。但好处是能遍历到所有的最长公共子序列(没有证明)。且每组解的值是指向B的下标,每组解的横坐标指向A的下标,又省去了计算匹配的时间。

  

  有谁能给出计算最佳匹配的建设性意见吗?


    本文转自万仓一黍博客园博客,原文链接:http://www.cnblogs.com/grenet/archive/2011/03/15/1984927.html,如需转载请自行联系原作者

相关文章
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
619 1
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
368 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
机器学习/深度学习 自然语言处理 算法
解读未知:文本识别算法的突破与实际应用
解读未知:文本识别算法的突破与实际应用
解读未知:文本识别算法的突破与实际应用
|
机器学习/深度学习 数据采集 算法
Python基于KMeans算法进行文本聚类项目实战
Python基于KMeans算法进行文本聚类项目实战
|
数据采集 自然语言处理 数据可视化
基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现
本文介绍了基于Python的社交媒体评论数据挖掘方法,使用LDA主题分析、文本聚类算法和情感分析技术,对数据进行深入分析和可视化,以揭示文本数据中的潜在主题、模式和情感倾向。
1858 0
|
文字识别 算法 Java
文本,保存图片09,一个可以用id作为图片名字的pom插件,利用雪花算法生成唯一的id
文本,保存图片09,一个可以用id作为图片名字的pom插件,利用雪花算法生成唯一的id
|
算法 数据可视化 搜索推荐
基于python的k-means聚类分析算法,对文本、数据等进行聚类,有轮廓系数和手肘法检验
本文详细介绍了基于Python实现的k-means聚类分析算法,包括数据准备、预处理、标准化、聚类数目确定、聚类分析、降维可视化以及结果输出的完整流程,并应用该算法对文本数据进行聚类分析,展示了轮廓系数法和手肘法检验确定最佳聚类数目的方法。
599 0
|
算法 JavaScript
「AIGC算法」将word文档转换为纯文本
使用Node.js模块`mammoth`和`html-to-text`,该代码示例演示了如何将Word文档(.docx格式)转换为纯文本以适应AIGC的文本识别。流程包括将Word文档转化为HTML,然后进一步转换为纯文本,进行格式调整,并输出到控制台。转换过程中考虑了错误处理。提供的代码片段展示了具体的实现细节,包括关键库的导入和转换函数的调用。
337 0
|
文字识别 算法 Shell
突破边界:文本检测算法的革新与应用前景
突破边界:文本检测算法的革新与应用前景
突破边界:文本检测算法的革新与应用前景
|
人工智能 自然语言处理 算法
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索

热门文章

最新文章