Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nlp 如何使用torchtext添加功能?_Nlp_Pytorch_Pipeline_Torchtext - Fatal编程技术网

Nlp 如何使用torchtext添加功能?

Nlp 如何使用torchtext添加功能?,nlp,pytorch,pipeline,torchtext,Nlp,Pytorch,Pipeline,Torchtext,torchtext能够读取包含一些列的文件,每个列对应一个字段。如果我想创建一个新列(我将使用它作为功能),该怎么办?例如,假设文件有两列,文本和目标,我想从文本中提取一些信息并生成一个新的功能(例如,如果它包含某些单词),我可以直接使用torchtext执行此操作,还是需要先在文件中执行此操作 谢谢 这是可以做到的 def后处理(arr、vocab、pad_令牌): #需要填充序列 max_len=max([len(a)表示阵列中的a]) l=[] 对于arr中的a: res=最大长度-长度(

torchtext
能够读取包含一些列的文件,每个列对应一个字段。如果我想创建一个新列(我将使用它作为功能),该怎么办?例如,假设文件有两列,文本和目标,我想从文本中提取一些信息并生成一个新的功能(例如,如果它包含某些单词),我可以直接使用
torchtext
执行此操作,还是需要先在文件中执行此操作

谢谢

这是可以做到的

def后处理(arr、vocab、pad_令牌): #需要填充序列 max_len=max([len(a)表示阵列中的a]) l=[] 对于arr中的a: res=最大长度-长度(a) 如果res>0: a、 扩展([[pad_token]*len(a[0])]*res) l、 附加(a) 返回l def特性化(文本列表): #创建角色级要素 #文本列表是一个字符列表。 功能=[] 对于ch in text_列表: l=[] l、 追加(如果ch.isupper()为1,否则为0) l、 追加(如果字符串中有ch.digits,则为1,否则为0) l、 追加(如果字符串中有ch.标点符号,则为1,否则为0) 特征。附加(l) 返回特性 temp\u data=pd.read\u csv(“../data/processed/data.csv”) 下面的步骤仅用于处理我们想要处理的列,列顺序很重要

temp_data.loc[:,[“text”,“label”]]到_csv(“temp.csv”,index=False)
创建文本、特征和目标字段。在这里,我将一个句子标记为字符

TEXT=torchtext.data.Field(sequential=True,use\u vocab=True,
tokenize=lambda x:list(x),include_length=True,
批次(第一个=真)
LABEL_PAD_TOKEN=-1
FEAT=torchtext.data.LabelField(使用\u vocab=False,批处理\u first=True,预处理=特征化,
pad\u-token=None,后处理=lambda x,\ ux:后处理(x,\ ux,标签\ pad\u-token))
LABELS=torchtext.data.Field(使用\u vocab=False,pad\u token=LABEL\u pad\u token,unk\u token=None,
batch_first=True,dtype=torch.int64,tokenize=lambda x:list(x),
预处理=λx:[对x中的i求值(i)])
在TablerDataset中,应给出与temp.csv列顺序匹配的正确字段顺序

train\u data=torchtext.data.tablerdataset(path=“temp.csv”,format=“csv”,skip\u header=True,
字段=[(“文本”、“专长”),(文本、专长)),
(“标签”,标签)])
TEXT.build\u vocab(训练数据)
列车数据,有效列车数据=列车数据。拆分()#创建列车值
构建迭代器

train\u iter,valid\u iter=torchtext.data.BucketIterator.splits((train\u数据,valid\u数据,),批大小=2,设备=device,批内排序=True,排序关键字=lambda x:len(x.text))
a=下一个(国际热核实验堆)
a、 feat.shape,a.text[0]。形状#打印形状
(火炬尺寸([2,36,3]),火炬尺寸([2,36]))

接下来,您可以将文本传递到嵌入层,其
input
[batch\u size,seq\u len]
它将
输出
[批次大小、序列长度、emb尺寸]

这些特性的形状为
[批量大小,顺序,3]
,因为我们有3个特性

在最后一个维度上连接这两个维度,给出
[批次大小,顺序,emb dim+3]
,并将其传递给LSTM或CNN