如何利用torchtext读取json文件并生成batch
设置Field
首先加载torchtext
from torchtext import data
设置Field
,对输入文本数据的格式进行"预设置"
question = data.Field(sequential=True, fix_length=20, pad_token='0')
label = data.Field(sequential=False, use_vocab=False)
sequential=True | tokenizer | fix_length | pad_first=True | tensor_type | lower |
---|---|---|---|---|---|
是否为sequences | 分词器 | 文本长度 | 是否从左补全 | Tensor type | 是否令英文字符为小写 |
以question
为例,设置文本长度为20,超过20删除,不足20则使用pad_token
补全。sequential
的含义为输入文本是否是序列文本,若为True则是序列文本,需要配合tokenize
(默认使用splits,也可以用Spacy)进行分词,若为False则输入已经是切分好的文本或不需要进行分词。如果处理的是中文文本,也可以自定义tokenizer
对中文进行切分:
import jieba
def chinese_tokenizer(text):
return [tok for tok in jieba.lcut(text)]
question = data.Field(sequential=True, tokenize=chinese_tokenizer, fix_length=20)
使用torchtext.data.Tabulardataset.splits读取文件
同时读取训练集、验证集与测试集,path
为路径,train
、validation
和tes