| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- from modelscope.metainfo import TaskModels
- from modelscope.utils import registry
- from modelscope.utils.constant import Tasks
- SUB_TASKS = 'sub_tasks'
- PARENT_TASK = 'parent_task'
- TASK_MODEL = 'task_model'
- DEFAULT_TASKS_LEVEL = {
- Tasks.text_classification: {
- SUB_TASKS: [
- Tasks.text_classification,
- Tasks.sentence_similarity,
- Tasks.sentiment_classification,
- Tasks.sentiment_analysis,
- Tasks.nli,
- ],
- TASK_MODEL:
- TaskModels.text_classification,
- },
- Tasks.token_classification: {
- SUB_TASKS: [
- Tasks.token_classification,
- Tasks.named_entity_recognition,
- Tasks.word_segmentation,
- Tasks.part_of_speech,
- ],
- TASK_MODEL:
- TaskModels.text_classification,
- },
- Tasks.token_classification: {
- SUB_TASKS: [
- Tasks.token_classification,
- Tasks.named_entity_recognition,
- Tasks.word_segmentation,
- Tasks.part_of_speech,
- ],
- TASK_MODEL:
- TaskModels.text_classification,
- },
- Tasks.text_generation: {
- SUB_TASKS: [
- Tasks.text_generation,
- Tasks.text2text_generation,
- ],
- TASK_MODEL: TaskModels.text_generation,
- },
- Tasks.information_extraction: {
- SUB_TASKS: [
- Tasks.information_extraction,
- Tasks.relation_extraction,
- ],
- TASK_MODEL: TaskModels.information_extraction,
- },
- Tasks.fill_mask: {
- SUB_TASKS: [
- Tasks.fill_mask,
- ],
- TASK_MODEL: TaskModels.fill_mask,
- },
- Tasks.text_ranking: {
- SUB_TASKS: [
- Tasks.text_ranking,
- ],
- TASK_MODEL: TaskModels.text_ranking,
- }
- # TODO: add other tasks with their sub tasks in different domains
- }
- def _inverted_index(forward_index):
- inverted_index = dict()
- for index in forward_index:
- for item in forward_index[index][SUB_TASKS]:
- inverted_index[item] = {
- PARENT_TASK: index,
- TASK_MODEL: forward_index[index][TASK_MODEL],
- }
- return inverted_index
- INVERTED_TASKS_LEVEL = _inverted_index(DEFAULT_TASKS_LEVEL)
- def is_embedding_task(task: str):
- return task == Tasks.sentence_embedding
- def get_task_by_subtask_name(group_key):
- if group_key in INVERTED_TASKS_LEVEL:
- return INVERTED_TASKS_LEVEL[group_key][
- PARENT_TASK], INVERTED_TASKS_LEVEL[group_key][TASK_MODEL]
- else:
- return group_key, None
|