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