跳转到主要内容

维基百科(简单)的编辑差异和类型检测

项目描述

mwsimpleedittypes

编辑差异和类型检测用于维基百科(简单)。目标是将维基百科文章的非结构化编辑转换为编辑中所采取操作的结构化摘要。这是 mwedittypes 的简化版本,后者是该库的结构化版本,可以检测内容移动和更直接地识别编辑类型。它们通常具有非常高的对齐度,但此库几乎快10倍,并且内存占用更小。

安装

您可以使用 pip 安装 mwsimpleedittypes

$ pip install mwsimpleedittypes

示例

如果某个维基文本的某个版本如下

{{Short description|Austrian painter}}
'''Karl Josef Aigen''' (8 October 1684 – 22 October 1762) was a landscape painter, born at Olomouc.

另一个维基文本的第二个版本如下

{{Short description|Austrian landscape painter}}
'''Karl Josef Aigen''' (8 October 1684 – 22 October 1762) was a landscape painter, born at [[Olomouc]].

发生的更改如下

  • landscape 添加到简短描述模板中--这将注册为模板更改。
  • Olomouc 改为维基链接。
  • 值得注意的是,尽管模板的更改和链接的添加,但文章的“文本”没有变化。

此存储库将返回以下结构: {'Template':{'change':1}, 'Wikilink':{'insert':1}

基本用法

>>> from mwsimpleedittypes import EditTypes
>>> prev_wikitext = '{{Short description|Austrian painter}}'
>>> curr_wikitext = '{{Short description|Austrian [[landscape painter]]}}'
>>> et = EditTypes(prev_wikitext, curr_wikitext, lang='en', timeout=5)
>>> et.get_diff()
{'Wikilink': {'insert': 1}, 'Template': {'change': 1}}

开发

我们很高兴接受贡献,但默认情况下会保持这里的代码相对通用(不会过度定制以适应个别用例)。请与我们联系或为想要合并的更改打开一个问题,以便我们事先进行讨论。

代码摘要

计算差异和运行编辑类型检测的代码可以在一个文件中找到 mwsimpleedittypes/differ.py

库的大部分代码将维基文本文档解析为一组节点(模板、维基链接等)。这几乎全部是通过惊人的mwparserfromhell库实现的,并做了一些调整。

  • 我们使用链接命名空间前缀,例如 Category:、Image:,来区分类别和媒体以及其他维基链接。
  • 我们还识别了一些通过模板(例如,信息框)或画廊标签内嵌的附加媒体文件。
  • 我们还添加了一些自定义逻辑来解析 <gallery> 标签,以识别嵌套链接等,否则这些会被 mwparserfromhell 当作文本处理。
  • 我们使用自定义逻辑将维基文本转换为文本,以最佳匹配文章文本中出现的单词。

差异组件简单地通过取每个维基文本文档关联节点的对称差来识别发生了什么变化。

为了准确且高效地描述编辑中文本变化的规模,我们还使用了一些正则表达式和启发式方法来描述在节点差异中更改了多少文本。这通常是差异文本中最困难的部分,但由于我们不需要视觉描述差异,只需估计更改的规模,因此我们可以使用相对简单的方法。为此,我们将文本更改分解为五个类别,并确定每个类别的更改量:段落、句子、单词、标点和空白。

测试

差异的测试包含在 tests 目录中。可以通过 pytest 运行它们。由于存在许多节点类型(模板、文本等)和四个操作(插入/删除/更改/移动),以及例如文本或类别/媒体节点的不同语言,我们还没有达到全面覆盖,但我们正在努力扩大覆盖范围。

文档

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

mwsimpleedittypes-1.2.5.tar.gz (21.5 kB 查看哈希)

上传时间

构建分发

mwsimpleedittypes-1.2.5-py3-none-any.whl (20.8 kB 查看哈希)

上传时间 Python 3

由以下支持