llama_index [功能请求]:在split_text_keep_separator函数中处理空子字符串

y53ybaqx  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(26)

功能描述

我注意到当前的实现在分割文本时包含了许多空的子字符串分隔符。以下是现有的实现:

def split_text_keep_separator(text: str, separator: str) -> List[str]:
    """Split text with separator and keep the separator at the end of each split."""
    parts = text.split(separator)
    result = [separator + s if i > 0 else s for i, s in enumerate(parts)]
    return [s for s in result if s]

当使用如下所示的函数时:

print(split_text_keep_separator('\n\nhello\n\n\n\n\n\nworld\n\nhaha', '\n\n'))
['\n\nhello', '\n\n', '\n\n', '\n\nworld', '\n\nhaha']

这包括了多个空的子字符串分隔符,这可能不是期望的行为。是否应该调整函数以通过修改实现来过滤掉这些空字符串:

def split_text_keep_separator(text: str, separator: str) -> List[str]:
    """Split text with separator and keep the separator."""
    parts = text.split(separator)
    result = [separator + s if i > 0 else s for i, s in enumerate(parts) if s]
    return result

有了这个改变,输出将会是:
['\n\nhello', '\n\nworld', '\n\nhaha']
包含空的子字符串分隔符是有意的设计选择吗?如果不是,使用修订后的函数来防止空字符串被包含在结果中是否会更有效?

原因

  • 无响应*

功能价值

  • 无响应*
cu6pst1q

cu6pst1q1#

我认为这是不理想的。分割只是一步,还有合并回原始块大小的步骤,这使得这个方法起作用。
此外,这会移除空间信息(如文本最初的布局方式),而LLMs在这方面做得相当好。

r1zk6ea1

r1zk6ea12#

明白了,那么修改函数只检查和处理结果中的第一个元素是否为空值会有益吗?我认为只有第一个元素可能是空的。

byqmnocz

byqmnocz3#

请CC @logan-markewich

相关问题