Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
Linjie Chen ffc9190b9a | 2 years ago | |
---|---|---|
.. | ||
README.md | 2 years ago | |
termtree.py | 2 years ago | |
termtree_type.csv | 2 years ago |
TermTree(百科知识树)是一个描述所有中文词汇(包括概念、实体/专名、领域术语、语法词等,统一称之为Term)的树状知识库,完整的TermTree由两部分构成:
I. TermType词类体系:覆盖所有中文词汇词类的树状知识体系,是对中文词汇集合的一种全划分层次表示;
II. Term关系和属性值:描述具体Term之间关系和Term属性值网状图谱,用于整合各应用知识图谱;
本次发布的TermTreeV1.0试用版是TermTree的一个常用子集,包括两部分内容:
A. 简化版的TermType词类体系,由160+ termtype(三层结构)和 7000+ subtype构成。
B. 约100w的term集(挂接在TermType词类体系下),包括大多数常用概念(src=cb,基础概念库,termtype准确率为98%)和一部分高频百科实体(src=eb,基础实体库,termtype准确率为95%)。
开源版不包括Term关系和属性值,但给出了实体的百科词条链接,应用方可以利用百科链接整合其他知识图谱使用。
我们提供了TermTreeV1.0试用版的下载链接供大家使用,下载链接 。
注: 与其他常见应用知识图谱不同,TermTree的核心是概念词,而非专名实体词。因为,在中文文本中,概念词的含义是相对稳定的,而专名实体词随应用变化(例如,不同电商有不同的商品实体集,不同的小说站有不同的小说实体集),因此,TermTree通过 “提供常用概念集 + 可插拔的应用实体集/应用知识图谱” 来达到支持不同的应用适配。
termtree.py
文件中的TermTree类支持TermTree的加载、增加、保存操作,因为涉及到数据结构整体性和一致性,暂不支持删除和修改操作。下面提供了离线维护自定义TermTree的代码示例
首先下载已有的TermTreeV1.0
wget https://kg-concept.bj.bcebos.com/TermTree/TermTree.V1.0.tar.gz && tar -zxvf TermTree.V1.0.tar.gz
加载TermTreeV1.0,增加新的term
from termtree import TermTree
# 加载百科知识树
termtree = TermTree.from_dir("termtree_type.csv", "TermTree.V1.0")
# 增加新term: 平原上的火焰
termtree.add_term(term="平原上的火焰",
base="eb",
term_type="影视作品")
# 保存修改, 执行后将在当前路径生成文件`termtree_data`,即新的自定义TermTree
termtree.save("./")
def add_term()
参数
term (str): 待增加的term名称。
base (str): term属于概念词(cb)还是实体词(eb)。
term_type (str): term的主类别。
sub_type (Optional[List[str]], optional): term的辅助类别或细分类别,非必选。
sub_terms (Optional[List[str]], optional): 用于描述同类同名的term集,非必选。
alias (Optional[List[str]], optional): term的常用别名,非必选。
alias_ext (Optional[List[str]], optional): term的常用扩展别名,非必选。
data (Optional[Dict[str, Any]], optional): 以dict形式构造该term节点,非必选。
Taskflow支持使用自定义TermTree实现自定义Term-Linking,该示例中"平原上的火焰"的Term-Linking如下:
作品类_实体(wordtag_label) -> 影视作品_eb_平原上的火焰(term_id)
from paddlenlp import Taskflow
wordtag = Taskflow("knowledge_mining", term_schema_path="termtree_type.csv", term_data_path="termtree_data")
wordtag("《平原上的火焰》是今年新上映的电影")
# [{'text': '《平原上的火焰》是今年新上映的电影', 'items': [{'item': '《', 'offset': 0, 'wordtag_label': 'w', 'length': 1}, {'item': '平原上的火焰', 'offset': 1, 'wordtag_label': '作品类_实体', 'length': 6, 'termid': '影视作品_eb_平原上的火焰'}, {'item': '》', 'offset': 7, 'wordtag_label': 'w', 'length': 1}, {'item': '是', 'offset': 8, 'wordtag_label': '肯定词', 'length': 1, 'termid': '肯定否定词_cb_是'}, {'item': '今年', 'offset': 9, 'wordtag_label': '时间类', 'length': 2, 'termid': '时间阶段_cb_今年'}, {'item': '新', 'offset': 11, 'wordtag_label': '修饰词', 'length': 1, 'termid': '修饰词_cb_新'}, {'item': '上映', 'offset': 12, 'wordtag_label': '场景事件', 'length': 2, 'termid': '场景事件_cb_上映'}, {'item': '的', 'offset': 14, 'wordtag_label': '助词', 'length': 1, 'termid': '助词_cb_的'}, {'item': '电影', 'offset': 15, 'wordtag_label': '作品类_概念', 'length': 2, 'termid': '影视作品_cb_电影'}]}]
常见问题1:为什么TermTree采用树状结构(Tree),而不是网状结构(Net/Graph)?
树结构是对知识空间的全划分,网状结构是对相关关系的描述和提炼。树结构更方便做到对词类体系的全面描述。
树结构适合概念层次的泛化推理,网状结构适合相关性的泛化推理。树结构的知识对统计相关知识有很好的互补作用,在应用中能够更好地弥补统计模型的不足。
两者可以结合表示和使用:Term集合整体以树结构组织(TermType词类体系),Term间的关系用网状结构描述(Term关系和属性值)。可以将TermTree视为中文词汇的层次描述框架,应用知识图谱可以基于TermType词类体系方便地整合到TermTree。
常见问题2:为什么TermTree叫做百科知识树?是否只能用于描述百科知识?
常见问题3:中文词汇词类描述体系有很多,为什么采用这个体系?
字段 | 说明 | 备注 |
---|---|---|
id | 【必有】唯一标识符 | 可基于termid生成 |
term | 【必有】term的名字 | |
termid | 【必有】term的id(唯一),构造方式为termtype_src_term | 采用显式构造id的方式,便于应用数据扩展和整合 |
src | 【必有】term的来源库,当前包括两个基础库cb和eb。其中cb为基础概念库(concept base,收录常用词汇用语,可作为各类应用的基础集),eb为基础实体库(entity base, 收录常见命名实体,可根据应用需求扩展) | cb、eb的划分标准不同应用不一样,可根据需求调整;应用方也可以构造自己的应用库,与cb、eb整合使用。 |
termtype | 【必有】term的主类别,详细描述参见 termtree_type | 多上位的term会选择其中一个作为termtype,其他上位作为subtype,方便应用筛选 |
subtype | 【非必须】term的辅助类别或细分类别 | 如果应用特别关注某个subtype,也可以将其升级为termtype使用(需要相应更新termid和id) |
subterms | 【非必须】用于描述同类同名的term集,若“termtype+src”下term只对应一个实例,则subterms为空;若“termtype+src”下term对应多个实例,则subterms记录这些实例,其字段与term相同 | 不需要区分subterm的两种常见场景:1. 应用只需词类特征;2. 上下文信息不足,无法区分具体实例 |
subterms_num | 【非必须】subterms中的subterm数量 | 如果没有subterm,则值为0 |
alias | 【非必须】term的常用别名 | 通常为歧义小的别名 |
alias_ext | 【非必须】term的常用扩展别名,经常是term或alias的一个子片段,单独出现有其他含义,结合上下文可识别为别名。 | 通常为歧义大的别名,便于应用筛选使用。e.g., 四维彩超的alias_ext“四维” |
links | 【非必须】该term对应的其他term的id,可以是本知识库中的id,也可以是其他知识库如百度百科id | 如果是本知识库中的id,则表示两者可以指代同一实体 |
// 示例1:无subterms的term
{
"id": "c472a6fe74eb2008c4e5b958a047eb5c",
"termid": "植物_cb_苹果",
"term": "苹果",
"src": "cb",
"termtype": "植物",
"subtype": [],
"subterms": [],
"subterms_num": 0,
"alias": [
"苹果树"
],
"alias_ext": [],
"links": [
{
"bdbkUrl": [
"http://baike.baidu.com/item/%E8%8B%B9%E6%9E%9C/14822460"
]
}
]
}
// 示例2:有subterms的term
{
"id": "824716062a4d74efc0897d676700a24e",
"termid": "影视作品_eb_苹果",
"term": "苹果",
"src": "eb",
"termtype": "影视作品",
"subtype": [],
"subterms": [
{
"id": "9bb5b38dc50233b1ccd28d1c33c37605",
"subtype": [
"影视作品_cb_电影",
"影视动漫作品_cb_剧情片"
],
"alias": [],
"alias_ext": [],
"links": [
{
"bdbkUrl": [
"http://baike.baidu.com/item/%E8%8B%B9%E6%9E%9C/6011191"
]
}
]
},
{
"id": "688dc07cc98f02cbd4d21e2700290590",
"subtype": [
"影视作品_cb_韩国电影"
],
"alias": [],
"alias_ext": [],
"links": [
{
"bdbkUrl": [
"http://baike.baidu.com/item/%E8%8B%B9%E6%9E%9C/6011208"
]
}
]
},
{
"id": "bbf4abe6ac412b181eac383333ca9fef",
"subtype": [
"影视作品_cb_剧情电影"
],
"alias": [],
"alias_ext": [],
"links": [
{
"bdbkUrl": [
"http://baike.baidu.com/item/%E8%8B%B9%E6%9E%9C/6011176"
]
}
]
}
],
"subterms_num": 3,
"alias": [],
"alias_ext": [],
"links": []
}
term | 类别 | src | 上位归类路径示例 |
---|---|---|---|
苹果 | 植物类 | cb | 苹果 → 苹果属 → 蔷薇科 → 蔷薇目 → 双子叶植物纲 → 被子植物门 → 种子植物 → 植物界 → 真核生物域 → 生物 |
黄香蕉苹果 | 饮食类 | cb | 黄香蕉苹果 →苹果 →水果 → 蔬果和菌藻类 →食材 →食物 →饮食 |
甲型流感 | 疾病类 | cb | 甲型流感 → 流行性感冒 → 感冒 → 呼吸道感染 → 呼吸系统疾病 → 疾病损伤 → 生物疾病 |
甲型流感病毒 | 微生物类 | cb | 甲型流感病毒 → 流行性感冒病毒 → 正粘病毒科 → RNA病毒 → 生物病毒 → 病原微生物 → 微生物 → 生物 |
琴房 | 区域场所类 | cb | 琴房 → 音乐室 → 活动室 →活动场所 →区域场所 |
琴房 | 音乐类 | eb | 琴房 → 歌曲 →音乐作品 →艺术作品 →作品 → 作品与出版物 |
认同感 | 生活用语类 | cb | 认同感 →正面感受 → 感受 → 知觉感受 → 个体描述 → 生活用语 |
认同感 | 图书类 | eb | 认同感 →书籍 →图书 →书刊 →出版物 → 作品与出版物 |
佛罗伦萨足球俱乐部 | 体育组织机构 | eb | 佛罗伦萨足球俱乐部 →意大利足球联赛球队→职业足球俱乐部→足球俱乐部 →足球队 →球队 →运动队 →体育组织机构 →组织机构 |
佛罗伦萨市 | 世界地区类 | cb | 佛罗伦萨市 →托斯卡纳大区 →意大利 →南欧 →欧洲 →地球区域 →世界地区 |
言情小说 | 小说类 | cb | 言情小说 →情感小说 →小说 →文学作品 →作品 →作品与出版物 |
言情小说 | 音乐类 | eb | 言情小说 → 歌曲 →音乐作品 →艺术作品 →作品 → 作品与出版物 |
注: TermType词类体系可视为所有上位归类路径的集合。
如果您的工作成果中使用了TermTree,请增加下述引用。我们非常乐于看到TermTree对您的工作带来帮助。
@article{zhao2020TermTree,
title={TermTree and Knowledge Annotation Framework for Chinese Language Understanding},
author={Zhao, Min and Qin, Huapeng and Zhang, Guoxin and Lyu, Yajuan and Zhu, Yong},
technical report={Baidu, Inc. TR:2020-KG-TermTree},
year={2020}
}
百科知识树在持续扩充优化中,如果您有任何建议或发现数据问题,欢迎提交issue到Github。
黑客松task_55,在PaddleNLP的Roberta中,新增 MultipleChoice,MaskedLM 和 CausalLM三个类,7个模型权重. ,新增BPETokenizer
Python C++ Cuda Text Shell other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》