-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请教一下kag抽取实体关系是严格按照schema定义来的吗? #93
Comments
参考 |
这个只能枚举过滤吧,能过滤掉所有不匹配schema的类型吗 |
而且这个是prompt reponse过滤的,我需要的是在图谱构建时就过滤哦 |
def __init__(
self, language: Optional[str] = "en", **kwargs
):
super().__init__(language, **kwargs)
self.schema = SchemaClient(project_id=self.project_id).extract_types()
self.template = Template(self.template).safe_substitute(schema=self.schema) self.schema 里是前面提交给openspg的类型 |
好的,我看看,顺便再请教下,build下的prompt目录以及其下的ner.py,std.py的作用是干啥呀,看源码没找到在哪调用的 |
在/kag/builder/component/extractor/kag_extractor.py中,KAGExtractor.__init__里,通过PromptOp.load()动态加载。 self.ner_prompt = PromptOp.load(self.biz_scene, "ner")(
language=self.language, project_id=self.project_id
) 在 KAGExtractor.invoke里可以看到,先用named_entity_recognition使用ner提取entity,这里提取出的entity的名称可能会模糊不清,然后在 named_entity_standardization里使用std做消歧,提取出消歧后的official_name作为entity的最终名。 同样,在solver中,对问题也会进行提取->消歧的处理。 |
顺便说下,从提示词里看,KAG使用模型内知识帮助补充了office_name,如果是行业内特殊名词,模型可能会不知道office_name,这时可以通过词典强行替换,也可以用finetune后的行业模型做处理 |
那如果我新建一个example项目的话,还得再建prompt目录以及自定义ner,std文件来做提取和消歧吧? |
不需要,一般默认的就够了。默认不满足的情况下,才需要自己重写。也可以不使用extractor,直接从其他KG系统里取关系出来。 |
可以不经过std.py这一步么? |
自定义schema,commit后,抽取结果出现了不在schema定义中的实体类型和关系类型
The text was updated successfully, but these errors were encountered: