跳到内容

TruncateTextColumn

使用 tokenizer 或字符数截断行。

TruncateTextColumn 是一个 Step,它根据最大长度截断行。如果提供了 tokenizer,则将使用 tokenizer 截断行,并且 max_length 将用作最大 token 数,否则将用作最大字符数。当人们想要将行截断到一定长度,以避免模型中由于长度引起的后续错误时,TruncateTextColumn 步骤非常有用。

属性

  • column:要截断的列。默认为 "text"

  • max_length:用于截断的最大长度。如果给定了 tokenizer,则对应于 token 的数量,否则对应于字符的数量。默认为 8192

  • tokenizer:要使用的 tokenizer 的名称。如果提供,将使用 tokenizer 截断行。默认为 None

输入和输出列

graph TD
    subgraph Dataset
        subgraph Columns
            ICOL0[dynamic]
        end
        subgraph New columns
            OCOL0[dynamic]
        end
    end

    subgraph TruncateTextColumn
        StepInput[Input Columns: dynamic]
        StepOutput[Output Columns: dynamic]
    end

    ICOL0 --> StepInput
    StepOutput --> OCOL0
    StepInput --> StepOutput

输入

  • dynamic(由 column 属性确定):要截断的列,默认为“text”。

输出

  • dynamic(由 column 属性确定):截断后的列。

示例

将行截断为给定的 token 数量

from distilabel.steps import TruncateTextColumn

trunc = TruncateTextColumn(
    tokenizer="meta-llama/Meta-Llama-3.1-70B-Instruct",
    max_length=4,
    column="text"
)

trunc.load()

result = next(
    trunc.process(
        [
            {"text": "This is a sample text that is longer than 10 characters"}
        ]
    )
)
# result
# [{'text': 'This is a sample'}]

将行截断为给定的字符数

from distilabel.steps import TruncateTextColumn

trunc = TruncateTextColumn(max_length=10)

trunc.load()

result = next(
    trunc.process(
        [
            {"text": "This is a sample text that is longer than 10 characters"}
        ]
    )
)
# result
# [{'text': 'This is a '}]