比较两段文本,找出差异
无论你是在校对修改后的文档、检查合同中的变更、比较两个版本的文章,还是验证复制粘贴是否准确,文本差异对比工具都能通过精确高亮显示变更内容来节省时间。将原始文本粘贴到第一个框中,新版本粘贴到第二个框中,差异会立即被标记出来。
词语级差异对比的原理
本工具使用最长公共子序列(LCS)算法——也就是 Unix 的 diff 命令和 git diff 背后的同一算法。它找到两段文本中按相同顺序出现的最长词语序列,然后将该序列之外的所有内容标记为新增或删除。
以红色删除线显示的词语在原文中存在但在新版本中不存在(已删除)。以绿色高亮显示的词语在新版本中存在但在原文中不存在(已新增)。未变更的词语以正常文本显示。
文本比较的常见用途
文档修订:当协作者返回修订后的文档时,快速查看到底哪些词语或句子发生了变化,无需通读两个版本。
合同审查:法律专业人士使用差异对比来跟踪合同版本之间的变更。"红线稿"或"标注稿"本质上就是应用于法律文本的差异对比。
学术校对:将初稿与修改稿进行比较,确认计划的编辑已正确完成且没有引入意外更改。
代码审查:虽然代码差异最好由 git diff 之类的工具(逐行操作)处理,但词语级差异对比在审查文档或注释时仍有帮助。
抄袭检查:将提交的文本与原文进行比较,以发现改写——保留相同含义但重新排列或替换了词语的情况。
翻译验证:将源文本与译本逐词比较以确保完整性(虽然由于自然语言的差异,这种比较是近似的)。
词语级差异对比的局限性
本工具在不理解语义的前提下比较词语。一个完全重写但含义相同的句子将被显示为完全删除和完全新增。要理解语义相似性,需要自然语言处理工具。
比较也不区分格式、大小写或词语内部的标点,除非它们是词元的一部分。"Hello"和"hello"被视为不同的词。
如何使用本工具
将原始文本粘贴到第一个框中,将修改后的版本粘贴到第二个框中,比较结果会立即显示在下方,删除内容以红色删除线标记,新增内容以绿色高亮标记。没有需要点击的触发按钮——它实时更新,你可以随时粘贴新版本并立即看到它与之前的差异。
为什么用词语级比较而非字符级
差异对比工具理论上可以逐字符比较而非逐词比较,但这种方法产生的结果在技术上准确但实际上毫无用处:修正一个长句中间的一个错别字会让句子中几乎整个后续部分都显示为已更改,因为纠正是之后的每个字符都位移了。而逐词比较意味着一个被修正的词只显示为一个删除和一个新增,句子中其他实际没有变化的内容则保留不变——这对试图理解到底编辑了什么的人来说是更有用的信息,也正是大多数真实编辑和校对任务所关心的粒度。
如何高效阅读差异对比结果
在审查一份长对比时,扫描颜色集中的区域比逐词阅读更有效:一小簇红色和绿色紧挨着通常意味着小幅改写,而一片连续的单一颜色则表示真正新增或删除的段落,而非编辑。熟练掌握这种模式扫描方法,是有经验的编辑和法律审查人员能够在几分钟内处理多页红线稿而非逐行重读整份文档的原因。
软件中的差异对比与散文中的差异对比
程序员始终在使用 git diff 这样的逐行差异对比工具,值得理解的是,像本工具这样的词语级差异对比是一个不同的、互补的工具而非替代品。源代码天然组织为离散的行,因此逐行比较是正确的粒度——变更的一行就是一个变更的逻辑单元。散文没有这样的天然行边界;一个句子可能根据窗口宽度跨越多行,有意义的变更单元是词语或短语,而非行在哪里断开。这就是为什么比较散文需要词语级方法而非复用面向代码的逐行差异对比工具。
比较翻译草稿
双语编辑和翻译人员有时会使用词语级差异对比来比较同一源文本的两个翻译版本——例如,人工翻译稿和机器翻译版本,或者同一段落的两次连续修订——以快速准确地发现用词选择的分歧,而不需要重新通读整段文字去寻找差异。
重要使用前的快速验证
在将差异对比结果用于重要用途之前——一份法律文件、一次评分作业——先在两个框中粘贴一个小的已知变更,确认工具准确无误地高亮了该变更,就像你会在使用新的厨房秤之前用已知重量测试它一样。
隐私与即时性
所有比较完全在你的浏览器中使用最长公共子序列算法运行,结果即时出现,你粘贴的任何文本都不会被发送到任何服务器、记录或共享。
Text diff FAQ
- How does the diff work?
- The tool compares the two texts word by word. Words present in B but not in A are shown in green (added). Words in A but not in B are shown in red (removed).
- Is this a real diff like git diff?
- This is a simple word-level diff for quick comparison. For character-level or line-level diffs as used in programming, dedicated tools like git diff or diff(1) are more appropriate.
- Is my text stored?
- No. The comparison runs entirely in your browser. Nothing is sent to any server.