跳转到主要内容

检测文本中的重复区域

项目描述

Duplicate Text Finder

duptextfinder 是一个用于检测文本中重复区域的Python库。主要用于检测医疗文件中的复制粘贴。应该比Python内置的 difflib 算法更快,并且对空格、换行和其他无关字符更健壮。

安装

可以通过pip安装 duptextfinder

pip install duptextfinder

用法

from pathlib import Path
from duptextfinder import CharFingerprintBuilder, DuplicateFinder

# load some text files
texts = [p.read_text() for p in Path("some/dir").glob("*.txt")]

# init fingerprint and duplicate finder
fingerprintBuilder = CharFingerprintBuilder(fingerprintLength=15)
duplicateFinder = DuplicateFinder(fingerprintBuilder, minDuplicateLength=15)

# call findDuplicates() on each file
for i, text in enumerate(texts):
    id = f"D{i}"
    duplicates = duplicateFinder.findDuplicates(id, text)
    for duplicate in duplicates:
        print(
            f"sourceDoc={duplicate.sourceDocId}, "
            f"sourceStart={duplicate.sourceSpan.start}, "
            f"sourceEnd={duplicate.sourceSpan.end}, "
            f"targetStart={duplicate.targetSpan.start}, "
            f"targetEnd={duplicate.targetSpan.end}"
        )
        duplicated_text = text[duplicate.targetSpan.start : duplicate.targetSpan.end]
        print(duplicated_text)

WordFingerprintBuilder 可以代替 CharFingerprintBuilder。有关更多详细信息,请参阅 DuplicateFinderCharFingerprintBuilderWordFingerprintBuilder 的docstrings。

如何运行测试

  1. 在仓库目录中运行 pip install -e ".[tests, ncls, intervaltree]" 以可编辑模式安装带有测试和额外依赖项的包
  2. 启动 pytest tests/

关于ncls和intervaltree

此工具可以在不使用任何额外依赖项的情况下使用,但使用区间树时性能可以得到提高。为了从中受益,您需要安装ncls包或intervaltree包。

参考文献

项目详情


下载文件

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

源分布

duptextfinder-0.3.0.tar.gz (19.4 kB 查看哈希值)

上传时间 源代码

构建分布

duptextfinder-0.3.0-py3-none-any.whl (17.2 kB 查看哈希值)

上传时间 Python 3

由以下组织支持