mirror of https://github.com/doccano/doccano.git
pythondatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learningannotation-tool
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.2 KiB
102 lines
2.2 KiB
export class ConfigItemList {
|
|
constructor(public configItems: ConfigItem[]) {}
|
|
|
|
static valueOf(items: ConfigItem[]): ConfigItemList {
|
|
return new ConfigItemList(items)
|
|
}
|
|
|
|
toArray(): Object[] {
|
|
return this.configItems.map((item) => item.toObject())
|
|
}
|
|
}
|
|
|
|
interface LabelMappingForUI {
|
|
from: string
|
|
to: string
|
|
}
|
|
|
|
export interface ParametersForUI {
|
|
name: string
|
|
value: string | object[]
|
|
type?: string
|
|
items?: string[]
|
|
}
|
|
|
|
export interface Fields {
|
|
modelName: string
|
|
modelAttrs: ParametersForUI[]
|
|
template: string
|
|
labelMapping: LabelMappingForUI[]
|
|
taskType: string
|
|
}
|
|
|
|
export class ConfigItem {
|
|
constructor(
|
|
public id: number,
|
|
public modelName: string,
|
|
public modelAttrs: object,
|
|
public template: string,
|
|
public labelMapping: object,
|
|
public taskType: string
|
|
) {}
|
|
|
|
static valueOf({
|
|
id,
|
|
model_name,
|
|
model_attrs,
|
|
template,
|
|
label_mapping,
|
|
task_type
|
|
}: {
|
|
id: number
|
|
model_name: string
|
|
model_attrs: object
|
|
template: string
|
|
label_mapping: object
|
|
task_type: string
|
|
}): ConfigItem {
|
|
return new ConfigItem(id, model_name, model_attrs, template, label_mapping, task_type)
|
|
}
|
|
|
|
static parseFromUI({
|
|
modelName,
|
|
modelAttrs,
|
|
template,
|
|
labelMapping,
|
|
taskType
|
|
}: Fields): ConfigItem {
|
|
const mapping = labelMapping.reduce((a, x) => ({ ...a, [x.from]: x.to }), {})
|
|
const attributes: { [key: string]: any } = modelAttrs.reduce(
|
|
(a, x) => ({ ...a, [x.name]: x.value }),
|
|
{}
|
|
)
|
|
for (const [key, value] of Object.entries(attributes)) {
|
|
if (Array.isArray(value)) {
|
|
attributes[key] = value.reduce((a, x) => ({ ...a, [x.key]: x.value }), {})
|
|
}
|
|
}
|
|
return new ConfigItem(99999, modelName, attributes, template, mapping, taskType)
|
|
}
|
|
|
|
toObject(): object {
|
|
return {
|
|
id: this.id,
|
|
modelName: this.modelName,
|
|
modelAttrs: this.modelAttrs,
|
|
template: this.template,
|
|
labelMapping: this.labelMapping,
|
|
taskType: this.taskType
|
|
}
|
|
}
|
|
|
|
toAPI(): object {
|
|
return {
|
|
id: this.id,
|
|
model_name: this.modelName,
|
|
model_attrs: this.modelAttrs,
|
|
template: this.template,
|
|
label_mapping: this.labelMapping,
|
|
task_type: this.taskType
|
|
}
|
|
}
|
|
}
|