词重复比例计算器 - 基于N-gram词组重复比例的文本特征提取
输入列名 | 说明 |
|---|---|
texts | 待处理的文本列,要求元素类型为字符串 |
词重复比例列,元素为浮点数,表示重复词组比例
如参数没有默认值,则为必填参数
参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
repetition | int | 5 | 词组长度 描述:用于拼接成词组的单词数量 默认值:5 |
lang | str | zh | 语种 描述:文本的语种,支持zh(中文)、en(英文) 默认值:"zh" |
tokenization | bool | True | 是否使用分词器 描述:是否使用sentencepiece模型进行分词,中文须开启 默认值:True |
model_path | str | /opt/las/models | 模型文件所在的路径 默认值:"/opt/las/models" |
model_name | str | kenlm/wikipedia | 模型名称 默认值:"kenlm/wikipedia" |
下面的代码展示了如何使用 daft 运行算子计算文本中基于N-gram的词组重复比例。
from __future__ import annotations import os import daft from daft import col from daft.las.functions.text.word_repetition_calculator import WordRepetitionCalculator 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.set_runner_ray() daft.set_execution_config(actor_udf_ready_timeout=600) daft.set_execution_config(min_cpu_per_task=0) samples = { "text": [ "人工智能技术正在快速发展,人工智能技术在各领域的应用越来越广泛。人工智能技术可以帮助我们解决复杂问题,人工智能技术的未来充满无限可能。", "这是一个没有重复词汇的文本示例,每个词语都只出现一次。", None, ] } repetition = 2 lang = "zh" tokenization = True ds = daft.from_pydict(samples) ds = ds.with_column( "repetition_ratio", las_udf( WordRepetitionCalculator, construct_args={ "repetition": repetition, "lang": lang, "tokenization": tokenization, "model_path": os.getenv("MODEL_PATH", "/opt/las/models"), "model_name": "kenlm/wikipedia", }, )(col("text")), ) ds.show() # ╭─────────────────────────────────────────────────────────────┬─────────────────────╮ # │ text ┆ repetition_ratio │ # │ --- ┆ --- │ # │ String ┆ Float64 │ # ╞═════════════════════════════════════════════════════════════╪═════════════════════╡ # │ 人工智能技术正在快速发展,人工智能技术在各领域的应用越来越… ┆ 0.14285714285714285 │ # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ # │ 这是一个没有重复词汇的文本示例,每个词语都只出现一次。 ┆ 0 │ # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ # │ None ┆ None │ # ╰─────────────────────────────────────────────────────────────┴─────────────────────╯