Exemplo n.º 1
0
    def get_json_data(self, request, *args, **kwargs):
        doc_class_name = kwargs.get('document_class')
        doc_class_fields = DOCUMENT_FIELDS.get(doc_class_name)
        if not doc_class_fields:
            return []

        return sorted([{
            'code': f.field_code,
            'name': f.name,
            'type': f.field_type.value
        } for f_name, f in doc_class_fields.items()], key=lambda k: k['name'])
Exemplo n.º 2
0
    def process(self, **kwargs):
        self.log('Going to train field detector model based on the datasets stored in DB...')

        document_class = kwargs.get('document_class')
        task_id = kwargs.get('task_id')

        if document_class:
            TrainFieldDetectorModel.train_model_for_document_class(
                document_class, task_id)
        else:
            for document_class, fields in DOCUMENT_FIELDS.items():
                TrainFieldDetectorModel.train_model_for_document_class(
                    document_class, task_id)
Exemplo n.º 3
0
class TrainFieldDetectorModelForm(forms.Form):
    header = 'Train Field Detector Model'

    _document_classes = list(DOCUMENT_FIELDS.keys())
    _document_classes.sort()

    _document_classes = [('', 'All')] + [(d, d) for d in _document_classes]

    document_class = forms.ChoiceField(choices=_document_classes,
                                       required=False)

    def _post_clean(self):
        super()._post_clean()
        self.cleaned_data['module_name'] = MODULE_NAME
Exemplo n.º 4
0
    def process(self, **kwargs):
        self.log_info('Going to train field detector model based on the datasets stored in DB...')

        document_class = kwargs.get('document_class')

        if document_class:
            TrainFieldDetectorModel.local_train_model_for_document_class(self, document_class)
        else:
            train_model_for_document_class_args = []
            for document_class, fields in DOCUMENT_FIELDS.items():
                train_model_for_document_class_args.append((document_class,))
            self.run_sub_tasks('Train Model For Each Document Class',
                               TrainFieldDetectorModel.train_model_for_document_class,
                               train_model_for_document_class_args)
    def process(self, **kwargs):
        self.log_info(
            "Going to prepare datasets based on the pre-coded regexps and annotations"
            "entered by users...")

        document_class = kwargs.get('document_class')
        document_ids = kwargs.get('document_ids')

        if document_class:
            self.build_sentences_to_fields_relations_dataset(
                document_class, document_ids)
        else:
            for document_class, fields in DOCUMENT_FIELDS.items():
                self.build_sentences_to_fields_relations_dataset(
                    document_class, document_ids)
Exemplo n.º 6
0
    def get_json_data(self, request, *args, **kwargs):
        if request.method == 'PUT':
            data = json.loads(request.body.decode('utf-8'))
            field_code = data.get('field')
            if not field_code:
                return {
                    'error': None,
                    'value': data.get('value')
                }
            doc_class_name, field = field_code.split('__')
            value = data['value']

            doc_class_fields = DOCUMENT_FIELDS.get(doc_class_name)
            if not doc_class_fields:
                return {
                    'error': 'Unknown document class: {0}'.format(doc_class_name),
                    'value': None
                }
            field_config = doc_class_fields.get(field)

            if not field_config:
                return {
                    'error': 'Field {1} is not configured for document class: {0}'.format(
                        doc_class_name, field),
                    'value': None
                }

            doc_id = kwargs.get('document_id')
            doc_class = field_config.document_class

            doc = doc_class.objects.get(pk=doc_id)

            if field_config:
                val = field_config.set_value_from_selection(doc, value)
                doc.save()
                return {
                    'error': None,
                    'value': val
                }
            else:
                return {
                    'error': 'No such field: {0}'.format(field),
                    'value': None
                }

        return None
Exemplo n.º 7
0
    def process(self, **kwargs):
        self.task.log_info(
            "Going to prepare datasets based on the pre-coded regexps and annotations"
            "entered by users...")

        document_class = kwargs.get('document_class')
        document_ids = kwargs.get('document_ids')

        task_count = 0

        if document_class:
            task_count += BuildFieldDetectorDataset.build_sentences_to_fields_relations_dataset(
                document_class, document_ids, self.task)
        else:
            for document_class, fields in DOCUMENT_FIELDS.items():
                task_count += BuildFieldDetectorDataset.build_sentences_to_fields_relations_dataset(
                    document_class, document_ids, self.task)

        self.task.update_subtasks_total(task_count)
 def _get_doc_class(doc_class_name: str):
     field_configs = DOCUMENT_FIELDS.get(doc_class_name)
     if not field_configs:
         return None
     for field_config in field_configs.values():
         return field_config.document_class