Source code for chatbot.nlp.entity_synonym

from chatbot.common.chat_share_data import ShareData
from chatbot.common.chat_knowledge_mem_dict import ChatKnowledgeMemDict

[docs]class EntitySynonym(ShareData): def __init__(self, cb_id): self.cb_id = cb_id
[docs] def make_represent(self, share_data, synonym): synonym_list = ChatKnowledgeMemDict.synonym.get(self.cb_id) represent_value = list(filter(lambda x: x["fields"]["synonym_value"] in synonym ,synonym_list)) share_data.set_story_slot_entity(represent_value[0]["fields"]["entity_id"], [represent_value[0]["fields"]["represent_value"]]) return represent_value[0]["fields"]["entity_id"]
[docs] def convert_synonym_value(self, share_data, key, synonym): exist = False synonym_list = ChatKnowledgeMemDict.synonym.get(self.cb_id) key_list = list(filter(lambda x: x["fields"]["entity_id"] == key and x["fields"]["synonym_value"] in synonym , synonym_list)) for i, syn in enumerate(synonym) : for key in key_list : if (syn == key['fields']['synonym_value']) : synonym[i] = key['fields']['represent_value'] if(len(key_list) > 0): share_data.set_story_slot_entity(key_list[0]["fields"]["entity_id"], synonym) exist = True return exist