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请查看修改后的答案。顺便说一句,您可以在这里下载文件示例()