139 深入解析 RecursiveCharacterTextSplitter 类 langchain_text_splitters.charater.py

深入解析 RecursiveCharacterTextSplitter 类

在自然语言处理和文本处理任务中,文本分割是一个常见的需求。文本分割的目的是将长文本分割成更小的、更易于处理的片段。RecursiveCharacterTextSplitter 类是一个强大的工具,它通过递归地尝试不同的分隔符来分割文本。本文将深入探讨这个类的实现细节,并通过代码示例帮助你更好地理解其工作原理。

前置知识

在深入探讨 RecursiveCharacterTextSplitter 类之前,我们需要了解一些基本概念:

  1. 文本分割:将长文本分割成更小的片段,以便于处理和分析。
  2. 分隔符:用于分割文本的字符或字符串。
  3. 递归:一种编程技术,函数调用自身来解决问题。
  4. 正则表达式:一种用于匹配字符串的模式。

类定义

RecursiveCharacterTextSplitter 类继承自 TextSplitter 类,并提供了递归分割文本的功能。

class RecursiveCharacterTextSplitter(TextSplitter):
    """Splitting text by recursively look at characters.

    Recursively tries to split by different characters to find one
    that works.
    """

初始化方法

类的初始化方法 __init__ 接受几个参数:

  • separators:一个可选的分隔符列表,默认为 ["\n\n", "\n", " ", ""]
  • keep_separator:一个布尔值或字符串,表示是否保留分隔符,默认为 True
  • is_separator_regex:一个布尔值,表示分隔符是否为正则表达式,默认为 False
  • **kwargs:其他关键字参数。
def __init__(
    self,
    separators: Optional[List[str]] = None,
    keep_separator: Union[bool, Literal["start", "end"]] = True,
    is_separator_regex: bool = False,
    **kwargs: Any,
) -> None:
    """Create a new TextSplitter."""
    super().__init__(keep_separator=keep_s
代码报错:Traceback (most recent call last): File "C:\Users\l30050332\Desktop\工作文档\AI\code\xiaoling\test\testnew.py", line 96, in <module> documents = splitter.split_text(html_string) File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 669, in split_text return self._process_html(soup) File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 883, in _process_html ) = _process_element( File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 833, in _process_element ) = _process_element( File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 833, in _process_element ) = _process_element( File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 833, in _process_element ) = _process_element( [Previous line repeated 5 more times] File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 860, in _process_element preserved_elements[placeholder] = _get_element_text(elem) File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\langchain_text_splitters\html.py", line 799, in _get_element_text return self._custom_handlers[element.name](element) File "C:\Users\l30050332\Desktop\工作文档\AI\code\xiaoling\test\testnew.py", line 44, in code_handler print(process_cell(element)) File "C:\Users\l30050332\Desktop\工作文档\AI\code\xiaoling\test\testnew.py", line 21, in process_cell cell.string = link['href'] File "D:\Anaconda3\Anaconda3\envs\py39\lib\site-packages\bs4\element.py", line 2214, in __getitem__ return self.attrs[key] KeyError: 'href'
05-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值