Pytorch 从列表而不是文件创建SequenceTaggingDataset
我想从我在代码中动态创建的两个列表中创建一个标签-Pytorch 从列表而不是文件创建SequenceTaggingDataset,pytorch,torchtext,Pytorch,Torchtext,我想从我在代码中动态创建的两个列表中创建一个标签-train\u语句和train\u标签。我想写这样的东西: train_data = SequenceTaggingDataset(examples=(zip(train_sentences, train_tags))) 但是,构造函数必须接收路径。不仅如此,从代码上看,即使我提供了示例,它也会覆盖这些示例,并将examples初始化为空列表 出于各种原因,我不想将我创建的列表保存在SequenceTaggingDataset可以读取的文件中。
train\u语句
和train\u标签
。我想写这样的东西:
train_data = SequenceTaggingDataset(examples=(zip(train_sentences, train_tags)))
但是,构造函数必须接收路径。不仅如此,从代码上看,即使我提供了示例,它也会覆盖这些示例,并将examples
初始化为空列表
出于各种原因,我不想将我创建的列表保存在
SequenceTaggingDataset
可以读取的文件中。除了定义我自己的自定义类之外,还有其他方法吗?您需要修改它的源代码()。您可以制作本地副本并作为模块导入
路径
用于初始化
。重要的一点是,它从文件中提取行,并使用给定的分隔符将其拆分为名为列的列表。然后,将此列
列表与字段
一起输入到另一个类方法中,以构造示例
列表。请阅读提供的示例以理解字段
(注意,UDPOS
在此处被调用以创建SequenceTaggingDataset
)
您需要的是列
,您不需要从文件中读取这些列,因为您已经拥有了所有组件。您将通过简化类\uuuuu init\uuuu
直接为其提供数据:
def __init__(self, columns, fields, encoding="utf-8", separator="\t", **kwargs):
examples = []
examples.append(data.Example.fromlist(columns, fields))
super(SequenceTaggingDataset, self).__init__(examples, fields,
**kwargs)
列
是列表的嵌套列表:[[word],[UD\u标记],[PTB\u标记]]
。这意味着您需要将以下内容输入到修改过的类中:
train = SequenceTaggingDataset([train_sentences, train_tags], fields=...)
这似乎一点也不简单。我在发布我的问题之前看到了这个构造器(你可以从我链接到它的事实中看到),我仍然不清楚。“列”和“字段”是什么意思?我想尝试创建一个tempfile,以便在开箱即用的情况下使用这个ctor,但我仍然不清楚这个文件应该是什么样子。而且还没有找到任何文档(据我所知)。我的错,让我们深入研究一下。我将编辑我的答案。@faerubin请查看修改后的答案。顺便说一句,您可以在这里下载文件示例()