CN105824792A - 文本比对方法和设备 - Google Patents
文本比对方法和设备 Download PDFInfo
- Publication number
- CN105824792A CN105824792A CN201610155089.8A CN201610155089A CN105824792A CN 105824792 A CN105824792 A CN 105824792A CN 201610155089 A CN201610155089 A CN 201610155089A CN 105824792 A CN105824792 A CN 105824792A
- Authority
- CN
- China
- Prior art keywords
- difference
- text
- storehouse
- differences
- acceptable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文本比对方法,包括:将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;确定所述一个或多个差异在差异库中存在;以及基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。本申请还公开了一种文本比对设备。
Description
技术领域
本发明涉及文本比对方法和设备。
背景技术
目前在文本比对领域,已经提出并公示的算法和软件很多。大多数文本比对工具都使用谷歌google-diff-match-patch开源类库来实现核心的比对功能,包括但不限于BeyongCompare、TextDiff等。谷歌diff-match-patch开源库是一个相当优秀的文本比对、匹配和更改方法集,能提供较高的易用性及准确性,其关键数据结构由一个包含删除、插入、相等三种操作方式(DELETE,INSERT,EQUAL)的枚举类型以及一个<OPERATION,TEXT>形式的差异对象(DiffObject)组成。其差异表达采用含有差异对象的链表实现,
但随着业务的不断发展、技术的不断更新,企业均都面临着海量的应用配置文件需要管理。当文件出现差异时,如何快速准确地定位差异所在,有效地管理差异,成为各企业面临并急需并解决的问题。特别地,当需要对差异进行监控,对非预期的差异进行预警时,由于谷歌google-diff-match-patch开源类库没有对单个差异进行区分,即没有考虑可接受差异和非预期差异,因此无法有效地管理差异。
发明内容
为解决上述问题,根据本发明的一个方面,提供了一种文本比对方法,包括:将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;确定所述一个或多个差异在差异库中存在;以及基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。
在上述方法中,通过如下方式来预先建立所述差异库:对文本之间可能存在的差异进行人为分类,划分出可接受的差异;以及将可接受的差异以特定的数据结构进行存储,从而形成差异库。
上述方法还可包括:向用户展示经过滤之后的一个或多个差异,该经过滤之后的一个或多个差异为非预期的。
在上述方法中,所述特定的数据结构包括5个枚举类的变量,分别为DELETE、INSERT、EQUAL、eDELETE以及eINSERT,其中,所述DELETE表示“不被接受的删除”,所述INSERT表示“不被接受的插入”,所述EQUAL表示“保持不变”,所述eDELETE表示“可接受的删除”以及所述eINSERT表示“可接受的插入”。
在上述方法中,确定所述一个或多个差异在差异库中存在包括:判断所述第一文本与所述第二文本的路径和文件名与所述差异库中的文件的路径和文件名一致。
在上述方法中,基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤包括:从所述差异库中取出所有存储的差异集合DiffList;将所述差异集合DiffList中的eDELETE以及eINSERT分别替换为DELETE以及INSERT;分别读取所述第一文本与所述第二文本之间的一个或多个差异、替换后的差异集合,并将其中不重复的操作步骤分别用不重复字串进行表示而将相同的操作步骤用相同的字串表示,得到第一字串和第二字串;以及使用Google-Diff算法,将所述第一字串与所述第二字串进行对比。
根据本申请的另一个方面,提供了一种文本比对设备,包括:第一单元,用于将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;第二单元,用于确定所述一个或多个差异在差异库中存在;以及第三单元,用于基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。
本申请着眼于现有技术中存在的问题,创造性地提出差异库的概念,并在此基础上构建出适用于差异库的差异模型,同时结合谷歌开源类库google-diff-match-patch,实现了一种具有广泛使用价值的应用配置文件比对方法。该方法可以高效地对所有差异进行识别,并快速区分可接受差异与非预期差异,很好地满足文件管理的各项需求(文件快速比对、文件智能修改、文件差异监控及预警、文件自动生成等功能),最大程度地减少人为误差,增强了文件管理的可靠性。通过对差异库的实时获取、更新及调用,并以此为据可以迅速定位和管理不同环境特征下的文件差异,有效降低了重复劳动量,节约了人力及时间成本。
附图说明
在参照附图阅读了本发明的具体实施方式以后,本领域技术人员将会更清楚地了解本发明的各个方面。本领域技术人员应当理解的是:这些附图仅仅用于配合具体实施方式说明本发明的技术方案,而并非意在对本发明的保护范围构成限制。
图1是根据本申请的一个实施例的文本对比方法的示意图。
具体实施方式
下面介绍的是本发明的多个可能实施例中的一些,旨在提供对本发明的基本了解,并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。容易理解,根据本发明的技术方案,在不变更本发明的实质精神下,本领域的一般技术人员可以提出可相互替换的其它实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
图1是根据本申请的一个实施例的文本对比方法的示意图。在执行图1所示的文本对比方法之前,需要由用户建立差异库。具体来说,由用户发起比对,该比对例如可通过现有的比对软件或开源库、如谷歌google-diff-match-patch开源类库来实现。在比对后,将这些差异以一定的数据模型进行存储,通过用户对比对后的差异进行确认后,差异可以分为可接受的差异和非预期差异两种类型,并进入差异库。
在如图1所示,两个文件再次触发比对时,本申请的方法会先去差异库中查找是否存在记录,如果存在则结合差异库“过滤”差异,最终展现给用户的将是用户需要关心的差异。
在一个实施例中,本申请的文本比对方法包括:将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;确定所述一个或多个差异在差异库中存在;以及基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。
上述文本比对方法还可包括:向用户展示经过滤之后的一个或多个差异,该经过滤之后的一个或多个差异为非预期的。
在一个实施例中,两段文本的比对可以规约为两组字符串的比较,定义文本差异为从第一组字符串变成第二组字符串所需要的最少的步骤,每个步骤只能做“保持不变”、“插入”或者“删除”操作,倘若用的是替换操作,则采用先“删除”后“插入”的方式处理。定义如下数据结构(以JAVA代码为例):
//包含三种操作方式的枚举类型
publicenumOperation{
DELETE,INSERT,EQUAL
}
//Diff对象构造函数
//参数operation:三种操作方式的一种;
//参数text:实际比对的文本;
publicDiff(Operationoperation,Stringtext){
//Constructadiffwiththespecifiedoperationandtext.
this.operation=operation;
this.text=text;
}
假设有两段文本“123456789”和“012356889”并希望输出他们的“差异”,则可以按照如下方法进行调用并输出结果集。
diff_match_patchdmp=newdiff_match_patch();
List<Diff>list=dmp.diff_main("123456789","012356889");
System.out.println(list);
结果如下:
如之前所述,由于谷歌google-diff-match-patch开源类库与其他常见比对算法一样,在进行文本对比后仅仅提供比对及结果的表达,没有对单个差异进行区分,即没有考虑可接受差异和非预期差异,无法进行差异管理。
在一个实施例中,本申请的比对方法包括在现有已经定义的枚举类中添加了两个变量,最终的结果如下:
PublicenumOperation{
DELETE,INSERT,EQUAL,eDELETE,eINSERT
}
其中eDELETE和eINSERT是用来记录两个文本比对后的结果中,哪些操作步骤是可以接受,而原先的DELETE和INSERT则表示不被接受或者非预期的操作步骤。
例如,同样采用“123456789”和“012356889”两段文本,如果我们认为开头的0有没有都是可以接受的,并且同样认为前一段文本中的7就应该对应后一段文本中的8,那结果集可以表示如下:
这样,当在差异库中找到一条差异记录后,就可以快速定位出其中哪些差异是可接受差异,哪些差异是非预期差异。
就差异库而言,一种可考虑的实现方式是通过人工做第一次判断,将可以接受的差异以上述数据结构将比对后的结果集继续存储从而形成差异库。
在一个实施例中,当再次拿A‘和B(或者A和B’、A’和B’)进行比对时,可以充分利用差异库中已经被确认过的可接受差异,将最新比对后的结果集进行分类。
例如,拥有两个比对结果集DiffList1和DiffList2,其中DiffList1是最新的比对结果,而DiffList2是从差异库中取出的结果,DiffList2中所有差异都被确认均是可接受差异(如果其中存在不可接受差异,那么人们一定会通过修改更新,最终会把所有差异都确认是可以接受的)。
接着,可将DiffList2进行“去e”处理,也就是将其中所有Diff中的eDELETE和eINSERT均都替换成DELETE和INSERT。
然后,读取分别读取DiffList1和DiffList2,将其中不重复的操作分别用不重复字串进行表示,并将相同的操作步骤用相同的字串表示,最终对应的字串Str1和Str2。
比如
L1:
L2:
最终Str1和Str2分别为
Str1=1,2,3,4,5,6,7,
Str2=1,2,8,4,5,6,7
这时,只需再次使用常规文本比对方法如Google-Diff算法,就可以很容易的得出非预期的差异。
在一个实施例中,在确认两个文件A和文件B其是否在差异库中有记录时,可借鉴文件管理的思想,即:只要文件A和B的路径和文件名和差异库中的文件A‘和文件B(或者A和B’、A’和B’)的路径和文件名均一致,那么我们就认为其在差异库中有记录。
在一个实施例中,差异的展示需要读取生成的结果集,采用网页形式显示全部文本,对差异进行色彩突出显示,两侧匹配,差异内容由页面上方的索引快速定位。
本申请的文本比对方法在一个实施例中可考虑通过计算机程序来实现,编程语言包括但不限于Java、C以及C++。
综上,通过使用本申请的技术方案,可以极大地减少企业对海量文本文件的管理成本和维护成本。另外,由于提出差异库的概念,使得对传统文本比对后结果的处理具有了理论基础和前提。本申请的以差异数据库为基础的文件比对方法可以最大程度地减少人为误差,增强了文件管理的可靠性,更好地满足文件管理的各项需求(文件快速比对、文件智能修改、文件自动生成等功能)。通过对差异库的实时获取、更新及调用,以此为据可以迅速定位不同环境特征下的文件差异,有效降低了重复劳动量,节约了人力及时间成本。本申请的技术方案还实现对固有差异的监控,当发现非预期的差异时能够快速预警,生产应急方案。
上文中,参照附图描述了本发明的具体实施方式。但是,本领域中的普通技术人员能够理解,在不偏离本发明的精神和范围的情况下,还可以对本发明的具体实施方式作各种变更和替换。这些变更和替换都落在本发明权利要求书所限定的范围内。
Claims (7)
1.一种文本比对方法,所述方法包括:
将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;
确定所述一个或多个差异在差异库中存在;以及
基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,
其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。
2.如权利要求1所述的方法,其中,通过如下方式来预先建立所述差异库:
对文本之间可能存在的差异进行人为分类,划分出可接受的差异;以及
将可接受的差异以特定的数据结构进行存储,从而形成差异库。
3.如权利要求1所述的方法,还包括:
向用户展示经过滤之后的一个或多个差异,该经过滤之后的一个或多个差异为非预期的。
4.如权利要求2所述的方法,其中,所述特定的数据结构包括5个枚举类的变量,分别为DELETE、INSERT、EQUAL、eDELETE以及eINSERT,
其中,所述DELETE表示“不被接受的删除”,所述INSERT表示“不被接受的插入”,所述EQUAL表示“保持不变”,所述eDELETE表示“可接受的删除”以及所述eINSERT表示“可接受的插入”。
5.如权利要求1所述的方法,其中,确定所述一个或多个差异在差异库中存在包括:
判断所述第一文本与所述第二文本的路径和文件名与所述差异库中的文件的路径和文件名一致。
6.如权利要求4所述的方法,其中,基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤包括:
从所述差异库中取出所有存储的差异集合DiffList;
将所述差异集合DiffList中的eDELETE以及eINSERT分别替换为DELETE以及INSERT;
分别读取所述第一文本与所述第二文本之间的一个或多个差异、替换后的差异集合,并将其中不重复的操作步骤分别用不重复字串进行表示而将相同的操作步骤用相同的字串表示,得到第一字串和第二字串;以及
使用Google-Diff算法,将所述第一字串与所述第二字串进行对比。
7.一种文本比对设备,包括:
第一单元,用于将第一文本与第二文本进行比对,从而获得所述第一文本与所述第二文本之间的一个或多个差异;
第二单元,用于确定所述一个或多个差异在差异库中存在;以及
第三单元,用于基于所述差异库,将所述一个或多个差异中的部分或全部差异过滤,
其中,所述差异库为预先建立的数据库,其配置成存储可接受的差异。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610155089.8A CN105824792B (zh) | 2016-03-18 | 2016-03-18 | 文本比对方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610155089.8A CN105824792B (zh) | 2016-03-18 | 2016-03-18 | 文本比对方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824792A true CN105824792A (zh) | 2016-08-03 |
CN105824792B CN105824792B (zh) | 2018-09-21 |
Family
ID=56523963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610155089.8A Active CN105824792B (zh) | 2016-03-18 | 2016-03-18 | 文本比对方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824792B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463541A (zh) * | 2017-07-31 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 文件差异比较方法、存储介质、电子设备及系统 |
CN109740124A (zh) * | 2018-12-25 | 2019-05-10 | 东软集团股份有限公司 | 文档比较的差异输出方法、装置、存储介质及电子设备 |
CN110263305A (zh) * | 2019-05-22 | 2019-09-20 | 中国平安财产保险股份有限公司 | 配置文件对比方法、装置、设备及存储介质 |
WO2020000806A1 (zh) * | 2018-06-28 | 2020-01-02 | 平安科技(深圳)有限公司 | 一种配置文件比对方法和配置文件比对装置 |
CN110688889A (zh) * | 2019-08-06 | 2020-01-14 | 珠海格力电器股份有限公司 | 一种图文内容比对方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261040A (en) * | 1986-07-11 | 1993-11-09 | Canon Kabushiki Kaisha | Text processing apparatus |
US20030145278A1 (en) * | 2002-01-22 | 2003-07-31 | Nielsen Andrew S. | Method and system for comparing structured documents |
CA2734207A1 (en) * | 2010-03-15 | 2011-09-15 | Accenture Global Services Limited | Electronic file comparator |
CN103309847A (zh) * | 2012-03-06 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 一种用于实现文件比较的方法与设备 |
-
2016
- 2016-03-18 CN CN201610155089.8A patent/CN105824792B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261040A (en) * | 1986-07-11 | 1993-11-09 | Canon Kabushiki Kaisha | Text processing apparatus |
US20030145278A1 (en) * | 2002-01-22 | 2003-07-31 | Nielsen Andrew S. | Method and system for comparing structured documents |
CA2734207A1 (en) * | 2010-03-15 | 2011-09-15 | Accenture Global Services Limited | Electronic file comparator |
CN103309847A (zh) * | 2012-03-06 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 一种用于实现文件比较的方法与设备 |
Non-Patent Citations (2)
Title |
---|
QIUGUO0205: ""使用google-diff-match-patch比较文件"", 《HTTP://QIUGUO0205.ITEYE.COM/BLOG/1127601》 * |
无: ""Define Unimportant Text in Beyond Compare"", 《HTTP://WWW.SCOOTERSOFTWARE.COM/SUPPORT.PHP?ZZ=KB_UNIMPORTANTV3》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463541A (zh) * | 2017-07-31 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 文件差异比较方法、存储介质、电子设备及系统 |
WO2020000806A1 (zh) * | 2018-06-28 | 2020-01-02 | 平安科技(深圳)有限公司 | 一种配置文件比对方法和配置文件比对装置 |
CN109740124A (zh) * | 2018-12-25 | 2019-05-10 | 东软集团股份有限公司 | 文档比较的差异输出方法、装置、存储介质及电子设备 |
CN110263305A (zh) * | 2019-05-22 | 2019-09-20 | 中国平安财产保险股份有限公司 | 配置文件对比方法、装置、设备及存储介质 |
CN110263305B (zh) * | 2019-05-22 | 2023-09-19 | 中国平安财产保险股份有限公司 | 配置文件对比方法、装置、设备及存储介质 |
CN110688889A (zh) * | 2019-08-06 | 2020-01-14 | 珠海格力电器股份有限公司 | 一种图文内容比对方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105824792B (zh) | 2018-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824792A (zh) | 文本比对方法和设备 | |
CN107688748B (zh) | 基于漏洞指纹的脆弱性代码克隆检测方法及其装置 | |
US9298941B2 (en) | Secure data copying | |
EP2610765B1 (en) | Systems and methods for migrating database data | |
CN102067106B (zh) | 通过确定子节点和父节点的度量值进行的数据质量跟踪 | |
CN107657049B (zh) | 一种基于数据仓库的数据处理方法 | |
CN109871373B (zh) | 一种数据存储方法和装置、计算机可读存储介质 | |
JP5064510B2 (ja) | デジタル文書を管理するコンピュータベースツール | |
CN110287192B (zh) | 搜索应用数据处理方法、装置、计算机设备和存储介质 | |
CN105205053A (zh) | 一种数据库增量日志解析方法及系统 | |
CN103514166A (zh) | Sql检查方法与装置 | |
US20160283584A1 (en) | Grouping of Database Objects | |
US20210334292A1 (en) | System and method for reconciliation of data in multiple systems using permutation matching | |
CN112463774B (zh) | 文本数据的去重方法、设备及存储介质 | |
CN107203574A (zh) | 数据管理和数据分析的聚合 | |
CN106445529A (zh) | 持续集成服务器的配置信息的备份方法及系统 | |
CN107291926A (zh) | 一种binlog分析方法 | |
CN105183949B (zh) | 一种铁路主数据的清洗方法 | |
Rost et al. | Temporal graph analysis using gradoop | |
CN115543402A (zh) | 一种基于代码提交的软件知识图谱增量更新方法 | |
CN107451177B (zh) | 针对增加区块的单个勘误的区块链的查询方法及系统 | |
CN109656929B (zh) | 一种雕复关系型数据库文件的方法及装置 | |
CN110879799A (zh) | 管理技术元数据的方法和装置 | |
CN111190880A (zh) | 一种数据库检测方法、装置和计算机可读存储介质 | |
US8069148B2 (en) | Configuration of multiple database audits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |