码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Torchtext快速入门(二)——文本预处理


    目录

    • 一、VocabTransform
    • 二、Truncate
    • 三、AddToken
    • 四、Sequential
    • 五、ToTensor
    • 六、PadTransform

    本文主要介绍 torchtext.transforms 的一些常用API。

    一、VocabTransform

    VocabTransform 主要用于将输入的词元映射成它们在词表中的索引。输入的词元可以是 List[str] 或 List[List[str]] 型。

    请看下面的例子

    from collections import OrderedDict
    from torchtext.transforms import VocabTransform
    
    ordered_dict = OrderedDict([('a', 1), ('b', 1), ('c', 1), ('d', 1)])
    vocab_transform = VocabTransform(vocab(ordered_dict))
    print(vocab_transform(['b', 'd']))
    # [1, 3]
    print(vocab_transform([['b', 'd'], ['a', 'c', 'b']]))
    # [[1, 3], [0, 2, 1]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    二、Truncate

    Truncate 用于将输入进行截断,输入的类型可以是 List[str] 或 List[List[str]]。

    from torchtext.transforms import Truncate
    
    sentences = [
        ['a', 'b', 'c', 'd', 'e'],
        ['a', 'b', 'c'],
        ['a', 'b', 'c', 'd'],
    ]
    print(Truncate(4)(sentences))  # 每个句子长度不超过4
    # [['a', 'b', 'c', 'd'], ['a', 'b', 'c'], ['a', 'b', 'c', 'd']]
    print(Truncate(3)(sentences))  # 每个句子长度不超过3
    # [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、AddToken

    AddToken 用于在输入序列的起始/末尾处添加词元,例如

    from torchtext.transforms import AddToken
    
    sentences = [
        ['a', 'b', 'c', 'd', 'e'],
        ['a', 'b', 'c'],
        ['a', 'b', 'c', 'd'],
    ]
    print(AddToken('', begin=True)(sentences))
    # [['', 'a', 'b', 'c', 'd', 'e'], ['', 'a', 'b', 'c'], ['', 'a', 'b', 'c', 'd']]
    print(AddToken('', begin=False)(sentences))
    # [['a', 'b', 'c', 'd', 'e', ''], ['a', 'b', 'c', ''], ['a', 'b', 'c', 'd', '']]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    四、Sequential

    类似于 torch.nn.Sequential,这里不作过多介绍。

    五、ToTensor

    ToTensor 通常将输入的一系列句子填充到最长句子的长度。

    from torchtext.transforms import ToTensor
    
    sentences = [
        [1, 2, 3, 4, 5],
        [1, 2, 3],
        [1, 2, 3, 4],
    ]
    t = ToTensor(padding_value=0)
    print(t(sentences))
    # tensor([[1, 2, 3, 4, 5],
    #         [1, 2, 3, 0, 0],
    #         [1, 2, 3, 4, 0]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    需要注意的是,ToTensor 的填充长度无法人为自定义,它是由输入句子的最大长度来决定的。如果需要自定义填充长度,可以使用下面的 PadTransform。

    六、PadTransform

    我们仍使用上面的例子,假设每个句子都要填充到长度8,则

    import torchtext.transforms as T
    
    sentences = [
        [1, 2, 3, 4, 5],
        [1, 2, 3],
        [1, 2, 3, 4],
    ]
    text_transform = T.Sequential(
        T.ToTensor(padding_value=0),
        T.PadTransform(max_length=8, pad_value=0)
    )
    print(text_transform(sentences))
    # tensor([[1, 2, 3, 4, 5, 0, 0, 0],
    #         [1, 2, 3, 0, 0, 0, 0, 0],
    #         [1, 2, 3, 4, 0, 0, 0, 0]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    问题:arcpy中计算RasterCalculator输出的栅格一直为double precision
    【CVPR 2018】PIXOR: 点云中三维目标的实时检测
    python网络爬虫笔记17:pyQT中的页面跳转技术
    nodejs环境安装与配置记录
    python 正则表达式(Regular Expression)基础学习笔记
    [iOS]分析Mach-O文件
    接口开放太麻烦?试试阿里云API网关吧
    C++核心编程:P18->STL----常用算法(上)
    大三实习生,字节跳动面经分享,已拿Offer
    PowerDesigner反向导入表+PowerDesigner的ER图设计+PowerDesigner连接外键的线(版本16.5)
  • 原文地址:https://blog.csdn.net/raelum/article/details/127405168
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号