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] #
异步转换文档列表。