文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

DocumentCleaner

使用DocumentCleaner 用于使文本文档更具可读性。它按以下顺序删除多余的空格、空行、指定的子字符串、正则表达式、页眉和页脚。这对于为 LLM 进行进一步处理准备文档很有用。

pipeline 中的最常见位置在索引管道中,位于 转换器 之后,DocumentSplitter 之后
强制运行变量"documents": 文档列表
输出变量"documents": 文档列表
API 参考PreProcessors (预处理器)
GitHub 链接https://github.com/deepset-ai/haystack/blob/main/haystack/components/preprocessors/document_cleaner.py

概述

DocumentCleaner 期望输入为文档列表,并返回文本经过清理的文档列表。每个输入文档的可选清理步骤包括remove_empty_lines, remove_extra_whitespaces 以及remove_repeated_substrings。这三个参数是布尔值,可以在组件初始化时设置。

  • unicode_normalization 将 Unicode 字符标准化为标准形式。该参数可设置为 NFC、NFKC、NFD 或 NFKD。
  • ascii_only 删除字符上的重音符号,并用最接近的 ASCII 等效字符替换它们。
  • remove_empty_lines 从文档中删除空行。
  • remove_extra_whitespaces 从文档中删除多余的空格。
  • remove_repeated_substrings 从文档中的页面删除重复的子字符串(页眉/页脚)。文本中的页面需要用换页符 "\f" 分隔,该换页符受 TextFileToDocumentAzureOCRDocumentConverter 支持。

此外,您还可以指定一个字符串列表,在清理过程中将这些字符串从所有文档中删除,使用参数remove_substring。您还可以使用参数指定一个正则表达式remove_regex,并将删除所有匹配项。

清理步骤按以下顺序执行

  1. unicode_normalization
  2. ascii_only
  3. remove_extra_whitespaces
  4. remove_empty_lines
  5. remove_substrings
  6. remove_regex
  7. remove_repeated_substrings

用法

单独使用

您可以将其用于管道外部,以清理您的文档

from haystack import Document
from haystack.components.preprocessors import DocumentCleaner

doc = Document(content="This   is  a  document  to  clean\n\n\nsubstring to remove")

cleaner = DocumentCleaner(remove_substrings = ["substring to remove"])
result = cleaner.run(documents=[doc])

assert result["documents"][0].content == "This is a document to clean "

在 pipeline 中

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.converters import TextFileToDocument
from haystack.components.preprocessors import DocumentCleaner
from haystack.components.preprocessors import DocumentSplitter
from haystack.components.writers import DocumentWriter

document_store = InMemoryDocumentStore()
p = Pipeline()
p.add_component(instance=TextFileToDocument(), name="text_file_converter")
p.add_component(instance=DocumentCleaner(), name="cleaner")
p.add_component(instance=DocumentSplitter(split_by="sentence", split_length=1), name="splitter")
p.add_component(instance=DocumentWriter(document_store=document_store), name="writer")
p.connect("text_file_converter.documents", "cleaner.documents")
p.connect("cleaner.documents", "splitter.documents")
p.connect("splitter.documents", "writer.documents")

p.run({"text_file_converter": {"sources": your_files}})

相关链接

在我们的 API 参考中查看参数详情