检测文本中的重复区域
项目描述
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
。有关更多详细信息,请参阅 DuplicateFinder
、CharFingerprintBuilder
和 WordFingerprintBuilder
的docstrings。
如何运行测试
- 在仓库目录中运行
pip install -e ".[tests, ncls, intervaltree]"
以可编辑模式安装带有测试和额外依赖项的包 - 启动
pytest tests/
关于ncls和intervaltree
此工具可以在不使用任何额外依赖项的情况下使用,但使用区间树时性能可以得到提高。为了从中受益,您需要安装ncls包或intervaltree包。
参考文献
- Evaluating the Impact of Text Duplications on a Corpus of More than 600,000 Clinical Narratives in a French Hospital. https://www.hal.inserm.fr/hal-02265124/
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
duptextfinder-0.3.0.tar.gz (19.4 kB 查看哈希值)
构建分布
duptextfinder-0.3.0-py3-none-any.whl (17.2 kB 查看哈希值)
关闭
duptextfinder-0.3.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8ff3f3128bdc56157b2d09778e9ca2d73b093fea5419947418c07f83eaba08e |
|
MD5 | d4e1d32863bedf4450d62748fed6fa7f |
|
BLAKE2b-256 | 67668796a3b0156aa70584e768bd66002a219eec868c215b9c83a90e28d26c5b |
关闭
duptextfinder-0.3.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b23072f5839a71240c43e288902024ee09a4491a64eb102619e4028f0253e37d |
|
MD5 | 5fc4d746e4823e999cc8052541f37e4e |
|
BLAKE2b-256 | c650c45b26f67e3301efeb9cfd11b7509f18c794439cbfffe250392380f11e1d |