论文浅尝 | 开放知识图谱构建必读:封闭域VS开放知识抽取与4大类开放抽取常用方法概述...

转载公众号| 老刘说NLP


最近社区抛出一个关于开放知识抽取的话题,也是当前知识图谱构建的一个热点,希望能够介绍相关的工作,而在之前也做过一些工作,借着这个机会,写一篇文章,来跟大家谈谈这个问题。

开放知识抽取是目前比较有趣的问题,在前面的文章《知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读》中,我们围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,如下图是关于opnie的一个例子。

b96967862f4e13277f109de9ba15b87f.png

不过,就封闭域知识抽取与开放知识抽取而言,其在实现方式、落地价值上存在着差异性,就开放域抽取而言,特点是不限定关系类别、不限定目标文本,难点在于如何获取训练语料、如何获取实体关系类别、如何针对不同类型目标文本抽取关系。

因此,带着这些问题,我们先介绍从封闭域知识抽取和开放知识抽取的异同进行对比,然后介绍目前开放知识抽取的主流做法,包括基于规则的,基于生成的、基于序列标注的以及基于分类的,供大家一起参考。

一、封闭域知识抽取VS开放知识抽取

一般而言,在进行知识抽取时候,我们所看到的,能够较好建模以及应用的,都是限定关系抽取。

为什么,因为对于任何一个抽取任务,其问题的确定性越高,越容易界定为科学性的可评估的量化性越大,其优化目标就越可能被明确,以此带来的落地价值,学术发文价值就越高。

正如我们所了解的,实体识别ner,实体关系抽取任务re,以及事件抽取任务ee,都是在预定义schema的范畴下进行的,先定义好实体类型,实体关系/属性类型,以及事件要素,然后采用基于规则、基于模型的方法来进行训练预测,能够很清晰快速的推进,虽然这个过程是很不灵活的,并且定义规范的schema并非易事,所以越来越多的场景会需要我们针对给定的随意文本,抽取出其中的知识元组,也就是开放知识抽取。

开放抽取,与上面说的限定域抽取,最大的价值在于海量、起量快,在没有约束的情况下,可以快速生成大量有意义的知识,但没有约束也就成为这种方法在后期管理上较难问题的根源。

我们为什么要进行按照限定schema进行抽取,是因为我们预定定义好后,就可以直接入库,直接进行下一道程序,如分析,查询,更新等。但事先抽取,然后再进行使用,事实上还需要针对抽取出来的头实体,关系,尾实体进行分类。

例如,给实体进行实体分类,打上人物、电影等实体类型,给关系进行规范化,如江父亲、爸爸、老子、继父等不同表述统一规范成父亲,这其实就变成了一个非标转标的问题,而且,非标转标,最大的问题是标准的确立,因此就会陆续出现聚类、schema自动生成等复杂问题,这些目前都是很不好控制和评估的。

因此,综上,我们可以看到,开放信息抽取在面向通用搜索的场景中,或许还有落地可能,其他方向其实是很少的,这也是为什么在工业场景,尤其是垂直行业,开放知识抽取的讨论是较少的,学术界的探索也是较为缓慢的,因为不好评测,实现难度也很大。

当然,如果从技术这个角度,通过调研发现,整个开放知识抽取还是出现了以openie为代表的多个系统,从技术发展的脉络来看,包括基于规则的,基于模型的几种方法上。其中,基于规则,包括基于词性模板的,基于依存句法模式的,基于有监督的,则根据现有nlp的几种范式可进一步分为基于序列标注的方法、基于seq2seq的生成方法,基于span的分类方法等多种。

而对于有监督而言,其问题的关键在于标注数据的获得,目前以OIE2016以及Re-OIE2016为代表的数据集使用最广,但规模还是较少。

实际上,一般的抽取任务都会涉及到这个问题,通常可以借助外部知识库如百科图谱进行原文回标,而回标的前提在于实体或者关系名称在原文中是有对应的span的,如<中国,首都,北京>在句子“北京是中国的首都”中实际出现,但有些实际上是不出现的,例如对于<张三,妻子,小红>,在句子“张三和小红一起参加了结婚十周年纪念日”中并不能严格定义。

因此,关系词是否在原文中出现,也常常作为封闭域和开放域抽取的一个重要区别。因此,我们需要从一个句子中,准确的挑选出那些词语可以作为头尾实体,哪些词语可以充当关系词。

从经验来看,如果抽取的是实体图谱,头尾实体一般都是名词性的,可以常常将名词或者名词性短语成分作为头实体,而关系类型一般也是名词性的,如父亲、朋友、首都等等。而如果是要抽取的目标是事件三元组,那也对应的头尾实体可以是名词性成分,关系名称则可以是动词等谓词。

因此,总结的看,开放抽取的流程,可能就会变成给定一个句子,从原文中抽取符合要求的spo姐成分,然后再根据要求,对so进行实体标签分类,对p进行关系标准化或者聚类,从而完成规范管理,这与限定域抽取的顺序是有一定颠倒的,当然后续的标准化工作可以不做,但其价值是大打折扣的。

下面,我们从无监督基于规则、有监督基于生成、有监督基于序列标注、有监督基于分类的三种典型工作出发进行介绍,从中借鉴了

https://zhuanlan.zhihu.com/p/353576462一文中对开放信息抽取的一些整理内容,对此表示感谢。

二、无监督基于规则的开放知识抽取

无监督基于规则的开放信息抽取,其思想在于不需要标注数据,只利用语法或者句法规则识别出特定的成分,筛选出高质量的三元组,然后再通过评分函数和分类器进行评价,最终得到相关结果。

无监督Rule-based的代表作textrunner、StanfordOIE等,在前面的文章《知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读》中,我们围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,感兴趣的可以查看。下面以textrunner以及srandfordioe进行介绍。

1、textrunner系统

d640aa3ab15bcb1371cf73fec8a6b7be.png

textrunner的思想在于使用深层次语法解析器(parser)去互联网语料上自动抽取三元组,抽取结果有一个置信度,置信度较高的作为正例,置信度较低的作为负例形成分类训练数据集,学习一个二分类贝叶斯分类器,判断(论元1,关系词, 论元2)是否是可信的关系。

首先,在一个小的数据集进行语法解析,先进行词性标注,然后使用lightweight一个名词与短语的分词工具,解析句子中的名词短语,并将名词短语作为可能的论元ei和ej,两个名词短语之间的词语作为关系,构成三元组候选集合。

但这一步会得到很多的三元组,后续需要加入一个分类器进行分类,所以工作变成了两个,一个是正负样本的构造,一个是分类器的搭建。首先,在正负样本构造上,将满足下述三个条件的作为正样本:如论元ei和论元ej存在依赖路径,并且路径长度小于一定的值、论元ei和ej之间的依存路径没有跨句以及论元ei和ej都不是代词。

2、StanfordOIE

4eade6b45cbd8753968c2ff7738d8422.png

StanfordOIE的思想在于输入一个长句然后递归的拆分独立的短句(学习一个分类器用来判定短句是否被拆分出来)。

并且为了使得最终得到的三元组能在下游任务中能用,对于这些短句进行逻辑推理确保最大化缩减句子中无意义的组分。

a2e72bd4baad4a1af47073231bee8f3c.jpeg

b1bf77f861c11cc8c51e14f424cea591.jpeg

最后还应用了14组人工规则(如上图所示)来从短句中抽取谓词关系和论元三元组。

图11是其抽取过程的示意图,给定一个句子,先进行依存句法分析,然后通过设定好的patter,完成抽取。

11776bc35b423fc611bcf52aeecc5bbb.png

地址:https://github.com/philipperemy/stanford-openie-python

三、有监督基于生成式的开放知识抽取

与规则方式不同,生成式OIE,采用seq2seq的方式进行生成抽取,其需要实现给定输入原文句子,以及对应的抽取结果。而这时候的训练数据就比较重要。

对于有监督而言,其问题的关键在于标注数据的获得,目前以OIE2016以及Re-OIE2016为代表的数据集使用最广,但规模还是较少,下图是Re-OIE2016的一个例子。

508233feae8299aa8255738786caff41.png

IMoJIE是这类方法的代表工作,该方法提出了一种迭代式的基于记忆的联合信息提取,使用一个BERT-base的编码器和一个迭代解码器,在每一次迭代抽取中对到此为止生成的提取结果进行重新编码。这种重新编码可以捕捉到提取物之间的依赖关系,提高了整体性能,但整体过程十分耗时。

d219af5fdb7d07fd218cbdc84f25a81d.png

该工作启发于在 CopyAttention范式(一种基于bootstrapping的方法),如下图所示。

d4ebaf57bab761702dc45c85998ece7c.png

在具体实现上,在每一轮迭代中,将原始序列与之前提取的信息连接,并将其输入给BERT从而获得最终的嵌入。

7fc9ac46f3ba882454b26ac060549784.png

接着,将带有拷贝和注意力机制的LSTM 解码器用于生成新的信息提取结果,整个迭代直到出现EndOfExtractions技术标签结束。

例如, 第一次训练数据为:

(“I ate an apple and an orange.”, “I; ate; an apple”).

第二次训练数据为原始句子与抽取结果的拼接:

(“I ate an apple and an orange. [SEP] I; ate; an apple”, “I; ate; an orange”).

整个过程不断迭代,对于句子很长的情况下,所需要迭代的次数较多。

地址:https://github.com/dair-iitd/imojie

四、基于有监督序列标注的开放知识抽取

基于序列标注的方式是最容易想到的,这也是当前现定域知识抽取的常用范式。

就该方法而言,其核心在于针对训练数据,设定相应的序列标签,并利用相关的编码和解码方式完成抽取。

例如,定义S(Subject)、R(Relation)、O(Object) 以及 N(None),输入文本,对每个token进行4分类,也可以定义为主实体,副实体等,进行多分类,并利用BIO或者BMES进行标注。

RnnOIE以及SenseOIE是其中的几个代表工作,下面以RnnOIE为例进行介绍。

a47c9b14a78f8a1aeb4dabbb8e184376.png

序列标注的方法,将句子中主实体、副实体、关系词分别用不同的BIO标签表示。

例如,下面是给出了一给出了三组不同的形式,来表示数据输入的形式及标注结果和最终抽取结果。

(a)、(b)、(c)分别表示主实体、副实体只有一个、主实体有两个、副实体有两个的场景。

以(b)为例,输入中Barack Obama和a former U.S. president都是主实体因此都用A0-B和A0-I标记,关系词was born in用P-B和P-I标记,第一个副实体用A1-B和A1-I表示(若存在第二个副实体,则用A2-B和A2-I表示)。af671cea059ec2aea22897d875f38454.png

在模型设计上,RnnOIE模型结构示意图如下图所示:模型结构采用BILSTM进行编码,与标准版NER任务用CRF解码的形式不同,直接采用Softmax分类到每个Token的标签概率。

其中embeding包含两种类型(橙色和黄色),分别是每个词语自身的词向量+位置向量和谓语动词向量+位置向量的拼接得到的。经过一个BI-LSTM编码后直接Softmax输出每个token位置的类别标签。

5cda21568f940600597c6f32ebcd2871.png

由于在抽取时,会抽取多个结果,因此,关于抽取结果三元组的置信度问题,该工作一个简明方案,直接用三元组中所有token标签预测的概率值进行连乘积得到三元组的置信度。

五、有监督基于span分类的开放知识抽取

除了序列标注、生成式方法外,通过span分类的工作也有相关代表性的方法,这个在进行实体识别上也常有用到。

SpanOIE是该类方法的一个典型代表。

1、SpanOIE

SpanOIE采用pipeline式方法进行信息抽取,首先使用一个谓词发现模块来以句子为输入,预测出谓词对应的span,论元抽取模块则以句子以及谓词对应的span作为输入,然后找出对应的论元,包括Subject、Relation、Object。

e18c7fab27b1abccd8ee5c8aa65ff753.png

1、Spans Candidates Selection阶段

跨度模型的主要缺点是,从一个句子中生成的跨度太多,会导致计算成本过高,损害模型的性能。一个大小为T的句子的所有可能跨度的数量是T(T+1)。

对于一个大小为T的句子,所有可能的跨度是T(T+1)/2,这使得跨度的数量随着句子的长度迅速增长。为了减少跨度的数量,该工作对跨度候选者提出了多个约束。

包括:最大长度约束。在训练过程中,只保留大小小于10个单词的参数跨度和大小小于5个单词的谓词跨度。无重叠约束,只保留与给定谓词跨度不重叠的跨度。

2、Predicate Inference阶段

在预测推理阶段一个谓语跨度如果完全包含在同一个句子中的另一个谓语跨度中,将被删除。

例如,给定一个句子[James wants to sell his company],两个跨度[wants to sell]和[to sell]都被选为谓语,只保留前一个。

这种策略是合理的,因为[James; to sell; his com- pany]不是一个可以从原句中推导出来的确切事实。

66b7721896cc4f4c5f150cfd0c340586.png

3、Argument Inference阶段

给定一个句子和一个谓词跨度,该模型首先对句子中每个标签的每个可能跨度进行评分。然后,所有的元组(跨度、标签、分数)根据它们的分数进行排序,选择分数最高的元组。

如果一个具有特定标签的元组之前没有被选中,那么该元组将被选中。直到所有的标签都有其相应的跨度,也选择结束,但如果一个标签的对应跨度是NULL跨度,这个标签将在提取中被删除。

地址:https://github.com/zhanjunlang/Span_OIE

参考文献

1、Etzioni O, Banko M, Soderland S, et al. Open information extraction from the web[J]. Communications of the ACM, 2008, 51(12): 68-74.

2、Gabor Angeli, Melvin Johnson Premkumar, and Christopher D. Manning. Leveraging Linguistic Structure For Open Domain Information Extraction. In Proceedings of the Association of Computational Linguistics (ACL), 2015.

3、Kolluru K, Aggarwal S, Rathore V, et al. IMoJIE: Iterative Memory-Based Joint Open Information Extraction[J]. arXiv preprint arXiv:2005.08178, 2020.

4、Stanovsky G, Michael J, Zettlemoyer L, et al. Supervised open information extraction[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018: 885-895.

5、Roy A, Park Y, Lee T, et al. Supervising unsupervised open information extraction models[C]//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: 728-737.

6、Zhan J, Zhao H. Span model for open information extraction on accurate corpus[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(05): 9523-9530.

6、https://zhuanlan.zhihu.com/p/353576462

总结

本文先介绍从封闭域知识抽取和开放知识抽取的异同进行对比,然后介绍目前开放知识抽取的主流做法,包括基于规则的,基于生成的、基于序列标注的以及基于分类的,从中我们能看到大致的实现逻辑。

在更多时候,我们应该记住,无规矩不成方圆,是任何抽取任务在建模时的铁律,在圈定好规则的框架下进行抽取,能够最大限度地发挥抽取模型的价值。

关于老刘

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

d71f202975563aa2744301f0bb973413.png

点击阅读原文,进入 OpenKG 网站。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再双塔了!谷歌提出DSI索引,检索效果吊打双塔,零样本超BM25!

卖萌屋今日学术精选这篇论文展示了信息检索可以用一个Transformer来完成&#xff0c;其中&#xff0c;关于语料库的所有信息都被编码在Transformer模型的参数中。论文标题&#xff1a;Transformer Memory as a Differentiable Search Index链接&#xff1a;https://arxiv.org/a…

LeetCode 71. 简化路径(栈)

1. 题目 以 Unix 风格给出一个文件的绝对路径&#xff0c;你需要简化它。或者换句话说&#xff0c;将其转换为规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表示当前目录本身&#xff1b;此外&#xff0c;两个点 &#xff08;..&#xff…

我有一段很厉害的代码,不外传的那种

文 | 郭忠明知乎最近在知乎上看到一个问题&#xff0c;叫做“程序员有没有很厉害、不外传的代码”。​好像在这个遍地都是开源项目的时代&#xff0c;啥代码都藏不住。但其实&#xff0c;是有的&#xff0c;而且有不少&#xff01;很多算法在没有公开前&#xff0c;普通程序员都…

开源开放 | OpenKG发布cnSchema重构版本

cnSchema网站&#xff1a;http://cnschema.openkg.cn/GitHub地址&#xff1a;https://github.com/cnschema/cnSchema开放许可协议&#xff1a;CC 0摘要cnSchema是由OpenKG管理和维护的面向中文知识图谱的Schema参考标准。结合中文语言特点和中文领域特点需求&#xff0c;cnSche…

Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】

通过Trace ID和Span ID已经实现了对分布式系统中的请求跟踪&#xff0c;而这些记录的跟踪信息最终会被分析系统收集起来&#xff0c;并用来实现对分布式系统的监控和分析功能&#xff0c;比如&#xff1a;预警延迟过长的请求链路、查询请求链路的调用明细等。此时&#xff0c;我…

LeetCode 229. 求众数 II(摩尔投票)

1. 题目 给定一个大小为 n 的数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(n)&#xff0c;空间复杂度为 O(1)。 示例 1: 输入: [3,2,3] 输出: [3] 示例 2: 输入: [1,1,1,3,3,2,2,2] 输出: [1,2]来源&#xff1a;力扣&#xf…

95后CV工程师晒出工资单:狠补了这个,真香…

许多计算机视觉任务需要对图像进行智能分割&#xff0c;以理解图像中的内容&#xff0c;并使每个部分的分析更加容易。今天的图像分割技术使用计算机视觉深度学习模型来理解图像的每个像素所代表的真实物体&#xff0c;这在十年前是无法想象的。图像分割有助于确定目标之间的关…

论文浅尝 | CAKE:一个用于多视图知识图谱补全的可扩展性常识感知框架

笔记整理&#xff1a;陈子强&#xff0c;天津大学硕士链接&#xff1a;https://aclanthology.org/2022.acl-long.36.pdf动机以往的知识图谱补全仅仅依靠事实级别数据来预测实体之间缺失的关系&#xff0c;这样忽略了有价值的常识性知识。以往的知识图谱嵌入面临无效的负采样和事…

Spring Cloud构建微服务架构:分布式服务跟踪(收集原理)【Dalston版】

在本节内容之前&#xff0c;我们已经对如何引入Sleuth跟踪信息和搭建Zipkin服务端分析跟踪延迟的过程做了详细的介绍&#xff0c;相信大家对于Sleuth和Zipkin已经有了一定的感性认识。接下来&#xff0c;我们介绍一下关于Zipkin收集跟踪信息的过程细节&#xff0c;以帮助我们更…

LeetCode 263. 丑数 264. 丑数 II(DP)

文章目录1. LeetCode 263. 丑数解题2. LeetCode 264. 丑数 IIDP解题1. LeetCode 263. 丑数 编写一个程序判断给定的数是否为丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例 1: 输入: 6 输出: true 解释: 6 2 3示例 2: 输入: 8 输出: true 解释: 8 2 2 2示例 3: …

对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!

文 | jxyxiangyu编 | 小轶对比学习是 2021 年几大研究热点之一了。如果说预训练模型解决了机器学习对大规模标注数据的需求问题&#xff0c;那么&#xff0c;对比学习可以说是将无监督/自监督学习推广到更一般的应用场景&#xff0c;为苦于标注数据不多的炼丹师们又带来了福音。…

Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】

通过上一篇《分布式服务跟踪&#xff08;整合logstash&#xff09;》&#xff0c;我们虽然已经能够利用ELK平台提供的收集、存储、搜索等强大功能&#xff0c;对跟踪信息的管理和使用已经变得非常便利。但是&#xff0c;在ELK平台中的数据分析维度缺少对请求链路中各阶段时间延…

图谱实战 | 阿里新零售多模态知识图谱AliMe MKG的建设与应用

转载公众号 | DataFunSummit分享嘉宾&#xff1a;陈河宏 阿里巴巴 算法工程师编辑整理&#xff1a;李开琦 SHEIN出品平台&#xff1a;DataFunTalk导读&#xff1a;随着知识图谱技术的发展&#xff0c;其在电商、医疗、金融等领域得到了越来越广泛的应用。在过去的几年间&#x…

LeetCode 第 16 场双周赛(402/822,前48.9%)

文章目录1. 比赛结果2. 题目LeetCode 1299. 将每个元素替换为右侧最大元素 easyLeetCode 1300. 转变数组后最接近目标值的数组和 mediumLeetCode 1302. 层数最深叶子节点的和 mediumLeetCode 1301. 最大得分的路径数目 hard1. 比赛结果 做出了2道题&#xff0c;第二道题耽搁时…

CS 期刊哪家强?CCF 发布最新期刊分级目录!

文 | python分级目录中国计算机学会&#xff08;CCF&#xff0c;就是评ABC类会议的那个机构&#xff09;&#xff0c;在2022年2月19日刚刚发布了《计算领域高质量科技期刊分级目录》。该目录包含T1、T2、T3三类期刊&#xff0c;分别为T1类期刊16本&#xff0c;T2类期刊23本&…

Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】

通过之前的入门示例&#xff0c;我们已经为trace-1和trace-2引入了Spring Cloud Sleuth的基础模块spring-cloud-starter-sleuth&#xff0c;实现了为各微服务的日志信息中添加跟踪信息的功能。但是&#xff0c;由于日志文件都离散的存储在各个服务实例的文件系统之上&#xff0…

会议交流 | 第十六届全国知识图谱与语义计算大会(8月24-27日)

点击阅读原文&#xff0c;进入 CCKS2022 官方网站。OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。

1000层的Transformer,诞生了!

卖萌屋今日学术精选大家好&#xff0c;我是卖萌酱。今天下午卖萌屋作者群里一位MILA实验室的大佬在临睡前&#xff08;蒙特利尔时间凌晨0点半&#xff09;甩出来一篇论文&#xff1a;大佬表示太困了&#xff0c;肝不动了&#xff0c;于是卖萌酱左手抄起一罐咖啡&#xff0c;右手…

LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)

1. 题目 给你 root1 和 root2 这两棵二叉搜索树。 请你返回一个列表&#xff0c;其中包含 两棵树 中的所有整数并按 升序 排序。. 提示&#xff1a; 每棵树最多有 5000 个节点。 每个节点的值在 [-105, 105] 之间。 2. 二叉树迭代器 按照中序迭代&#xff0c;比较两个迭代…

Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)【Dalston版】

通过上一篇《分布式服务跟踪&#xff08;入门&#xff09;》的例子&#xff0c;我们已经通过Spring Cloud Sleuth往微服务应用中添加了实现分布式跟踪具备的基本要素。下面通过本文来详细说说实现分布式服务跟踪的一些要点。 分布式系统中的服务跟踪在理论上并不复杂&#xff0…