知识图谱和大语言模型的共存之道

导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力,知识图谱则丰富了表示知识的方式,两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下,OpenKG组织新KG视点系列文章——“大模型专辑”,不定期邀请业内专家对知识图谱与大模型的融合之道展开深入探讨。本期特别邀请到东南大学漆桂林教授、南京柯基数据科技有限公司杨成彪(CTO)和吴刚(CEO)等分享“知识图谱和大语言模型的共存之道”。

分享嘉宾 | 漆桂林(东南大学),杨成彪(南京柯基数据科技有限公司),吴刚(南京柯基数据科技有限公司)

笔记整理 | 邓鸿杰(OpenKG)


自从2022年11月30日OpenAI公司推出ChatGPT以来,大语言模型(Large Language Model)受到了学术界和业界的广泛关注,由于ChatGPT在语言理解和知识问答方面的优异表现,大语言模型被认为具备记忆和应用世界知识(world knowledge)的能力,这就使得有一些观点认为另外一种世界知识的表示和推理模型知识图谱(Knowledge Graph)将要被以ChatGPT为代表的大语言模型所取代。关于知识图谱是否会被大模型取代这个话题,已经有一些学者做出过回应[Yang 2023] [Pan 2023] [Suchanek  2023],同时也有一些评测论文讨论ChatGPT和GPT4的知识问答能力[Tan 2023]。为了更好地理解大模型跟知识图谱的关系,我们需要先了解一下大语言模型和知识图谱的历史,然后我们讨论一下大语言模型和知识图谱作为知识库(Knowledge Base)的优缺点,从而得出大语言模型和知识图谱不是互相替代,而是相互依存的关系这一结论,最后我们讨论大语言模型和知识图谱如何从知识库服务平台的角度融合。

01

知识图谱和大语言模型的历史

回顾人工智能的历史我们会发现,知识图谱和大语言模型有着极深的渊源。知识图谱来源于语义网络(Semantic Network)[Sowa, 1991],而大语言模型是来源于神经网络(Neural Network)[Anderson 1995],两种都是基于图的表示方法。一般认为,以知识图谱为代表的符号化知识表示方法更适合表示需要精确化描述的知识和支撑需要可靠而且完备的推理(这一学派被称为符号主义),而以神经网络为代表的参数化知识表示方法更适合表示非精确描述的知识和进行非精确的推理(这一学派被称为连接主义)。

986107eefd3a26df0a4f6b7b7de285a1.png

图1

那么什么是知识呢,根据牛津字典,知识是通过经历或者教育获取的事实、信息或者技巧或者技巧。举例来说,“南京位于江苏”是一类事实性知识,新闻文本是一类描述性知识,而开酒瓶的技能是一类技能类知识。人类可以通过视觉、语言、教育或者实践和推理等方式获取知识。

知识图谱是一种采用图模型(即由点和线组成的图形)来对人类知识进行表示的知识库或者知识的集合。

e1ee32d9efafa7c4d79cbc99ac5126a4.png

图2

比如说<南京, 位于, 江苏>就是一条知识,对应到图谱中就是以南京和江苏为节点,位于为标签的边。

神经网络可以用于存储知识,但是这类知识是以参数的形式存在于神经网络,无法直观看到。

6525a60ea1d696eb2c14e53dff5b77e8.png

图3

在文献[Petroni 2019]中,作者提出了一个观点,即语言模型可以作为知识库(Language Model as Knowledge Bases),并且给出了一个从语言模型中提取事实性知识的方法(见图3)。更多语言模型作为知识库的工作综述可以参考[AlKhamissi 2022]。

56a1c5e92a89aeb1b7f50313a01f5bbc.png

图4

图4给出了知识图谱的历史发展,可以看出,知识图谱是起源于语义网络,并且跟语义网(Semantic Web)有着极深的渊源。知识图谱采取了语义网络的图表示方法,同时参考了语义网的标准化语言RDF和OWL,从而具有严格的逻辑语义支撑,可以确保从知识图谱中查询得到的结果是正确的。同时知识图谱可以跟专家系统中的规则引擎结合用于企业应用中的决策支持类任务。

910eb30c4baa835969437bfba9459a89.png

图5

再来看看大模型的历史发展, 1958年Rosenblatt提出了感知机,从而为神经网络的发展奠定了基础,但是由于感知机无法解决异或(XOR)等线性不可分问题,导致神经网络的研究不受重视。80年代,随着多层感知机和反向传播算法的应用,神经网络开始得到快速发展,并且跟专家系统一起使得人工智能进入了一个高潮时期。1998年和2012年LSTM和AlexNet的提出让神经网络具备了更好的实用性,特别是AlexNet在ImageNet 大规模视觉识别挑战赛取得优异成绩,AlexNet的成功引领了深度学习的浪潮。2017年,基于注意力机制的的深度神经网络模型Transformer被提出,并且很快就在自然语言处理和计算机视觉中被广泛应用。Transformer开启了预训练模型的大门,之后2018年BERT和GPT-1都是基于Transformer提出的预训练语言模型,而GPT-1最终演化成了GPT-3,ChatGPT和GPT-4。

纵观知识图谱和大语言模型的发展历史,我们可以发现,以知识图谱为代表的符号主义和以ChatGPT为代表的连接主义在人工智能的发展历史上具有举足轻重的地位。人工智能的三次发展高潮,都是跟符号主义和连接主义同时发力有关,即第一次人工智能发展高潮中的感知机和语义网络,第二次人工智能发展高潮中的多层神经网络和专家系统,第三次人工智能发展高潮中的深度学习(以及之后的大语言模型)和知识图谱。

02

知识图谱和大语言模型作为知识库的优缺点

知识图谱和大语言模型都可以作为知识库,并且都可以通过自然语言方式进行访问,但是两者在知识表示方面的差异使得它们在知识检索和查询、知识可视化、知识推理支持等方面有较大差异。下面就从知识问答的角度来分析一下知识图谱和大语言模型的优缺点。

1、从问答的形式来看,知识图谱和大语言模型都支持自然语言的方式进行查询,但是存在以下差异:

(1)基于知识图谱的问答系统对于自然语言问句的解析存在困难,这是因为需要先将自然语言问句转化成一个结构化查询语言,即SPARQL,但是现有的算法在做转化的时候需要大量的标注数据进行训练,从而很难应对用户千变万化的问法。

(2)大语言模型不仅仅是一个知识库,还是一个神经网络模型,所以可以直接对自然语言进行理解,将一个自然语言问句进行解析并且自动生成答案,在这个过程中基本上不需要人类的参与,所以大语言模型在问答形式方面泛化能力更强,语言解析能力更强,用户体验更好。

2、从知识库包含的知识量来看,现有的知识图谱虽然包含了大规模的常识和领域知识,但是规模跟大模型相比不是一个数量级。比如说,著名的大规模开放知识图谱WikiData[Tanon 2016]目前包含的三元组数量级为亿级别,主要的知识来源是维基百科的Inforbox和一些半结构化数据,互联网和各种书籍、论文中包含的文本数据并没有有效利用起来,这是因为知识图谱的构建需要做好质量控制,而采取信息抽取的方法从开放域抽取结构化知识往往质量低下,所以WikiData的数据来源主要还是结构化和半结构化数据,这就使得WikiData的知识量跟ChatGPT这样的大语言模型相比要小很多。

3、从知识的质量来看,知识图谱的构建有一套严格的质量控制流程,首先,现有企业知识图谱构建大部分是基于数据库的结构化数据,这些数据经过了大数据平台处理后质量非常高,再经过知识图谱平台可以在保持质量的情况下转成大规模知识图谱,对于非结构化数据,随着信息抽取技术的进步,从文本、图像、视频中抽取三元组数据的质量比较高,再经过众包等方式对抽取后的知识进行加工才能进入知识库,所以企业知识图谱的质量是有保障的。其次,对于开放的知识图谱,比如说WikiData,绝大多数的知识来源于维基百科的Infobox以及人类编辑,在此基础上还有利用规则和冲突检测方法来进一步提高知识图谱质量的技术[Tanon 2019]。相比而言,以ChatGPT为代表的大语言模型虽然在知识数量级上超过了大规模知识图谱,但是知识库的质量是一个大问题,这是因为大语言模型的知识获取过程是一个黑盒方式,容易受到训练语料质量的影响,即便是通过人类反馈技术(如RLHF[Ouyang 2022])和知识编辑[Cao 2021]技术提升质量,由于大语言模型的黑盒属性,整体质量相比大规模知识图谱有一定差距。

2ef200d45b516132b397b59fd65c1dfc.png

图6

在百科中已有的一些知识,通过知识图谱很容易得出正确的回答,但是对于大模型来说要准确学到则是非常困难。如图6所示,当提问ChatGPT“李鸿章的儿子的后代有哪些“,给出的回答是错误的,但是,如果我们有一个包含李鸿章的人物图谱,那么基于知识图谱的问答系统可以给出正确的答案,并且给出可视化的解释(见图7)。

4b6617b960cc9dc696320e5edd333644.png

图7

4、从知识问答的准确性和可解释性来看,基于知识图谱的问答系统虽然在语言解析的泛化性方面不如大语言模型,而且由于知识量的限制,很多问题无法回答,但是在知识问答的准确性方面要优于大语言模型。文献[Tan 2023]给出了基于知识图谱的问答系统和大语言模型的一个详细对比,在这个论文中,我们评估了ChatGPT及其LLM家族在八个真实世界基于KB的复杂问题回答数据集上的表现,其中包括六个英文数据集和两个多语言数据集,测试用例的总数约为190,000。为了凸显测试问题的复杂性和测试数据集的广泛性,在仔细考虑后,我们选择了六个代表性的英文单语KBQA数据集和两个多语言KBQA数据集进行评估。这些数据集包括经典数据集,如WebQuestionSP [51],ComplexWebQuestions [43],GraphQ [42]和QALD-9 [24],以及新提出的数据集,如KQApro [5],GrailQA [12]和MKQA [22]。由于OpenAI API的限制,我们对一些数据集进行了抽样,如按答案类型抽样的MKQA和仅使用测试集的GrailQA。

b95eb8fb4a05c3aee71e849e5e1f31e4.png

表1

表1中呈现了总体结果。首先,单语QA测试中,GPT-4模型在2018年之前的数据集上的表现基本优于传统SOTA模型,但在2018年后的新数据集上相比传统KBQA模型还有显著差距。多语言QA测试中,经典数据集QALD-9的SOTA模型显著优于LLM,但2021年提出的MKQA数据集上,GPT-4则实现了对SOTA模型的显著超越。其次,比较GPT家族中的模型,新模型的性能如预期般优于前一代。

d5d77a5e53758f7503e8d70c03bd6620.png

表2

我们在表2中进一步呈现了LLMs在多语言QA上的性能。尽管随着GPT家族持续迭代,模型回答不同语言问题的能力呈现出整体上的改善趋势,但我们观察到GPT-4在四种语言上均未超过ChatGPT。这表明GPT的多语言能力的演变可能开始放缓。

5、从知识更新的角度来看,由于知识图谱采用了图的表示,知识更新可以通过图上的节点和边的插入、删除和修改操作完成,难点在于如何检测到新的插入节点,节点插入到图中哪个位置,插入后是否会导致逻辑冲突等[Qi 2015] [Wu 2020],这些符号化的操作比较直观,而且可以利用逻辑推理机来辅助,从而确保更新后图谱的质量可以得到保障。相比而言,大语言模型在知识更新方面的能力一直被诟病,比如说ChatGPT刚刚出来的时候,只能回答2021年之前的知识类问题,因为ChatGPT没有采用2021年之后的数据进行训练,而用新的数据训练成本非常高。跟知识图谱采取图操作相比,对大语言模型进行更新需要耗费大量的服务器资源,如果是频繁更新,大语言模型付出的代价远远超过知识图谱。

87520c84b04859e0fe709d7421a5f921.png

图8

图8给出了一个ChatGPT对最新发生的一个事件的示例,从这个示例可以看出,ChatGPT对于新发生的事是没有更新的,而且到现在还会提到自己所知的知识截止2021年9月。但是,如果采用知识图谱平台,这一问题可以得到精确回答,而且可以给出可视化解释。值得注意的是,知识图谱的更新成本要远远低于大语言模型的更新成本。

29084f65e947bd72261790370ddd6caf.png

图9

03

知识图谱和大语言模型双知识平台融合

根据前面的讨论我们知道,知识图谱和大语言模型都可以看出是知识库,前者是符号化的知识库,而后者则是参数化的知识库,一个自然的问题就是,这两种知识库怎么融合。有一些工作从知识图谱和大语言模型技术角度对知识图谱和大语言模型如何进行融合进行了讨论[Pan 2023] [陈2023],下面我们从知识图谱平台的角度来讨论知识图谱跟大语言模型如何融合。

首先,知识图谱平台如何增强大语言模型平台呢?

  • 知识图谱平台可以通过人机交互创建和推理高质量知识(比如说处理知识的逻辑冲突),并且通过知识增强的方法用于增强大语言模型。

  • 知识图谱平台可以表示和生成思维链,通过结构化更好的思维链提升大模型的推理能力。

  • 知识图谱平台可以用于解决大模型不擅长解决的问题,比如说上下文知识遗忘、复杂知识推理、知识可视化、关联分析和决策类任务。

其次,大语言模型平台如何增强知识图谱平台呢?

  • 大语言模型作为一种基础模型,为知识图谱平台的知识获取自动化提供了有效的解决方案。

  • 知识图谱的表示学习和推理(比如说KG embedding和部分的ontology reasoning)可以基于大模型完成,即知识图谱的表示学习和大语言模型的表示学习互相增强。

  • 本体和规则的学习可以通过大模型平台实现高度自动化(还是需要引入人机交互来更好实现)。

最后,知识图谱平台和大语言模型平台如何协同完成复杂知识处理任务?

  • 大语言模型平台可以利用知识图谱平台生成的符号化知识对企业中的各种知识进行集成,对大语言模型平台的指令进行分解,完成复杂任务(比如说微软Office 365 Copilot)。

  • 知识图谱平台和大语言模型平台协同完成复杂问题的知识问答,这里可以发挥大语言模型的语义理解能力和知识量大的优势,同时发挥基于知识图谱的问答系统的知识精确性和答案可解释性的优势。

  • 知识图谱平台用于沉淀大模型平台中任务驱动的关键知识,用于完成需要精确、可解释的问答和行动。

aa10c7c363a09c5b1f60360d5bae57e1.png

图10

图10给出了一个知识图谱平台的架构图,包括数据处理层、平台层、知识处理层和应用层。数据处理层利用知识获取组件和知识接入组建处理结构化、半结构化和非结构化数据,形成三元组知识;平台层对数据和知识进行运维和管理(数据融合、运维和任务管理);知识处理层对数据处理层和平台层处理的知识进行质量评估和知识融合;应用层则是利用知识图谱来支撑各种应用,比如说关联分析和智能问答。

e08b6fa2318e7430706d4407655b3e3a.png

图11

参考图10的知识图谱平台设计,图11给出了我们设计的一个知识图谱和大语言模型融合的双知识服务平台架构。从这个架构中我们可以清晰地看出大语言模型跟知识图谱的核心技术具有惊人的相似性:大语言模型的预训练跟知识图谱的知识建模相似,都需要人工整理和理解数据,但是也可以通过某种自动化方式提升效率;监督微调跟知识抽取对应,都是用于从数据中提取知识,只不过大语言模型利用微调提取的知识存储与神经网络;大语言模型跟知识图谱一样需要做知识更新和融合,大语言模型的推理对应于知识图谱的知识计算。另外,大模型和知识图谱都需要考虑知识管理,而且都需要考虑知识众包、知识质量评估、知识链接等。

从图11还可以看出,知识图谱构建成本可以通过大语言模型得到极大的降低,大语言模型可以提升知识自动建模的效率(具体方法可以参考[Giglou 2023]),可以为知识抽取生成标注数据,利用大语言模型的知识理解能力,可以设计通用信息抽取方法,利用一个模型抽取实体、关系、属性值、事件,大语言模型还可以做零样本知识生成,利用通用信息抽取得到的三元组,通过人工校对形成大标注数据还可以用于训练监督模型,大语言模型可以有助于提升知识融合的自动化[Zhang 2023]与冲突解决[Wang 2023],并且大模型可以有助于知识图谱的知识表示学习[Pan 2023]。另外,知识图谱可以为大语言模型提供语料生成,Prompt增强和推理增强。

反之,知识图谱可以为大语言模型提供知识增强、推理增强和知识检索等能力提升。在监督微调阶段,可以通过KG2Instruction技术将知识图谱的转化成指令用于微调,还可以通过OntoPrompt将本体用于提示微调[Ye 2022];在知识融合和更新阶段,可以通过知识图谱的三元组对大语言模型进行编辑从而实现知识更新[Cao 2021],并且可以将大语言模型跟知识图谱通过表示学习进行融合[Nayyeri  2023],以及将一个大模型的知识迁移给另外一个大模型[Choi 2022];在模型推理阶段,可以通过知识图谱生成提示[Chen 2022]或者指令[Du, 2022]用于增强模型的推理能力。

大语言模型和知识图谱作为知识库都需要运维管理,两者都会涉及到API开放、数据管理和知识质量评估。如何评估一个大模型的内容生成质量,关系到大模型能否落地[Chang 2023],而知识图谱有比较完善的质量控制体系[Wang 2021]。另外,大语言模型和知识图谱的管理都涉及到知识众包的工作,从而提升模型训练的质量和知识图谱构建的质量。

04

总结与展望

大语言模型的出现打开了通用人工智能的大门,而且令人惊叹的是,大语言模型学习了人类的知识,并且可以利用这些知识来解决问题。人工智能发展到现在,一直想做的事就是让机器能够跟人类一样学习海量知识,这就是“知识工程”提出的目标,之后知识工程专家们孜孜不倦地努力构建了不少“大规模”知识库,比如说wordnet, wikidata,这些开放知识库对于人工智能的成功起到了很好的促进作用,但是还不是实际意义的大知识,而以ChatGPT为代表的大语言模型的出现改变了这个现状。但是大语言模型作为一个知识库存在很多问题,比如说知识质量问题、问答精确度不足和不可解释问题,如果跟知识图谱或者其他符号化知识结合,将有无限想象空间,人工智能将进入真正的大知识时代。为了实现这一目标,我们认为融合知识图谱平台和大语言模型平台势在必行,并且基于一个已经落地的知识图谱平台架构,提出了一个可能的知识图谱和大语言模型的融合框架,希望可以对新一代知识工程的发展起到一点微薄之力。

参考文献

[Anderson 1995] James A. Anderson, An Introduction to Neural Networks, The MIT Press,1995.

[AlKhamissi 2022] Badr AlKhamissi, A Review on Language Models as Knowledge Bases,arXiv:2204.06031 [cs.CL],2022.

[陈2023] 陈华钧. 大模型时代的知识图谱技术栈. 中国计算机学会通讯. 19卷9期. 2023。

[Chang 2023] Yupeng Chang, et.al., A Survey on Evaluation of Large Language Models, arXiv:2307.03109 [cs.CL], 2023.

[Chen 2022] Xiang Chen, Ningyu Zhang, Xin Xie, Shumin Deng, Yunzhi Yao, Chuanqi Tan, Fei Huang, Luo Si, Huajun Chen: KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction. WWW 2022: 2778-2788

[Choi 2022] Dongha Choi, HongSeok Choi, Hyunju Lee, Domain Knowledge Transferring for Pre-trained Language Model via Calibrated Activation Boundary Distillation, Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (ACL), 2022.

[Cao 2021] Nicola De Cao, Wilker Aziz, Ivan Titov, Editing Factual Knowledge in Language Models, Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2021.

[Du, 2022] Haowei Du, et.al., Knowledge-Enhanced Iterative Instruction Generation and Reasoning for Knowledge Base Question Answering, In Proceeding of 2022 CCF International Conference on Natural Language Processing and Chinese Computing (NLPCC), 2022.

[Giglou 2023] Hamed Babaei Giglou,et.al., LLMs4OL: Large Language Models for Ontology Learning, arXiv:2307.16648 [cs.AI], 2023.

[Nayyeri 2023] Mojtaba Nayyeri, et.al. Integrating Knowledge Graph embedding and pretrained Language Models in Hypercomplex Spaces, In Proceedings of the 22nd International Semantic Web Conference (ISWC), 2023.

[Ouyang 2022] Long Ouyang, et al, Training language models to follow instructions with human feedback. arXiv preprint arXiv:2203.02155, 2022.

[Pan 2023] Shirui Pan, et.al., Unifying Large Language Models and Knowledge Graphs: A Roadmap, arXiv:2306.08302 [cs.CL], 2023.

[Petroni 2019] Fabio Petroni, et.al., Language Models as Knowledge Bases? Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP), 2019.

[Qi 2015] Guilin Qi, Zhe Wang, Kewen Wang, Xuefeng Fu, Zhiqiang Zhuang: Approximating Model-Based ABox Revision in DL-Lite: Theory and Practice. Proceedings of the 29th Conference on Artificial Intelligence (AAAI), 254-260, 2015.

[Suchanek 2023] Fabian M. Suchanek, Anh Tuan Luu, Knowledge Bases and Language Models: Complementing Forces, Proceeding of International Joint Conference on Rules and Reasoning  (RuleML+RR), 2023.

[Sowa, 1991] J. F. Sowa: Principles of Semantic Networks: Exploration in the Representation of Knowledge, Morgan Kaufmann Publishers, INC. San Mateo, California, 1991.

[Tan 2023] Yiming Tan, et.al., Can ChatGPT Replace Traditional KBQA Models? An In-depth Analysis of the Question Answering Performance of the GPT LLM Family, Proceedings of the 22nd International Semantic Web Conference (ISWC), 2023.

[Tanon 2016] Thomas Pellissier Tanon, Denny Vrandecic, Sebastian Schaffert, Thomas Steiner, Lydia Pintscher: From Freebase to Wikidata: The Great Migration. Proceedings of 25th International World Wide Web Conference (WWW), 1419-1428, 2016

[Tanon 2019] Thomas Pellissier Tanon, Camille Bourgaux, Fabian M. Suchanek:

Learning How to Correct a Knowledge Base from the Edit History. Proceedings of 28th International World Wide Web Conference (WWW),  1465-1475, 2019.

[Wang 2021] Xiangyu Wang, et.al., Knowledge graph quality control: A survey, Fundamental Research, Vol.1(5), 2021.

[Wang 2023] Keyu Wang, et.al., An Embedding-based Approach to Inconsistency-tolerant Reasoning with Inconsistent Ontologies, arXiv:2304.01664 [cs.AI], 2023.

[Wu 2020] Tianxing Wu, Haofen Wang, Cheng Li, Guilin Qi, Xing Niu, Meng Wang, Lin Li, Chaomin Shi: Knowledge graph construction from multiple online encyclopedias. World Wide Web 23(5): 2671-2698 (2020)

[Yang 2023] Linyao Yang, et.al., ChatGPT is not Enough: Enhancing Large Language Models with Knowledge Graphs for Fact-aware Language Modeling, arXiv:2306.11489 [cs.CL], 2023.

[Ye 2022] Hongbin Ye,et.al., Ontology-enhanced Prompt-tuning for Few-shot Learning. Proceedings of the ACM Web Conference (WWW), 778-787, 2022.

[Zhang 2023] Rui Zhang, et.al., AutoAlign: Fully Automatic and Effective Knowledge Graph Alignment enabled by Large Language Models, arXiv:2307.11772 [cs.IR], 2023.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/594358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft Remote Desktop Beta for Mac:远程办公桌面连接工具

Microsoft Remote Desktop Beta for Mac不仅是一款远程桌面连接工具&#xff0c;更是开启远程办公新篇章的利器。 它让Mac用户能够轻松访问和操作远程Windows计算机&#xff0c;实现跨平台办公的无缝衔接。无论是在家中、咖啡店还是旅途中&#xff0c;只要有网络连接&#xff0…

如何使用DEEPL免费翻译PDF

如何使用DEEPL免费翻译PDF 安装DEEPL取消PDF限制 安装DEEPL 安装教程比较多&#xff0c;这里不重复。 把英文pdf拖进去&#xff0c;点翻译&#xff0c;在下面的框中有已经翻译完毕的文档。 但是存在两个问题 问题1&#xff1a;这些文档是加密的。 问题2&#xff1a;带有DeepL标…

Golang | Leetcode Golang题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; func climbStairs(n int) int {sqrt5 : math.Sqrt(5)pow1 : math.Pow((1sqrt5)/2, float64(n1))pow2 : math.Pow((1-sqrt5)/2, float64(n1))return int(math.Round((pow1 - pow2) / sqrt5)) }

Java基于Spring Boot框架的课程管理系统(附源码,说明文档)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

【微服务】分布式事务(通过Seata解决分布式事务问题)

分布式事务 分布式事务Seata微服务集成SeataXA模式XA模式使用 AT模式AT模式实现 分布式事务 在分布式系统中&#xff0c;如果一个业务需要多个服务合作完成&#xff0c;而且每一个服务都有事务&#xff0c;多个事务必须同时成功或失败&#xff0c;这样的事务就是分布式事务&am…

解决Maven本地仓库存在依赖包还需要远程下载的问题

背景 公司有自己maven私服&#xff0c;正在在私服可以使用的情况&#xff0c;打包是没问题的。但是这次是由于公司大楼整体因电路检修而停电&#xff0c;所有服务器关机&#xff0c;包括maven私服服务器。然后当天确有一个包需要打&#xff0c;这个时候发现死活打不了&#xf…

自然语言处理(NLP)原理、用法、案例、注意事项

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;领域的一个重要分支&#xff0c;旨在让计算机能够理解、理解和生成人类语言。 NLP的原理是基于统计建模和机…

list 的模拟实现

目录 1. list 的实现框架 2. push_back 3. 迭代器 4. constructor 4.1. default 4.2. fill 4.3. range 4.4. initializer list 5. insert 6. erase 7. clear 和 destructor 8. copy constructor 9. operator 10. const_iterator 10.1. 普通人的处理方案 10.2. …

物联网小demo

机智云生成代码 具体参考之前的文章 初始化 ADC用来使用光敏电阻 连续采样开启 采样的周期调高 定时器 定时器1用来实现延时 为了只用温湿度模块DHT11 定时器4用来和51进行交互 实现定时的发送和检测心跳信号 IIC 用来使用oled屏幕 USART 串口1和串口2是机智云自己…

Linux —— 信号初识

Linux —— 信号初识 什么是信号测试几个信号signal函数函数原型参数说明返回值注意事项示例 后台程序前台转后台检测输入中断向量表 我们今天来继续学习Linux的内容&#xff0c;今天我们要了解的是Linux操作系统中的信号&#xff1a; 什么是信号 信号是操作系统内核与进程之…

Hash Function(fft)

链接&#xff1a;H-Hash Function_2024牛客五一集训派对day4 (nowcoder.com) 题意&#xff1a;给定一个序列&#xff0c;求使得任意两数的hash值不同的最小模数&#xff1b; 分析&#xff1a;ab(mod seed) |a-b|%seed0; 也就是说seed不能是任意两数差的因子。 如果暴力求解…

【大麦小米学量化】使用Python读写通达信自选股(含代码转换及完整源代码),想要通过通达信自选股实现量化自动关联交易的有福了

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、通达信自选股文件所在位置二、通达信自选股文件数据结构三、使用Python读写通达信自选股文件&#xff08;附完整源代码&#xff09;1. 切换目录路径2. 将li…

4月30日重庆某厂酸碱管道整改工作汇报-智渍洁

时间:2024.4.30 地点:******老厂酸碱管道整改 施工人员:王成、汪勇、郭建华 事项:老厂酸碱管道更换 完成进度100%酸碱管道支架以添加完成&#xff01;碱管道保温已完成&#xff01; 1吨桶未完成2主水管漏水未处理&#xff0c;3酸 水泵需更换全新4室内少许添加活未完成。 4月30日…

精析React与Vue架构异同及React核心技术——涵盖JSX、组件、Props、State、生命周期与16.8版后Hooks深化解析

React&#xff0c;Facebook开源的JavaScript库&#xff0c;用于构建高性能用户界面。通过组件化开发&#xff0c;它使UI的构建、维护变得简单高效。利用虚拟DOM实现快速渲染更新&#xff0c;适用于单页应用、移动应用&#xff08;React Native&#xff09;。React极大推动了现代…

2-qt之信号与槽-简单实例讲解

前言、因实践课程讲解需求&#xff0c;简单介绍下qt的信号与槽。 一、了解信号与槽 怎样使用信号与槽&#xff1f; 概览 还记得 X-Window 上老旧的回调函数系统吗&#xff1f;通常它不是类型安全的并且很复杂。&#xff08;使用&#xff09;它&#xff08;会&#xff09;有很多…

Redis-分片机制

概述 业务需要&#xff1a;由于单台redis内存容量是有限的&#xff0c;无法实现海量的数据实现缓存存储 概念&#xff1a;由多个redis节点协助工作的机制就是redis的分片机制 作用&#xff1a;为了实现redis扩容 特点&#xff1a;分片机制把该机制中包含的多台redis缓存服务…

RK3568 学习笔记 : u-boot 下通过设置 env ethact 设置当前工作的以太网设备

前言 正点原子 &#xff1a;RK3568 开发板 atompi-ca1 默认有两个网口&#xff0c;通过 u-boot mii 命令&#xff0c;可以查看 网口信息 > mii device MII devices: ethernetfe010000 ethernetfe2a0000 Current device: ethernetfe010000u-boot 下的以太网&#xff0c;不同…

如何为 Nestjs 编写单元测试和 E2E 测试

前言 最近在给一个 nestjs 项目写单元测试&#xff08;Unit Testing&#xff09;和 e2e 测试&#xff08;End-to-End Testing&#xff0c;端到端测试&#xff0c;简称 e2e 测试&#xff09;&#xff0c;这是我第一次给后端项目写测试&#xff0c;发现和之前给前端项目写测试还…

UDP 的报文结构

一.UDP的报文结构 1.UDP的简单介绍 UDP是传输层协议&#xff0c;它是无连接,不可靠传输,面向数据报,全双工 1.无连接&#xff1a;UDP是一种无连接的传输协议&#xff0c;通信双方不需要在发送数据之前建立连接。相比之下&#xff0c;TCP是面向连接的协议&#xff0c;在传输数…

【除了协程还有哪些方式可以实现异步编程】

在Unity中&#xff0c;除了使用协程实现异步编程外&#xff0c;还有以下几种方法&#xff1a; 异步加载资源&#xff1a; 使用UnityWebRequest类进行异步加载资源&#xff0c;这在加载网络资源或动态加载资源时非常有用。 using UnityEngine; using UnityEngine.Networking;…