gpt4 book ai didi

java - 维基百科用于其版本比较功能的算法是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:55 24 4
gpt4 key购买 nike

我目前正在实现某种文本版本(修订)比较可视化,并试图找到一些有关维基百科如何实现其“查看历史记录”功能的信息,在该功能中,他们允许将当前修订与旧版本进行比较。

您可以在此处找到一个示例(关于 stackoverflow!):

http://en.wikipedia.org/w/index.php?title=Stack_Overflow&diff=512241244&oldid=458578615

到目前为止,我已经实现了几个想法,并且还尝试重现维基百科的做法。为此,我实现了 Levenshtein 距离算法 ( http://en.wikipedia.org/wiki/Levenshtein_distance )。

假设我有两个列表。我正在遍历第一个列表,如果找到的字符串超过 50% 相等,则检查第二个列表中第一个列表的索引位置。如果是,我将在比较 View 中并排打印两个字符串,然后继续第一个列表的下一项。如果不是,我会检查第二个列表中的下一个项目,直到找到它,或者如果找不到,则将第二个列表的字段留空。 (虽然我基本上更喜欢第二个列表中的一个句子也总是出现在比较 View 中而不是将其遗漏,例如第一个列表字段有一个空白字段)

这种方法有一些缺点。起初,如果某个句子被删除,我需要检查索引周围的位置,而不是简单地“忘记”它。但我仍然需要注意,如果我这样做,文本位置不会倒置。

你们中有人尝试过用 java 实现类似的东西吗?如果有一些代码示例是其他人或您如何实现的,我很乐意看一看以从中学习。

当然,如果您了解维基百科(以及我假设的一般维基?)用于修订比较的算法,我将很高兴听到。

非常感谢

最佳答案

Wikipedia 解释了 wiki 差异引擎的工作原理 - http://en.wikipedia.org/wiki/Help:Diff

您可以点击页面底部的链接了解更多信息,但是 this page列出使用的模板。

关于java - 维基百科用于其版本比较功能的算法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com