Skip to content

Zhuo-Ren/cdcat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cdcat v1 是2020.9.11的版本。 cdcat v2 是2020.10.20的版本。 cdcat v3 正在开发。

install

python 3.7 pytest 7.2.0 pytest-html 3.2.0 flask 2.2.2

config

在使用项目中的instance、node等数据结构前,必须进行配置!config.py负责管理所有配置文件。

center config

最核心的配置文件称为center config,通过以下方式引入:

from nlp_platform.center.config import Config
Config.load_config(config_name="center_config", config_dir="config_label.json")  
# 这意味着把当前目录下的config_label.json作为center config读入。

center config长这样:

{
  "Instance": {},
  "Node": {},
  "Relation": {}
}

依次分别对应instance(pool),node(pool)和table(pool)的配置。我们在讲instance(pool),node(pool)和table(pool)时分别详述。

center

Corpus

corus.py中定义了最顶层的数据类型Corpus。Corpus对象有raw,tp,np,ip四个属性,分别对应Raw对象(存储文本),TablePool对象(存储表),NodePool对象(存储token、mention等直接对应文本的东西)和InstancePool对象(存储instance等不直接对应文本的东西)。

Instance

Instance.config

使用Instance类前先要配置center config。Instance类的静态属性config保存center config中关于instance的那部分。center config中针对instance的配置长这样:

{
  "Instance": {
        "PRELIMINARY_CODE": "import datetime \nimport random",
        "LABELS": {
            "id": {
                "required": "True",
                "type": "SimpleLabel",
                "value_type_hint": "isinstance(value, str)",
                "value_init": "'i:%s%03d'%(datetime.datetime.now().strftime('%Y%m%d%H%M%S%d'),random.randint(0,999))"
            },
            "desc": {
                "required": "True",
                "type": "SimpleLabel",
                "value_type_hint": "isinstance(value, str)",
                "value_init": "self['owner']['id']['value']"
            },
            "type": {
                "type": "SimpleLabel",
                "value_type_hint": "isinstance(value, str)",
                "value_init": "'none'",
                "value_optional": ["none", "entity", "event"]
            }
        }
  
  }
}

这里主要配置Instance对象应该具有什么标签,如上例就是说一个Instance类的实例应该具有id,desc,type三个标签。具体到每个标签:

  • required项:
    • 本项可选。
    • 值域:字符串“True”或“False”。
    • 说明当前标签是否必填。如必填就是True(如id);如可选就是False,或直接不写这项(如type)。
  • type项:
    • 本项必选。
    • 值域:字符串。
    • 说明标签类型。在labeltypes.py的最末尾有一个列表,列出当前可用的所有标签类型,选填即可。
  • value_type_hint项:
    • 本项必选。
    • 值域:字符串。
    • 在对一个此类标签进行赋值时,会自动进行值的合法性检测,本项用于说明如何判定标签值的合法性。本项的值是一个字符串,这个字符串的内容是可执行的python语句。这个python语句可以通过关键字value来获取当前标签的值,然后进行判定,并返回True或False。返回True就认为赋值成功。
  • value_optional项:
    • 本项可选。
    • 值域:字符串。
    • 说明标签值的可选项,例如“性别”标签的值只能从“男”和“女”中选择。作用就是当在GUI上展示时,通过下拉菜单展示可选的值。

instance.pool

一个实例instance_obj通常都会注册到一个实例池instancepool_obj。

保存如果一个Instance obj被添加到某个InstancePool obj,则this_instance_obj.pool = this_instancepool_obj。否则为None。

instance_obj和instancepool_obj的关系是双向的:instancepool_obj["id_of_a_instance_obj"] = instance_obj,同时instance_obj.pool = instancepool_obj

设置instance_obj.pool有两种方法:

  • 可以通过Instance类的构造函数的pool参数来指定一个instance_obj要注册到哪个instancepool_obj,通过这种方式注册时,会自动维护双向关系,即不但实现instance_obj.pool = instancepool_obj,而且自动实现instancepool_obj["id_of_a_instance_obj"] = instance_obj
  • 可以直接赋值instance_obj.pool,但是这样不会自动维护双向关系,即只实现instance_obj.pool = instancepool_obj,而不实现instancepool_obj["id_of_a_instance_obj"] = instance_obj

instance[标签名]

Instance类是dict类的子类。

如果你在center config中为instance定制了某个标签,那么Instance类实例就会具有这个标签,并可以通过字典的形式访问:a_instance_obj["name_of_label"] = label_obja_instance_obj["name_of_label"]["value"]= "value_of_this_label"。具体参见Label类的介绍。

instance.to_info()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •