fastNLP.core.instance 源代码

r"""
instance 模块实现了Instance 类在fastNLP中对应sample。一个sample可以认为是一个Instance类型的对象。
便于理解的例子可以参考文档 :mod:`fastNLP.core.dataset` 中的表格

"""

__all__ = [
    "Instance"
]

from .utils import pretty_table_printer


[文档]class Instance(object): r""" Instance是fastNLP中对应一个sample的类。每个sample在fastNLP中是一个Instance对象。 Instance一般与 :class:`~fastNLP.DataSet` 一起使用, Instance的初始化如下面的Example所示:: >>>from fastNLP import Instance >>>ins = Instance(field_1=[1, 1, 1], field_2=[2, 2, 2]) >>>ins["field_1"] [1, 1, 1] >>>ins.add_field("field_3", [3, 3, 3]) >>>ins = Instance(**{'x1': 1, 'x2':np.zeros((3, 4))}) """ def __init__(self, **fields): self.fields = fields
[文档] def add_field(self, field_name, field): r""" 向Instance中增加一个field :param str field_name: 新增field的名称 :param Any field: 新增field的内容 """ self.fields[field_name] = field
[文档] def items(self): r""" 返回一个迭代器,迭代器返回两个内容,第一个内容是field_name, 第二个内容是field_value :return: 一个迭代器 """ return self.fields.items()
def __contains__(self, item): return item in self.fields def __getitem__(self, name): if name in self.fields: return self.fields[name] else: raise KeyError("{} not found".format(name)) def __setitem__(self, name, field): return self.add_field(name, field) def __repr__(self): return str(pretty_table_printer(self))