예제 #1
0
    def create_evaluate_task_by_train_job_id(train_job_id, evaluate_task_name, evaluate_task_desc, mark_job_ids, doc_term_ids, doc_relation_ids, use_rule=0):
        """
        如果后面要加重新训练的逻辑,这部分要改,不能根据train_job_id去创建评估任务,而是根据train_task_id,
        目前先保留,因为目前train_job和train_task是一一对应,不会有影响
        """
        # get correspondent train_job, doc_type, train_task, nlp_task by train_job_id
        train_job = TrainJobModel().get_by_id(train_job_id)
        doc_type = DocTypeModel().get_by_id(train_job.doc_type_id)
        doc_term_list = DocTermModel().get_by_filter(limit=99999, doc_type_id=doc_type.doc_type_id)
        doc_type.doc_term_list = doc_term_list

        nlp_task = NlpTaskEnum(doc_type.nlp_task_id)
        _, train_task_list = TrainTaskModel().get_by_filter(train_job_id=train_job_id)
        train_task = train_task_list[0]

        # create evaluate_task
        evaluate_task = EvaluateTaskModel().create(evaluate_task_name=evaluate_task_name,
                                                   evaluate_task_desc=evaluate_task_desc,
                                                   train_task_id=train_task.train_task_id,
                                                   evaluate_task_status=int(StatusEnum.processing))
        # bulk create evaluate m2m mark
        evaluate_m2m_mark_list = [{"evaluate_task_id": evaluate_task.evaluate_task_id, "mark_job_id": _id} for _id in mark_job_ids]
        EvaluateM2mMarkModel().bulk_create(evaluate_m2m_mark_list)

        # push to evaluate redis queue
        doc_term_ids = [str(t.doc_term_id) for t in RelationM2mTermModel().get_by_filter(limit=99999, doc_relation_ids=[int(rl) for rl in doc_relation_ids])]
        push_evaluate_task_to_redis(nlp_task, evaluate_task, train_task, doc_type, mark_job_ids, doc_term_ids, doc_relation_ids, use_rule)
        session.commit()
        return evaluate_task
 def create_doc_type(current_user: CurrentUser, args):
     doc_term_list = args.pop('doc_term_list')
     if 'group_id' not in args or args['group_id'] < 1:
         if current_user.user_groups:
             args['group_id'] = current_user.user_groups[0]
         else:
             abort(403, message="当前角色禁止创建项目,请切换角色操作")
     doc_type = DocTypeModel().create(**args)
     for item in doc_term_list:
         item.update({'doc_type_id': doc_type.doc_type_id})
     doc_type.doc_term_list = DocTermModel().bulk_create(doc_term_list)
     session.commit()
     result = DocTypeSchema().dumps(doc_type)
     return result
    def get_doc_type_items(doc_type_id: int):
        item = DocTypeModel().get_by_id(doc_type_id)
        item.doc_term_list = DocTermModel().get_by_filter(doc_type_id=doc_type_id)

        return DocTypeSchema().dump(item)