Instance是Field的集合,是一个Dict,Mapping[str, Field]。
例如{'passage':TextField(passage_tokens, token_indexers), 'span_start':IndexField(span_start, passage_field)}
在读取数据集的def _read()方法(生成器,返回迭代器)中,输出为yield,即一次输出一个Instance,并暂停到这里。
if instance is not None:
yield instance
Vocabulary的from_instances方法,通过输入Instances建立起词典。例如:
reader = StanfordSentimentTreeBankDatasetReader()
train_dataset = reader.read("data/stanfordSentimentTreebank/trees/train.txt")
dev_dataset = reader.read("data/stanfordSentimentTreebank/trees/dev.txt")
vocab = Vocabulary.from_instances(train_dataset+dev_dataset, min_count={'tokens': 3})
方法
Instance集中控制所有Field的计数,index,打包成Batch,转为padded tensors。
Instance只是对内部的Field进行迭代,实际做的事情在不同Field的相应方法中进行。
def count_vocab_items(self, counter: Dict[str, Dict[str, int]])
def index_fields(self, vocab: Vocabulary)
def get_padding_lengths(self)
def as_tensor_dict(self,padding_lengths: Dict[str, Dict[str, int]] = None)