You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Beam pipeline构建数据点到整数映射的全局词汇表

实现方案

你可以通过先全局聚合所有元素、再枚举分配索引的方式生成目标映射结构,示例代码如下:

import apache_beam as beam

with beam.Pipeline() as pipeline:
    vocab_mapping = (
        pipeline
        | 'Create produce' >> beam.Create([
            '🍓 Strawberry',
            '🥕 Carrot',
            '🍆 Eggplant',
            '🍅 Tomato',
            '🥔 Potato',
        ])
        # 可选步骤:去重避免重复元素分配不同ID
        | 'Deduplicate elements' >> beam.Distinct()
        # 可选步骤:排序保证同一份数据每次运行生成的ID稳定不变
        | 'Sort for stable ID' >> beam.combiners.ToList().then(sorted)
        # 生成{元素: 整数索引}的映射字典
        | 'Build mapping' >> beam.Map(lambda elem_list: {elem: idx for idx, elem in enumerate(elem_list)})
        # 打印验证结果
        | beam.Map(print)
    )

运行上述代码会直接输出你需要的结构:{'🍓 Strawberry': 0, '🥕 Carrot': 1, '🍆 Eggplant': 2, '🍅 Tomato': 3, '🥔 Potato': 4}

注意事项

  • 该方案适合常规词汇表场景,要求全量词汇总大小可以放入单节点内存,这在绝大多数NLP、数据分类的词汇表构建场景下都适用
  • 如果不需要保证ID的稳定性,可以去掉排序步骤,性能会更好
  • 如果词汇量超大无法单节点加载,可以改用分桶分配ID的方案,不过实现复杂度会高很多

内容的提问来源于stack exchange,提问作者S. P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:06:04