基于Python实现几本小说的知识图谱建立

关系抽取

  信息抽取(Information Extraction, IE)旨在从大规模非结构或半结构的自然语言文本中抽取结构化信息。关系抽取(Relation Extraction, RE)是其中的重要子任务之一,主要目的是从文本中识别实体并抽取实体之间的语义关系,是自然语言处理(NLP)中的一项基本任务。比如,我们可以从下面的一段话中,

鸿海集团董事长郭台铭 25 日表示,阿里巴巴集团董事局主席马云提的新零售、新制造中的「新制造」,是他给加上的。网易科技报导,郭台铭在 2018 深圳 IT 领袖峰会谈到工业互联网时表示,眼睛看的、脑筋想的、嘴巴吃的、耳朵听的,都在随着互联网的发展而蓬勃发展,当然互联网不是万能的,比如说刚才李小加要水喝,在手机上一按就能出一瓶水吗?当然做不到,还是得有实体经济。

可以抽取出如下三元组,用来表示实体之间的关系:

['鸿海集团', '董事长', '郭台铭']
['阿里巴巴集团', '主席', '马云']

并且能够形成如下的简单的知识图谱(Knowledge Graph)。

  利用关系抽取,我们可以从一些非结构化数据中,提取出实体之间的关系,形成知识图谱,这在很大程度上可以帮助我们减轻构建知识图谱的成本。非结构化数据越多,关系抽取效果越好,我们构建的知识图谱就会越庞大,实体之间的关系也会越丰富。

如何做好关系抽取?

   目前,网络上有许多与关系抽取相关的公开比赛,比如:

  常用的关系抽取语料如下:

  • MUC 关系抽取任务数据集;
  • ACE 关系抽取任务数据集;
  • TAC-KBP 数据集。

  现阶段,关系抽取的办法主要如下:

  • 基于规则的模式匹配;
  • 基于监督学习的方法;
  • 半监督和无监督学习方法;
  • 远程监督的方法;
  • 深度学习模型。

  接着,笔者想说下,为什么最近会研究关系抽取。在一个偶然的机会,笔者看到了这个网站:https://www.wisers.ai/zh-cn/browse/relation-extraction/demo/ ,截图如下:

这个图给人以一种非常炫酷的感觉,因此,笔者就被它所吸引了。但笔者在这个 demo 网站上尝试了几篇新的语料,有些效果好,有些效果不尽如人意,因此,笔者决定自己动手实现一个关系抽取的模型!
  虽然网上已经有许多现成的很好的关系抽取的模型,但笔者还是希望能够按照自己的意愿和想法来实现一下,当然,仅仅是作为一次尝试。笔者的思路如下:

  • 以句子级别进行标注,标注出句子中的主语,谓语,宾语,形成标注序列;
  • 利用标注好的语料,采用 bert+dl 的方法进行训练;
  • 对新的语料,预测主语,谓语,宾语,然后利用一定的策略,形成实体关系;
  • 对新语料的实体关系进行可视化展示。

如果你对笔者的尝试感兴趣,请尝试这阅读下去。

如何标注?

  按照笔者的惯例,还是自己进行标注。那么,对于关系抽取,该如何进行标注呢?比如,下面这句话:

应日本国首相安倍晋三邀请,出席二十国集团领导人第十四次峰会。

我们需要的实体关系应该是: 日本国–> 首相–> 安倍晋三,那么我们可以选择主语为日本,谓语为首相,宾语为安倍晋三,形成的标注序列如下:

应	O
日	B-SUBJ
本	I-SUBJ
国	I-SUBJ
首	B-PRED
相	I-PRED
安	B-OBJ
倍	I-OBJ
晋	I-OBJ
三	I-OBJ
邀	O
请	O
,	O
出	O
席	O
二	O
十	O
国	O
集	O
团	O
领	O
导	O
人	O
第	O
十	O
四	O
次	O
峰	O
会	O
。	O

对于句子中出现多主语,多谓语,多宾语的情况,也可以照此进行标注,比如下面这句:

齐鹏飞同志任中共中国人民大学委员会常委、副书记。

形成的标注序列如下:

齐	B-OBJ
鹏	I-OBJ
飞	I-OBJ
同	O
志	O
任	O
中	B-SUBJ
共	I-SUBJ
中	I-SUBJ
国	I-SUBJ
人	I-SUBJ
民	I-SUBJ
大	I-SUBJ
学	I-SUBJ
委	I-SUBJ
员	I-SUBJ
会	I-SUBJ
常	B-PRED
委	I-PRED
、	O
副	B-PRED
书	I-PRED
记	I-PRED
。	O

对此,我们希望形成两个三元组,分别为:中共中国人民大学委员会–> 常委–> 齐鹏飞, 中共中国人民大学委员会–> 副书记–> 齐鹏飞。
  笔者利用自己的标注平台(后续会在 GitHub 开源),一共标注了 950 分语料,其中 80% 作为训练集,10% 作为验证集,另外 10% 作为测试集。当然,标注的过程是很痛苦的,这些标注量也还远远不够,后续会持续不断地更新。

模型训练

  由于是小样本量的标注数量,因此,在模型的选择上,需要预训练模型,笔者的预训练模型选择 BERT。在预训练的基础上,选择 BiLSTM+CRF 深度学习模型,对上述语料进行训练,共训练 100 次,在验证集和测试集上的效果如下:

验证集:

项目precisionrecallf1
全部71.08%78.27%74.50%
宾语78.95%88.24%83.33%
谓语68.00%74.56%71.13%
主语67.18%73.33%70.12%

测试集

项目precisionrecallf1
全部75.07%82.18%78.46%
宾语78.33%85.45%81.74%
谓语73.23%82.30%77.50%
主语73.88%79.20%76.45%

效果并没有达到很好,一方面是标注策略的问题,另一方面是标注的数量问题(因为这是一个通用模型),后续我们可以看看,当标注数量提上去后,模型训练的效果是否会有提升。

模型预测

  接着,我们利用刚才训练好的模型,对新的句子进行预测,记住,预测的级别为句子。当然,预测的结果,只是序列标注模型识别出的结果,我们还要采用一定的策略,将其形成三元组。比如以下的句子:

英媒称,美国农业部长桑尼·珀杜在 6 月 25 日播出的一个访谈节目中承认,美国农民是特朗普总统对华贸易战的“受害者”。

预测的结果如下:

[{‘word’: ‘美国’, ‘start’: 4, ‘end’: 6, ‘type’: ‘SUBJ’}, {‘word’: ‘农业部长’, ‘start’: 6, ‘end’: 10, ‘type’: ‘PRED’}, {‘word’: ‘桑尼·珀杜’, ‘start’: 10, ‘end’: 15, ‘type’: ‘OBJ’}, {‘word’: ‘美国’, ‘start’: 34, ‘end’: 36, ‘type’: ‘SUBJ’}]

可以看到,模型识别出主语为美国,谓语为农业部长,宾语为桑尼·珀杜,这是一个完美的三元组。

  我们再来对下面的语句进行预测:

6 月 25 日,华为常务董事、运营商事业部总裁丁耘表示,华为已在全球范围内获得 50 个 5G 商用合同,其中 2/3 是由华为协助其构建的。

预测结果为:

[{‘word’: ‘华为’, ‘start’: 6, ‘end’: 8, ‘type’: ‘SUBJ’}, {‘word’: ‘常务董事’, ‘start’: 8, ‘end’: 12, ‘type’: ‘PRED’}, {‘word’: ‘运营商事业部’, ‘start’: 13, ‘end’: 19, ‘type’: ‘SUBJ’}, {‘word’: ‘总裁’, ‘start’: 19, ‘end’: 21, ‘type’: ‘PRED’}, {‘word’: ‘丁耘’, ‘start’: 21, ‘end’: 23, ‘type’: ‘OBJ’}, {‘word’: ‘华为’, ‘start’: 26, ‘end’: 28, ‘type’: ‘SUBJ’}, {‘word’: ‘华为’, ‘start’: 54, ‘end’: 56, ‘type’: ‘SUBJ’}]

这就需要一定的策略,才能识别出具体的三元组了。笔者采用的策略如下:

  • 按主语,谓语,宾语进行归类,形成主体集合 {华为, 运营商事业部},谓语集合 {常务董事, 总裁} 以及宾语集合 {丁耘}
  • 接着,按照各个元素在句子出现的位置进行组合,比如 华为 的位置,离 常务董事 挨得近,那么形成一个三元组[‘华为’, ‘常务董事’, ‘丁耘’],同理,形成另一个三元组[‘运营商事业部’, ‘总裁’, ‘丁耘’];
  • 将句子按照逗号进行分割,形成 小句子集合,看三元组的三个元素是否都在一个小句子中,如果是,则提取该三元组,如果不是,则放弃该三元组。

关系抽取可视化

  对于关系抽取后的节后,我们将三元组导入至 Neo4J 中,查看可视化的效果。我们一共选择三篇文章进行测试,为了取得较好的效果,我们选择了程序处理 + 人工 check(过滤)的过程,稍微有点工作量。
  第一篇文章来自微信公众号,标题为:哈工大社会计算与信息检索研究中心(HIT-SCIR)拟于7月20日在哈工大举办首届事理图谱研讨会, 访问网址为:https://mp.weixin.qq.com/s/9H7rxsPdo5S5trwz_CASZw, 我们抽取出来的实体关系(带原文)如下:

原文,s,p,o
2017 年 10 月,研究中心主任刘挺教授在中国计算机大会(CNCC)上正式提出事理图谱的概念,2018 年 9 月,在研究中心丁效老师的主持下,研制出中文金融事理图谱 1.0 版本。,研究中心,老师,丁效
2017 年 10 月,研究中心主任刘挺教授在中国计算机大会(CNCC)上正式提出事理图谱的概念,2018 年 9 月,在研究中心丁效老师的主持下,研制出中文金融事理图谱 1.0 版本。,研究中心,教授,刘挺
2017 年 10 月,研究中心主任刘挺教授在中国计算机大会(CNCC)上正式提出事理图谱的概念,2018 年 9 月,在研究中心丁效老师的主持下,研制出中文金融事理图谱 1.0 版本。,研究中心,主任,刘挺
白硕(上海证券交易所前任总工程师,中科院计算所博导),上海证券交易所,前任总工程师,白硕
荀恩东(北京语言大学信息学院院长),北京语言大学信息学院,院长,荀恩东
赵军(中科院自动化所研究员),中科院自动化所,研究员,赵军
吴华(百度技术委员会主席),百度技术,主席,吴华
吴华(百度技术委员会主席),百度技术,委员,吴华
宋阳秋(香港科技大学助理教授),香港科技大学,助理教授,宋阳秋
李金龙(招商银行人工智能实验室负责人),招商银行人工智能实验室,负责人,李金龙
李世奇(北京西亚财信人工智能科技有限责任公司 CEO),北京西亚财信人工智能科技有限责任公司,CEO,李世奇

对于这篇文章,我们没有抽取出 李斌阳(国际关系学院副教授) 中的实体关系,并且 吴华(百度技术委员会主席 这句为抽取有误,正确的应为:百度技术委员会,主席,吴华。
  将上述关系修改下,导入至 Neo4J 中,得到的实体关系图如下:

  第二篇文章为凤凰网的新闻,标题为 南阳“水氢车”风波:一个中部城市的招商突围战,访问网址为:https://news.ifeng.com/c/7ntawxhCDvj ,我们抽取出来的实体关系(带原文)如下表:

原文,s,p,o
2017 年,因巴铁所属企业北京华赢凯来资产管理有限公司涉嫌非法集资活动,北京警方将“巴铁之父”白丹青依法刑拘。,巴铁,之父,白丹青
南阳“神车”下线之后,界面新闻约访南阳市委书记张文深,被告知张文深与市长双双出差,工作人员并不确定张文深何时回到南阳,他的手机则处于忙线状态。,南阳,市委书记,张文深
南阳洛特斯新能源汽车有限公司实际控制人庞青年说,水氢汽车并未下线,媒体的报道使他措手不及。,南阳洛特斯新能源汽车有限公司,实际控制人,庞青年
从 2006 年开始,前湖北工业大学学者董仕节带领的团队开始研发一项车载铝合金水解制氢技术,并获得国家 973 前期研究项目和国家自然基金的支持。,湖北工业大学,学者,董仕节
南阳市高新区投资公司负责人尹召翼在接受央视采访时表示,庞青年经常拿“水氢”来混淆“水解制氢”的概念。,南阳市高新区投资公司,负责人,尹召翼
南阳市招商局招商二科科长赵怿接受界面新闻采访时表示,他只知道这个项目不是招商科引进的。,南阳市招商局招商二科,科长,赵怿
庞青年告诉界面新闻,南阳市高新区投资有限公司已经为他提供了 9600 万元,用途是南阳高新区投资有限公司给南阳市洛特斯新能源汽车有限公司的注册资金,占股 49%。,南阳高新区投资有限公司,南阳市,洛特斯新能
曾先后在南阳市委党校、南阳市发改委任职的退休干部张一江(化名)说,“走工业突围道路的冲动在南阳早已有之,所以这几年的巴铁神车项目、加水就能跑的神车项目能被引进南阳,我觉得算不上奇怪。”,南阳市发改委,退休干部,张一江
以此次南阳神车项目为例,南阳市科技局局长张梅明确告诉界面新闻,庞青年的企业进入南阳时未有任何部门邀请科技局鉴别其“新能源技术”。,南阳市科技局,局长,张梅
官方报道显示,2012 年 6 月 18 日,一位时任南阳市委主要领导在南阳宾馆会见了青年汽车董事局主席庞青年一行,双方就如何发挥自身优势,谋求合作共赢进行了交流,“南阳的发展需要大项目的带动和支撑,我们欢迎中国青年汽车集团这样有实力、有影响的大企业来南阳投资兴业。,青年汽车,董事局主席,庞青年
早在当年 5 月,在第十九届中国北京国际科技博览会上,时任南阳市副市长郑茂杰与巴铁科技发展有限公司总工程师宋有洲签署战略合作协议。,巴铁科技发展有限公司,总工程师,宋有洲
早在当年 5 月,在第十九届中国北京国际科技博览会上,时任南阳市副市长郑茂杰与巴铁科技发展有限公司总工程师宋有洲签署战略合作协议。,南阳市,副市长,郑茂杰

对于这篇文章,我们没有抽取出一些关系,比如 南阳市发展和改革委员会主任乔长恩受访时承认,招商引入南阳洛斯特之前“掌握这个情况。” 等,并且 庞青年告诉界面新闻,南阳市高新区投资有限公司已经为他提供了9600万元,用途是南阳高新区投资有限公司给南阳市洛特斯新能源汽车有限公司的注册资金,占股49%。 这句为抽取有误,应当删除。
  将上述关系修改下,导入至 Neo4J 中,得到的实体关系图如下:

  最后一篇为长篇小说——著名作家路遥的《平凡的世界》第一部。利用我们的关系抽取模型,一共在该小说中抽取了 169 对实体关系,其中有效实体关系 100 对。由于我们在该小说中抽取的实体关系过多,因此只展示前 10 条原文及抽取的实体关系:

原文,s,p,o
每天来回二十里路,与他一块上学的金波和大队书记田福堂的儿子润生都有自行车,只有他是两条腿走路。,田福堂,儿子,润生
不过,他对润生的姐姐润叶倒怀有一种亲切的感情。,润生,姐姐,润叶
“金波是金俊海的小子。”,金俊海,小子,“金波
脑子里把前后村庄未嫁的女子一个个想过去,最后选定了双水村孙玉厚的大女子兰花。,双水村孙玉厚,大女子,兰花
玉亭是大队党支部委员、农田基建队队长、贫下中农管理学校委员会主任,一身三职,在村里也是一个人物。,贫下中农管理学校,主任,玉亭
玉亭是大队党支部委员、农田基建队队长、贫下中农管理学校委员会主任,一身三职,在村里也是一个人物。,农田基建队,队长,玉亭
玉亭是大队党支部委员、农田基建队队长、贫下中农管理学校委员会主任,一身三职,在村里也是一个人物。,大队,党支部委员,玉亭
会战总指挥是公社副主任徐治功,副总指挥是公社武装专干杨高虎。,公社,武装,杨高虎
会战总指挥是公社副主任徐治功,副总指挥是公社武装专干杨高虎。,公社,副主任,徐治功
这时候,双水村妇女主任贺凤英,正领着本村和外村的一些“铁姑娘”,忙碌地布置会场。,双水村,妇女主任,贺凤英
……

  将上述关系修改下,导入至 Neo4J 中,得到的实体关系图如下:

总结

本次关系抽取仅仅作为笔者的一次尝试,在实际的应用中还存在着许多的不足之处,比如:

  • 对语料的标注,是否可以采用其他更好的办法;
  • 作为通用模型,标注的数量还远远不够;
  • 模型的选择方面,是否可以其他更好的模型;
  • 对预测的结果,如何能更好地提取出三元组;
  • 将三元组扫入至图数据库中,能否做到实体对齐,且能做一些实体关系的分析与推理。
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【资源说明】 基于python实现的英雄联盟知识图谱问答系统源码+项目说明.zip 说明 - spider.py:爬取数据,可参考,但这里并没有使用。 - build_lol_graph.py:构建知识图谱 - question_classification:给定问题,识别里面的实体以及问题的类型。 - question_parser.py:根据问题类型生成neo4j的sql语句。 - answer_search.py:执行sql并构建返回的结果。 - chatbot_graph.py:程序的主入口。 # 依赖 ```python py2neo版本:py2neo-2021.2.3 neo4j版本:neo4j-4.4.5 ``` # 运行 在安装好neo4j之后,运行以下指令构建图谱: ```python python build_lol_graph.py ``` 然后运行以下指令进行问答: ```python python chatbot_graph.py ``` #### 结果 ```python 咨询:盖伦的种族 客服机器人: 盖伦的种族是:人类 咨询:盖伦的角色 客服机器人: 盖伦的角色是:战士 咨询:盖伦的介绍 客服机器人: 盖伦的介绍是:身为一位自豪而且高贵的士兵,盖伦奋战在无畏先锋的最前沿。他深受战友们的爱戴,也受到敌人们的尊敬——同样重要地,他还是冕卫家族的名门之后,肩负着守卫德玛西亚及其理念的重任。他身披抵御魔法的重甲,手持阔剑,时刻准备着用正义的钢铁风暴在战场上正面迎战一切操纵魔法的狂人。 咨询:盖伦的别称 客服机器人: 盖伦的别称是:德玛西亚之力 咨询:孙悟空的徒弟是谁 客服机器人: 孙悟空的徒弟是:易 咨询:德玛西亚区域有哪些英雄 客服机器人: 德玛西亚包含的英雄有:薇恩;嘉文四世;塞拉斯;加里奥;盖伦;菲奥娜;奎因;娑娜;凯尔;赵信;波比;希瓦娜;拉克丝;莫甘娜 咨询:德玛西亚有哪些风景 客服机器人: 德玛西亚的景色有:光明使者神殿;德玛西亚城的宏伟广场;英勇之厅;密银城;黎明城堡 咨询:具有徒弟关系的有哪些 客服机器人: 具有徒弟关系的有:孙悟空|易;布兰德|瑞兹;塔莉垭|亚索 咨询:德玛西亚的介绍 客服机器人: 德玛西亚的介绍是:德玛西亚是一个法理至上的强大王国,战功赫赫,久负盛名。德玛西亚人自古崇尚正义、荣耀和责任,近乎狂热地以自身的传统及底蕴为豪。然而,尽管秉持着这些高尚的原则,在过去的几百年间,刚愎自用的德玛西亚越发与世隔绝,成为了孤立主义的代名词。然而现在,王国中已经出现了变数。德玛西亚雄都以禁魔石——一种可以抑制魔法能量的白色岩石——为基,起初是符文战争之后为了躲避魔法侵害的人们所建立的庇护地。王权由中心向外辐射,守护着边远的城镇、农田、森林和矿产丰饶的山脉。然而,自从嘉文三世国王突然驾崩,各大家族至今仍未赞同他唯一的继承人嘉文王子继位。在王国眼中,重兵把守的边境之外已经是异心遍起,许多原先的附庸在乱世来临之际开始寻求来自别处的庇护。有人私下妄言,德玛西亚的黄金时代已经一去不返,除非臣民能够上下一心,顺应时代的变化——许多人认为他们并没有这样的能力,否则王国的衰败在所难免。再多的禁魔石,也无法阻止德玛西亚由内而外的覆灭。 ``` 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
### 回答1: Python 三元组图谱是一种用于描述实体间关系的数据结构。它由三元组构成,每个三元组由主体(subject),谓词(predicate)和客体(object)组成。 主体表示一个实体,在三元组中通常是一个名称、标识符或者唯一的值,用来指代一个具体的对象或概念。谓词表示主体与客体之间的关系或属性,可以是一个动作、行为、状态或特征。客体则是与主体相关的对象、属性或值。 Python 三元组图谱的应用非常广泛。例如,它可以被用于建立知识图谱,通过将实体和关系以三元组的形式记录下来,用来表示实体间的语义关联。另外,它也可以用于信息抽取、自然语言处理、推荐系统等领域,用来从大规模文本数据中抽取并表示实体间的关系。 在Python中,我们可以使用多种库和工具来处理三元组图谱,例如RDFlib、SPARQLWrapper等。这些工具提供了创建、存储、查询和可视化三元组图谱的功能,方便我们进行各种图谱相关的操作。 总结来说,Python 三元组图谱是用于描述实体间关系的一种数据结构,它由主体、谓词和客体组成。通过使用Python中的库和工具,我们可以方便地创建、存储、查询和可视化三元组图谱,应用于知识图谱、信息抽取、自然语言处理等领域。 ### 回答2: Python三元组图谱是指使用Python语言来构建、操作和查询的三元组图谱。三元组图谱是一种用于存储和表示实体之间关系的数据结构,它由三个部分组成:主体、谓词和客体。主体代表一个实体,谓词表示实体之间的关系类型,客体表示与主体有关系的另一个实体。 使用Python语言构建三元组图谱可以借助图数据库或者专门的图计算库,比如NetworkX。通过Python提供的数据结构和算法库,可以轻松地创建、修改和查询三元组图谱。 在构建三元组图谱时,首先需要定义实体以及实体之间的关系。然后,可以将这些实体和关系以三元组的形式存储在图数据库中。Python可以提供一些工具和技术来操作和查询三元组图谱,比如通过遍历、检索和过滤来查询特定的关系和实体。此外,还可以使用Python的可视化库,比如matplotlib和Plotly,将三元组图谱可视化展示出来,以便更直观地理解和分析实体之间的关系。 总之,Python三元组图谱是一种使用Python语言构建的数据结构,用于存储和表示实体之间关系的图形化模型。通过Python的图数据库和图计算库,可以方便地构建、操作和查询这些三元组图谱,从而实现对实体之间关系的分析和探索。 ### 回答3: Python三元组图谱是一种用来表示和存储知识的数据结构。三元组由主体、谓词和客体组成,分别表示三个实体之间的关系。在Python中,我们可以使用元组来表示三元组,例如(主体,谓词,客体)。 三元组图谱被广泛应用于知识图谱领域,能够帮助我们建立和组织大量的知识,并通过分析和推理来获取新的知识。它可以用于构建专家系统、自然语言处理、数据挖掘以及人工智能等领域。 在Python中,我们可以使用多种方式来处理和操作三元组图谱。例如,我们可以使用列表或字典来存储和查询三元组。通过遍历和搜索,我们可以根据主体、谓词或客体来检索相关的三元组。同时,我们还可以使用图数据库来更高效地存储和处理三元组图谱。 Python也提供了一些开源的图谱库和工具,例如RDflib和NetworkX,可以帮助我们更轻松地处理和分析三元组图谱。这些库提供了丰富的功能,如读取和写入三元组数据、进行图形分析和可视化、执行语义推理等。 总而言之,Python三元组图谱是一个强大的知识表示和存储方式,可以帮助我们构建复杂的知识体系并进行知识推理和分析。它在人工智能和数据挖掘等领域有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值