HTML语义保留分割器#

class langchain_text_splitters.html.HTMLSemanticPreservingSplitter(headers_to_split_on: List[Tuple[str, str]], *, max_chunk_size: int = 1000, chunk_overlap: int = 0, separators: List[str] | None = None, elements_to_preserve: List[str] | None = None, preserve_links: bool = False, preserve_images: bool = False, preserve_videos: bool = False, preserve_audio: bool = False, custom_handlers: Dict[str, Callable[[Any], str]] | None = None, stopword_removal: bool = False, stopword_lang: str = 'english', normalize_text: bool = False, external_metadata: Dict[str, str] | None = None, allowlist_tags: List[str] | None = None, denylist_tags: List[str] | None = None, preserve_parent_metadata: bool = False)[source]#

测试版

此功能处于测试阶段。我们正在积极开发中,因此API可能会发生变化。

分割HTML内容,保留语义结构。

将HTML内容按标题分割成通用块,保留语义结构。如果块超过最大块大小,则使用RecursiveCharacterTextSplitter进行进一步分割。

分割器保留完整的HTML元素(例如,

,
    )并将链接转换为类似Markdown的链接。它还可以通过将图像、视频和音频元素转换为Markdown格式来保留它们。请注意,为了保持语义完整性,某些块可能会超过最大大小。

Parameters:
  • headers_to_split_on (List[Tuple[str, str]]) – 定义内容部分的HTML标题(例如,“h1”,“h2”)。

  • max_chunk_size (int) – 每个块的最大大小,允许超出此限制以保留语义。

  • chunk_overlap (int) – 块之间重叠的字符数,以确保上下文的连续性。

  • separators (List[str]) – RecursiveCharacterTextSplitter 使用的分隔符,用于进一步分割。

  • elements_to_preserve (List[str]) – 在分割过程中保持完整的HTML标签(例如,

      )。

  • preserve_links (bool) – 将 标签转换为 Markdown 链接 ([text](url))。

  • preserve_images (bool) – 将 标签转换为 Markdown 图片 (![alt](src))。

  • preserve_videos (bool) – 将

  • 链接 (音频)

  • preserve_audio (bool) – 将

  • 链接

  • custom_handlers (Dict[str, Callable[[Any], str]]) – 可选的特定HTML标签的自定义处理程序,允许定制提取或处理。

  • stopword_removal (bool) – 可选地从文本中移除停用词。

  • stopword_lang (str) – 要移除的停用词的语言。

  • normalize_text (bool) – 可选地规范化文本 (例如,小写化,去除标点符号)。

  • external_metadata (Optional[Dict[str, str]]) – 附加的元数据,附加到文档对象上。

  • allowlist_tags (Optional[List[str]]) – 只有这些标签会被保留在HTML中。

  • denylist_tags (可选[列表[字符串]]) – 这些标签将从HTML中移除。

  • preserve_parent_metadata (bool) – 是否在调用transform_documents/atransform_documents()时将父文档的元数据传递给拆分后的文档。

示例

from langchain_text_splitters.html import HTMLSemanticPreservingSplitter

def custom_iframe_extractor(iframe_tag):
    ```
    Custom handler function to extract the 'src' attribute from an <iframe> tag.
    Converts the iframe to a Markdown-like link: [iframe:<src>](src).

    Args:
        iframe_tag (bs4.element.Tag): The <iframe> tag to be processed.

    Returns:
        str: A formatted string representing the iframe in Markdown-like format.
    ```
    iframe_src = iframe_tag.get('src', '')
    return f"[iframe:{iframe_src}]({iframe_src})"

text_splitter = HTMLSemanticPreservingSplitter(
    headers_to_split_on=[("h1", "Header 1"), ("h2", "Header 2")],
    max_chunk_size=500,
    preserve_links=True,
    preserve_images=True,
    custom_handlers={"iframe": custom_iframe_extractor}
)

初始化分割器。

方法

__init__(headers_to_split_on, *[, ...])

初始化分割器。

atransform_documents(documents, **kwargs)

异步转换文档列表。

split_text(text)

根据配置将提供的HTML文本分割成较小的块。

transform_documents(documents, **kwargs)

通过拆分文档来转换文档序列。

__init__(headers_to_split_on: List[Tuple[str, str]], *, max_chunk_size: int = 1000, chunk_overlap: int = 0, separators: List[str] | None = None, elements_to_preserve: List[str] | None = None, preserve_links: bool = False, preserve_images: bool = False, preserve_videos: bool = False, preserve_audio: bool = False, custom_handlers: Dict[str, Callable[[Any], str]] | None = None, stopword_removal: bool = False, stopword_lang: str = 'english', normalize_text: bool = False, external_metadata: Dict[str, str] | None = None, allowlist_tags: List[str] | None = None, denylist_tags: List[str] | None = None, preserve_parent_metadata: bool = False)[源代码]#

初始化分割器。

Parameters:
  • headers_to_split_on (List[Tuple[str, str]])

  • max_chunk_size (int)

  • chunk_overlap (int)

  • separators (列表[字符串] | )

  • elements_to_preserve (列表[字符串] | )

  • preserve_links (bool)

  • preserve_images (bool)

  • preserve_videos (bool)

  • preserve_audio (bool)

  • custom_handlers (Dict[str, Callable[[Any], str]] | None)

  • stopword_removal (bool)

  • stopword_lang (str)

  • normalize_text (bool)

  • external_metadata (Dict[str, str] | None)

  • allowlist_tags (列表[字符串] | )

  • denylist_tags (列表[字符串] | )

  • preserve_parent_metadata (bool)

async atransform_documents(documents: Sequence[Document], **kwargs: Any) Sequence[Document]#

异步转换文档列表。

Parameters:
  • documents (Sequence[Document]) – 要转换的文档序列。

  • kwargs (Any)

Returns:

一系列转换后的文档。

Return type:

序列[Document]

split_text(text: str) List[Document][source]#

根据配置将提供的HTML文本分割成较小的块。

Parameters:

文本 (str) – 要分割的HTML内容。

Returns:

包含分割内容的Document对象列表。

Return type:

列表[Document]

transform_documents(documents: Sequence[Document], **kwargs: Any) List[Document][source]#

通过拆分文档序列来转换文档。

Parameters:
  • 文档 (序列[Document])

  • kwargs (Any)

Return type:

列表[文档]