File size: 1,092 Bytes
4398510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import asyncio
from typing import List, Union
from models import connect_ckip_drivers
from ckip_transformers.nlp.util import NerToken
from utils.ckip.ner import chunk_multiple_entities


def is_list_of_empty_list(ner_token_list: List[Union[NerToken, None]]) -> bool:
    """The is_list_of_empty_list function checks whether a list is full of empty lists.
    Args:
        ner_token_list (list): the result of the ner driver
    Returns:
        a bool
    """
    return all(map(lambda value: not value, ner_token_list))


def handle_create_ner(nlp_model: str, sentence_list: List[str]) -> List[str]:
    """The handle_create_ner function handles the request that deals with NER.
    Args:
        nlp_model (str): the nlp model name
        sentence_list (list): a list of sentences
    Returns:
        a list of strings
    """
    ner_driver = connect_ckip_drivers(nlp_model)[2]
    ner_token_list = ner_driver(sentence_list)

    if is_list_of_empty_list(ner_token_list):
        return sentence_list

    return asyncio.run(chunk_multiple_entities(zip(sentence_list, ner_token_list)))