You need to enable JavaScript to run this app.
AI 数据湖服务

AI 数据湖服务

复制全文
文本处理
文本 chunk 切分(基于句子结构)
复制全文
文本 chunk 切分(基于句子结构)

算子介绍

描述

多格式文本分块处理器 - 结构化解析与智能切分解决方案

核心功能

  • 支持格式
  • 纯文本:基于段落/标点的语义分块
  • Markdown:保留文档结构,过滤图片链接
  • HTML:提取正文内容,保留章节结构
  • 智能分块策略
  • 结合语义与语法规则
  • 重叠优化保持上下文连贯性

技术实现

  • 解析引擎
  • HTML:BeautifulSoup
  • Markdown:llama-index
  • 分块算法
  • 递归式语义分割(sentence splitter)

Daft 调用

算子参数

输入

输入列名

说明

texts

待处理的文本数组,要求元素类型为字符串。

输出

切分后的文本块,元素为List[str]类型。

参数

如参数没有默认值,则为必填参数

参数名称

类型

默认值

描述

content_type

str

text

文本类型 描述:被切分的文本类型 可选值:["text", "md", "html"] 默认值:"text"

chunk_size

int

500

chunk长度 描述:chunk的长度,单位为字符 默认值:500

chunk_overlap

int

50

chunk重叠长度 描述:切分文本时chunk之间重叠的最大长度 默认值:50

调用示例

下面的代码展示了如何使用 daft 运行算子按照文本句子结构对其做切分。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.text.chunk_text_sentence_splitter import ChunkTextSentenceSplitter
from daft.las.functions.udf import las_udf

if __name__ == "__main__":

    if os.getenv("DAFT_RUNNER", "native") == "ray":
        import logging

        import ray

        def configure_logging():
            logging.basicConfig(
                level=logging.INFO,
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                datefmt="%Y-%m-%d %H:%M:%S.%s".format(),
            )
            logging.getLogger("tracing.span").setLevel(logging.WARNING)
            logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
            logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.context.set_runner_ray()
    daft.set_execution_config(actor_udf_ready_timeout=600)
    daft.set_execution_config(min_cpu_per_task=0)

    samples = {
        "text": [
            """2023年,中国乘用车市场零售总量恢复至疫情前的水平,显示出市场的强劲复苏。新能源乘用车行业同年实现了高质量增长,全年销量超过770万辆,平均每三辆新售乘用车中就有一辆为新能源车型。在政策支持和市场供需的共同推动下,新能源车市场展现出更多市场化特征。预计2024年,这一增长趋势将持续。随着新能源技术和商业模式的不断成熟,乘用车产品正逐步迈入“体验型商品”阶段,消费者在购车时更加关注整体体验,而不仅仅是车辆的社会属性或耐用品属性。
    与此同时,经过多年的快速发展和普及,2023年我国新车金融渗透率出现了首次回落,整体渗透率为56%,较上一年下降2%,新能源车的金融渗透率略低于整体水平。市场竞争日益激烈,加之宏观金融环境的影响,汽车金融领域的价格战愈发激烈。此外,产品同质化、需求多样化满足不足以及渠道模式固化等问题依然存在。研究认为,围绕用户综合体验进行汽车金融服务转型,将成为行业突破瓶颈、实现差异化发展的关键方向。""",
            None,
        ]
    }
    content_type = "text"
    chunk_size = 128
    chunk_overlap = 32

    ds = daft.from_pydict(samples)
    ds = ds.with_column(
        "embeddings",
        las_udf(
            ChunkTextSentenceSplitter,
            construct_args={"content_type": content_type, "chunk_size": chunk_size, "chunk_overlap": chunk_overlap},
        )(col("text")),
    )

    ds.show()
    # ╭──────────────────────────────────────────────┬──────────────────────────────────────────────╮
    # │ text                                         ┆ embeddings                                   │
    # │ ---                                          ┆ ---                                          │
    # │ Utf8                                         ┆ List[Utf8]                                   │
    # ╞══════════════════════════════════════════════╪══════════════════════════════════════════════╡
    # │ 2023年,中国乘用车市场零售总量恢复至疫情前的        ┆ [2023年,中国乘用车市场零售总量恢复至疫情前        │
    # │ 水平,显示…                                    ┆ 的水平,显…                                   │
    # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    # │ None                                         ┆ None                                         │
    # ╰──────────────────────────────────────────────┴──────────────────────────────────────────────╯
最近更新时间:2026.01.08 19:14:23
这个页面对您有帮助吗?
有用
有用
无用
无用