IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Torchtext 0.12+新版API学习与使用示例(1) -> 正文阅读

[人工智能]Torchtext 0.12+新版API学习与使用示例(1)

torchtext 文档页面:https://pytorch.org/text/stable/index.html
torchtext github页面:https://github.com/pytorch/text

torchtext 0.9是一个API的大更新,0.12又是一个大更新

但是官网教程门槛太高了,这里参考文档,举几个小例子,把学习门槛降下来:

官网教程:SST-2 BINARY TEXT CLASSIFICATION WITH XLM-ROBERTA MODEL

注意:如果大家有学习过transfomer里的类,那么需要注意的是,torchtext能一个函数做成的只有很少很少的基本功能,没法自由把token <-> index或是token <-> embedding这种,需要我们代码中手动转换

学习教程:

1. word 转 token

首先构造一个自定义的vocab

from torchtext.vocab import vocab

from collections import Counter, OrderedDict

sentence = "Natural language processing strives to build machines that understand and respond to text or voice data and respond with text or speech of their own in much the same way humans do."
sentences_list = sentence.split(" ")  # 切分句子

counter = Counter(sentences_list)  # 统计计数
sorted_by_freq_tuples = sorted(counter.items(), key=lambda x: x[1], reverse=True)  # 构造成可接受的格式:[(单词,num), ...]
ordered_dict = OrderedDict(sorted_by_freq_tuples)
# 开始构造 vocab
my_vocab = vocab(ordered_dict, specials=["<UNK>", "<SEP>"])  # 单词转token,specials里是特殊字符,可以为空

最后使用:

print("单词and的token", my_vocab['and'])

即可得到token,为3

2. token 与 word 的对应关系

word对应的token可以通过:

print("word->token:", my_vocab.get_stoi())

同样token->word:

print("token->word:", my_vocab.get_itos())

3. 句子 -> token

这里需要引入一个新的类VocabTransform,然后使用如下示例即可:

from torchtext.transforms import VocabTransform

vocab_transform = VocabTransform(my_vocab)
trans_token = vocab_transform([
    ["language", "processing"],
    ["second", "understand", "and", "respond", "to", "text"],
    ["wa", "ka", "ka", "ka", "ka", "ka"]])
print("转换后的token:", trans_token)

4. 句子定长截断

同样引入新的类Truncate

from torchtext.transforms import Truncate

truncate = Truncate(max_seq_len=3)  # 截断
truncate_token = truncate(trans_token)
print("截断后的token(最长为3)", truncate_token)

5. 批量修改句子的token

使用AddToken可以在开头或结尾为每个句子都添加一个想要的token

from torchtext.transforms import AddToken

begin_token = AddToken(token=1000, begin=True)  # 在每个句子开头添加一个token,使用值 1000 表示这个头token
end_token = AddToken(token=-10000, begin=False)  # 在每个句子结尾添加一个token,使用值 -1000 表示这个头token
add_end_token = end_token(begin_token(truncate_token))
print('动态修改token后的结果(收尾添加特殊字符):', add_end_token)

完整示例代码

from torchtext.vocab import vocab

from collections import Counter, OrderedDict

sentence = "Natural language processing strives to build machines that understand and respond to text or voice data and respond with text or speech of their own in much the same way humans do."
sentences_list = sentence.split(" ")
# ===========================================
# 构造words -> token 与 token -> words
# ===========================================
counter = Counter(sentences_list)
sorted_by_freq_tuples = sorted(counter.items(), key=lambda x: x[1], reverse=True)
ordered_dict = OrderedDict(sorted_by_freq_tuples)
# 开始构造 vocab
my_vocab = vocab(ordered_dict, specials=["<UNK>", "<SEP>"])  # 单词转 token
my_vocab.set_default_index(-1)  # 设置OOV token,就是如果找不到这个单词,返回哪个token,默认会报错,这里只要设置了就不会报错,返回设置的值
# 测试vocab
print("单词 and 的token:", my_vocab['and'])
print("单词 apple 的token(语料中木有这个词):", my_vocab['apple'])

# 批量的将语句转为token
from torchtext.transforms import VocabTransform

vocab_transform = VocabTransform(my_vocab)
trans_token = vocab_transform([
    ["language", "processing"],
    ["second", "understand", "and", "respond", "to", "text"],
    ["wa", "ka", "ka", "ka", "ka", "ka"]])
print("转换后的token:", trans_token)
print("token->word:", my_vocab.get_itos())
print("word->token:", my_vocab.get_stoi())

# 控制语句长度
from torchtext.transforms import Truncate

truncate = Truncate(max_seq_len=3)  # 截断
truncate_token = truncate(trans_token)
print("截断后的token(最长为3)", truncate_token)

# 动态修改语句的token
from torchtext.transforms import AddToken

begin_token = AddToken(token=1000, begin=True)  # 在每个句子开头添加一个token,使用值 1000 表示这个头token
end_token = AddToken(token=-10000, begin=False)  # 在每个句子结尾添加一个token,使用值 -1000 表示这个头token
add_end_token = end_token(begin_token(truncate_token))
print('动态修改token后的结果(收尾添加特殊字符):', add_end_token)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:41:49  更:2022-04-26 11:42:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:40:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码