迈向电商认知智能时代的基石:阿里电商认知图谱揭秘

阿里妹导读:电商平台最大的挑战是从日益增长的海量商品(数十亿)中挑选出的一个小的子集(几十或上百)展示给用户,以满足用户的个性化的购物需求。为了解决仍存在的重复推荐、缺少新意等问题,我们提出建设大规模电商认知图谱。

今天,搜索推荐事业部认知图谱团队全面总结了目前在构建电商认知图谱方面的探索,主要介绍认知图谱的定义、整体的构建思路,构建过程中一些具体的算法问题,和最终在搜索推荐上的应用。

背景

纵使近年来电商搜索、推荐算法已经取得了长足的进步,但这些算法依然存在许多问题,如推荐中经常为人诟病的重复推荐、缺少新意等。究其本质,这是因为现有的算法主要还是沿袭“商品到商品”的思路,并不是直接从用户需求来驱动的,甚至对用户需求没有一个清晰的定义。而另一方面,理解并满足用户需求又是这些算法所要达成的最终目标,这两者之间的有着天然的隔阂。

为了打破这个隔阂,让搜索、推荐算法更好地认知用户的需求,我们提出建设大规模电商认知图谱(E-commerce ConceptNet),将用户需求显式地表达成图中的节点(称为E-commerce Concept),并将这些需求点和电商领域内的商品、类目,电商外部的通用领域知识等关联起来,为商品认知、用户认知和知识认知提供统一的数据基础,并为下游搜索推荐算法提供新的优化思路和更多的可能性。

什么是e-commerce concept?

前面提到,我们将用户需求称为“e-commerce concept”: 一个有商品需求的概念,一般情况下以一个符合常识,语义完整,语序通顺的短语表示。例如:“连衣裙”、“儿童防走失”、“烧烤必备”、“宝宝保暖”、“波西米亚连衣裙”、“春节庆祝”等。这些concept需要满足如下的基本原则:

如上所示,右边的短语均违背了电商概念的基本原则,所以在实际挖掘过程中都是会被过滤掉的。进一步,我们将concept分为了三大类:

  • 购物场景(shopping scenario):表示一类非特定品类的用户需求,场景感较强,如“儿童防走失”、“春节送礼”等。
  • 泛品类(extensive category):表示一类有特定品类的用户需求,可以是不加修饰的纯净品类,如“连衣裙”、“水果”等,也可以是有属性限制的品类,如“韩版波点连衣裙”、“儿童羽毛球拍”等。
  • 通用概念(general concept):表示一类通用的概念,可以和电商外部的开放领域知识相关联,如“防晒”、“烧烤”、“老人”等。

E-commerce concept从哪里来?

在明确了定义和基本原则之后,我们需要挖掘大量的concept用以覆盖各式各样的用户需求。目前,我们认为用户在使用淘宝或天猫搜索时输入的搜索词(query)和商品的标题(title)是concept挖掘可以利用的最大来源。而我们的工作主要是要将满足我们上述原则的concept短语,从充满噪音的query、title中挖掘出来,这一步称为“Concept Mining”。

Concept Mining主要分为两步,一个是候选生成(Candidate Generation),另一个是概念正确性判断(Concept Classification)。总体流程如下:

其中,候选的生成分为两块,一块是使用AutoPhrase按照字粒度从句子中切分出来的短语信息,一块是通过序列模板抽取器(Sequential Pattern Extractor)做频繁序列挖掘后的模板信息,结合2-gram的统计语言模型,得到concept候选。在得到候选后,我们会利用一个判别模型来融合语言模型embedding,concept的序列信息,以及规则前后缀,pv统计等特征,判断concept是否是符合要求的。

Candidate Generation

我们首先通过pattern抽取器从现有的正负concept中提取pattern并计算权重,然后通过这些pattern,并结合三个窗口内的统计语言模型,进行候选的剪枝,最后生成的候选基本都是符合语序,满足基本常识的。

Concept Classification

我们一方面结合一些简单的规则进行特征抽取,另一方面,利用现有的序列特征训练Wide&Deep model,来进行concept的合理性判断。在初始数据的处理方面,由于我们大部分的concept都是短文本,而query和title中大部分的term序列不符合正常的语序,我们还利用长文本的parsing infomation进行候选抽取和截断,训练了ELMo作为基础的语言模型,并在同样长度的gram内调整语序,来得到最佳的序列信息再给判别模型。

Ontology

在明确了e-commerce concept的定义并挖掘出了大量的concept后,我们会疑惑,concept作为一个词(phrase),除了name之外,没有分类(domain),没有描述(description),也没有属性(attributes),怎么叫”图谱“呢?这么少的信息量如何能在下游应用中起到作用呢?concept要成为图中的节点,那我们的图到底是什么呢?

为了更好地理解e-commerce concept,同时和外部知识图谱对齐,引入更多的通用知识,我们定义了一套电商认知图谱的本体(Ontology),用以描述实体、概念的属性和其之间的关系。实体表示客观世界存在的具体实例,例如,歌手刘德华为一个具体的实例。概念表示客观世界中的宽泛概念,例如,娱乐明星为一个泛指的概念。分类体系与属性关系定义(Schema),包括定义实体和概念的类别,以及实体和概念具体的属性与属性值。例如,在分类体系中,歌手刘德华属于人物→娱乐人物→歌手,属性包含出生日期,代表作等。

在这里,我们参考Schema.org、cnSchema.org中对客观事物进行描述的结构,建立了以事物类(Thing)为根节点的电商知识图谱底层本体分类体系。在事物类的子类中,包括“动作”、“创作品”、“活动”、“无形物”、“品类”、“医疗实体”、“机构”、“人物”、“地点”共9大类。每一个子类又有其自己的子类,每一个子类将继承父类的所有属性和关系。具体结构如下图所示:

本体分类体系,其中括号内内容为类别对应的中文名和英文缩写

在这里,中心白色节点为事物类,是所有类的根节点。环绕在事物类周围的9个节点是事物类的直接子类。其中每一个类别又有自己的节点。在该图中,以无形物类为例,受众类是无形物类的子节点,而受众:动物类、受众:身体部位类、受众:人群类、受众:植物类是受众类的子节点。在通过结构化、半结构化、非结构化数据进行知识获取时,数据按照该分类体系进行录入。

如前文所述,电商认知图谱的终极目标是刻画用户需求,因此,在本体中我们定义了多个电商专用类来对电商环境下的客观世界进行建模:

  • Brand (品牌) Category (品类):品类是顾客在购买决策中所涉及的最后一级商品分类,由该分类可以关联到品牌,并且在该分类上可以完成相应的购买选择。品类中的实例是我们进行本体构建过程中重点挖掘的内容。
  • Audience (受众):受众是商品直接对应的购物人群或种群,是电商场景下一个非常重要的分类。受众类下包括四个子类:受众:动物、受众:身体部位、受众:人群、受众:植物。
  • Style (风格):对于一件商品,一定会有其特有的风格来吸引购买的人群,风格类主要对其进行描述。风格类下包括六个子类:文学风格、音乐舞蹈风格、气味风格、触觉风格、口味风格、以及视觉风格。
  • Function (功能):对商品进行功能的具体描述,可以精准的定位商品,将商品和需求直接联系起来。功能类下包括四个子类:美妆功能、服饰功能、保健功能、家居功能。
  • Material(材质):所谓材质,简单的说就是物体看起来是什么质地。通过材质对商品进行描述,可以使商品更加具体化。

属性是词汇固有的属性,比如“别名”、“描述”等;关系是本体词汇之间存在的客观联系,如Person类中实例的“出生地”将链接到另外一个Place类的实例中。在本体的分类体系中,每个类别都有其特有的属性和关系,子类将继承父类所有的属性和关系。在这里,我们以事物类和品类类为例,介绍属性和关系,具体如下图所示:

事物和品类的属性&关系

  • 事物类:在该类别中,我们定义了“别名”、“描述”、“图片”、“名称”共四个属性和关系。“别名”实际上是当前词汇的一个同义词,是一个属性;“描述”是对当前事物特点的一种描述;“图片”可以连接到另外一个“图片对象”,实际上是两个事物之间的关系;“名称”是当前事物的标准的名字。
  • 品类类:品类类是事物类的直接子类,将直接继承事物类的所有属性和关系。与此同时,品类类含有自己特有的属性“品类类型”。

本体分类体系下所有的类、子类均有其特有的属性和关系,在对本体中的每个类别进行建模时,我们定义了140+个属性和关系。

在进行本体词汇构建时,我们充分调动集团内各大BU的优质结构化资源,来源包括淘系、优酷、飞猪、神马等等,对多来源的结构化、半结构化数据进行知识的整理与融合。具体的,如果将多来源结构化数据看成不同来源的知识体系,获取和融合就包括了本体和实例的匹配(Ontology/Enity Matching)和知识融合(Knowledge Fusion)。

我们采用了基于文本特征的匹配方法,对多来源的数据进行了批量的合并。我们定义的知识融合任务是:在同一个类别下,含有相同意义的词汇需要合并为一个id,其中最为常见的词汇作为主键,其他同义词汇作为别名。如“老汉”与“老朽”是同义词,在同一个id下,“名称”属性内容为“老汉”,“别名”属性内容为“老朽”。在匹配的基础上,通过冲突检测,Truth Discovery等技术将知识进行一致性的合并消解。对于冲突,处理方法包括忽略,避免和消解。

常见的消解方法包括:Voting、Quality-based、relation-based的方法。我们采用的是Quality-based的方法,对single-valued attribute进行消解。最终通过整理和融合结构化数据,获取了百万级的实体和Concept数据。

自然文本以非结构化的形式存在,包含了大量丰富的语义关系,描述了客观世界里面实体,概念以及相互之间的关系。因此,对文本的理解也成为了获取实体和概念信息的重要来源。实体和概念作为图谱的关键元素,对其在文本中的识别成为了知识获取的重要技术。其中命名实体识别(NER)将文本中提及的实体进行划分并归类,可以从海量语句中挖掘指定类别的实体。我们采用基于远程监督(Distant Supervision)的序列标注模型,标注的类型标签包含上文提到的事件,功能,对象,时间,空间,品类,风格等多个大类。

至此,我们搭建了一个为电商设计的ontology体系,并扩充了大量的实体、概念、属性和关系,也可以将其看做一个普通的电商知识图谱。

从知识图谱到认知图谱

上文介绍的认知图谱本体结构(Ontology),包含了比较完整的分类法以及相应的schema,并融合了大量的外部、电商实体、概念和属性关系,是一个比较初级的电商知识图谱,其目的是为了结构化我们挖掘得到的大规模的e-commerce concept,将这些concept链接到图中成为节点,让“知识图谱”真正迈向了“认知图谱”。这一步叫做Concept Tagging。

理想情况下,我们希望concept经过分词后,每一个词单元都能够链接到本体词汇库的词汇上,从而获得相应的知识体系,但是由于本体不一定能覆盖全部的concept词汇,导致concept只有部分能够被链接,属性关系并不完整。其次,本体中存在一词多义的问题,相同的词汇具有不同的类型,因此需要进行词义消歧。而concept通常是短文本,上下文十分有限,常规的序列标注模型并不能取得可观的性能,并且目前的本体分类体系是树形结构,存在一个词汇分布于同一个大类,不同小类中。例如,“丹麦”这个词的类型有“空间→国家”以及“空间→行政区”,这也为词义消歧带来了难度。

我们的目标是准确地将concept链接到本体词汇库的词汇上,输入是concept列表以及本体库,输出是对应的词汇及类型:

针对上述难点,算法的整体流程图如下:

下面我们将针对图中的模块具体说明:

1) 基于词典的最大正向匹配及前缀匹配:给定一个concept,算法首先使用最小粒度分词,将concept切分成词,然后使用最大正向匹配算法,从左到右将分词后的concept的几个连续词与本体库的词典匹配,如果匹配上则返回本体词汇及类型(ID)。

在这个过程中,存在匹配上的词在本体分类体系中的不同位置中,即一词多义的问题,在这里,我们将所有的可能候选返回,以供后续消歧处理。值得一提的是,我们在使用词表的时候,并没有使用全部的词表,其中的品牌表和IP表(名人、作品、电视电影等)非常庞大,歧义词很多。

例如,我们平时十分常见的高频词也会是一个IP词,但大多数情况下并不表示一个IP。因此我们在最大正向匹配的过程中去除了这一部分数据,而是增加了一个前缀匹配的模块,将未标识的前缀与品牌表和IP中的人名表进行匹配,能够进一步的提升覆盖度。

2)词义消歧: 与常规的消歧方法不同,concept通常由短文本组成,上下文能够提供的信息十分有限。因此我们选用了序列标注模型来学习词汇类型的组合,例如:“对象”+“风格”+“品类”等等。由于考虑到不同行业下,词汇的类型不同,例如,“拼接”这个词,在“服饰”领域下,“拼接针织连衣裙”中的“拼接”类型为“风格”,而在“家具灯具”领域中,“拼接水管”的类型为“功能”,因此我们使用了attention机制来学习领域相关的信息。序列标注的模型如下图所示:

得到序列标注的模型输出后,再根据单词的sense候选,输出最终的tagging结果。后续会尝试将序列标注作为特征,再结合concept的其他特征,使用分类模型来对候选sense打分排序。

3) 细粒度的tagging :在存在问题的讨论中,我们提到了存在一个词汇属于相同大类不同小类的情况。通常序列标注模型的标签类别只有十几种,而目前我们的本体库分类体系中包含几十种甚至上百种类型,传统的序列标注模型并不能够解决这个问题。因此,我们需要更细粒度的序列标注模型来进一步消歧。

4) 对齐长文本召回:经过词表匹配与词义消歧后,由于现有本体库并没有涵盖concept中所有的词汇,因此我们需要tagging未标识的term,并识别出相应的类型,可以回流本体库。一种可行的方式就是利用大量电商领域的长文本句子,将concept远程对齐到长文本来进行序列标注,从而将未标识的term召回。

认知图谱中的边

知识图谱的关系是机器能够理解知识的关键。关系类型由头尾节点类型决定,节点可以是vocabulary、concept、entity的任意一种。目前我们定义了19中关系类型,并用三元组表示所有节点之间的关系。这些关系包括“is_related_to(相关)”、“isA(是一种)“、”has_instance(有实例)“、”is_part_of(是一部分)“等。 这里重点介绍对电商场景用途最大的两种关系:

concept-isA-concept

例子:波西米亚连衣裙 isA 连衣裙。

电商需求大部分是品类需求,对品类需求的语义表达至关重要。isA关系使得我们的concept从偏平的结构变为图的结构,对机器理解语义非常重要。 通常,isA关系的构建包含两个步骤:

  1. 在大规模文本语料中抽取isA关系,这里主要包括模板匹配(pattern-based)和基于向量表示的isA关系预测(distributional)
  2. 在第一步抽取得到的isA关系集合中构建层次结构,例如去重,消歧,去环等清洗工作以及补充更细粒度的isA关系。

而在电商认知图谱构建的特殊场景中,isA关系构建的主要难点在于:

  1. 电商是一个垂直领域,尤其在淘宝这样一个"只有你想不到,没有淘宝买不到"的平台,涉及的品类五花八门,有不少品类词相对冷门但又十分重要。
  2. 电商相关的文本语料稀缺,品类词在语料中的共现非常稀疏,给抽取带来了极大的难度。针对这些难点,我们正在着手设计一套人工+算法不断迭代优化的active learning流程,希望为后续的concept理解和推理应用提供可靠的支持。

concept-is_related_to-item

在现有电商环境下,构建概念和商品之间的is_related_to关系也会面临诸多挑战:概念过短、商品标题堆叠、无关词语、商品属性错误、商品图文不符等,这些会造成匹配错误或者带来歧义。

针对上述问题我们采用的整体方案流程如下:首先使用文本匹配/i2i/语义模型的方式进行将concept与item (title、描述)进行语义匹配,然后会根据concept到category分数进行校准,再经过消歧后,最终会根据概念间关系进行商品的合并。下图是深度语义匹配模型的一个示意:

完整的大图

讲到这里,电商认知图谱的大图也呼之欲出了:

如上图所示,完整的认知图谱包含以下几个部分:

  • Concept:表达用户需求的最重要的语义节点。
  • Ontology:一个为电商设计的知识图谱的分类体系、schema,通过与concept的连接形成最终的认知图谱,可以融合外部知识图谱数据,引入电商中很难直接挖掘到的常识。
  • Relation:我们定义了十几类关系,用于描述不同节点之间的语义,是机器理解语义的关键。
  • Item:基于图谱构建大规模的concept、vocabulary和relation,可以更加精确的理解商品。
  • User:基于图谱构建大规模的concept、vocabulary和item attributes,可以更加精准的理解用户需求、推理用户需求。

应用

显式应用

电商认知图谱现已在淘宝搜索推荐等多个产品落地应用,主要的产品形式是以concept为载体的主题卡片,如首页猜你喜欢瀑布流中的”购物百科“:

宝贝详情页中的场景推荐:

隐式应用

通过电商认知图谱提供的以concept为核心的点、边关系数据,为搜索和推荐算法增加了新的信息粒度和信息结构,会带来更大的想象空间,可以更好地满足多样的用户需求。

同时,很多新的基于认知图谱应用的课题我们还在进行中,如:

  • 可解释推荐
  • Knowledge Graph Embedding
  • 推理式推荐

总结和展望

认知图谱的建设需要耗费大量的资源,涉及领域广泛,内容繁杂,离不开算法、工程、运营、以及大量众包/外包资源的帮助。本文只是浅显地总结了从算法工程师的角度来讲述的认知图谱构建,很多模块仍在探索和优化中。

我们相信,以更好地认知用户需求为目标的电商认知图谱,将助力搜索推荐等从基于行为的方式迈向基于行为与语义融合的认知智能时代,将是平台生态稳定和日益进步的重要基础。

关于我们

阿里巴巴集团搜索推荐事业部认知图谱团队,旨在打造全球最大的中文电商知识图谱,支持包括淘宝、天猫优酷乃至海外电商在内整个阿里集团的推荐与搜索业务,每天服务上亿用户。电商"认知"图谱,从电商场景下的用户需求出发,不局限于传统的商品图谱,而是一个连接商品,用户,购物需求,以及各类开放领域知识、常识的大规模语义网络。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

我是如何用6个月,从0编程经验变成数据科学家的?

来源 | medium编译 | 武明利责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)我叫Kate,刚从长达 8 年的学习和艰苦的工作中走出来,没有任何预兆。你可能想问,为什么有人会这么做?不得不说&#xff…

Node.js 应用故障排查手册 —— 综合性 GC 问题和优化

楔子 本章前面两节生产案例分别侧重于单一的 CPU 高和单一的内存问题,我们也给大家详细展示了问题的定位排查过程,那么实际上还有一类相对更复杂的场景——它本质上是 V8 引擎的 GC 引发的问题。 简单的给大家介绍下什么是 GC,GC 实际上是语…

“龙井”开箱评测 |Alibaba Dragonwell 新手上路指南

阿里巴巴有着最丰富的 Java 应用场景,覆盖电商,金融,物流等众多领域,是世界上最大的 Java 用户之一。 2019 年 3 月 21 日,阿里巴巴在北京阿里云峰会上正式宣布开源了 Alibaba Dragonwell 8 产品,并建立了 …

基于角色的访问控制(RBAC)

来源 | 编程新说责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)很多时候,需要对一些事物进行控制,如一个房间,为了不让人随便进,通常会装一把锁,如果要想进入,你必须得有一…

win10 ie中没有java,win10没有ie浏览器怎么处理_window10找不到ie浏览器如何解决

很多用户升级到win10系统之后,发现默认浏览器是edge,想要使用ie浏览器的时候却发现没有ie浏览器,遇到window10找不到ie浏览器的话该怎么办呢,下面随小编一起来看看详细的解决步骤吧。方案一:1、直接搜索,右…

手把手教程:用Python开发一个自然语言处理模型,并用Flask进行部署

截住到目前为止,我们已经开发了许多机器学习模型,对测试数据进行了数值预测,并测试了结果。实际上,生成预测只是机器学习项目的一部分,尽管它是我认为最重要的部分。今天我们来创建一个用于文档分类、垃圾过滤的自然语…

干货|Spring Cloud Stream 体系及原理介绍

Spring Cloud Stream 在 Spring Cloud 体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在 Spring Cloud 应用程序中的开发。Spring Cloud Stream (后面以 SCS 代替 Spring Cloud Stream) 本身内容很多,而且它还有很多外部的依赖&a…

阿里小程序云应用上线了,有哪些看点?

3月21日,在2019阿里云峰会北京上,阿里巴巴旗下的阿里云、支付宝、淘宝、钉钉、高德等联合发布“阿里巴巴小程序繁星计划”:提供20亿元补贴,扶持200万小程序开发者、100万商家。凡入选“超星”的小程序,入驻支付宝、淘宝…

10 个实用功能告诉你,谷歌云(Google Cloud)相对亚马逊云(AWS)有哪些优势?...

来源 | itnext编译 | 武明利责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)有很多文章将谷歌云提供商(GCP)与亚马逊云服务(AWS)进行比较,但这篇文章并不想要做比较。作者主要是一个AW…

mybatis-plus大批量数据插入缓慢问题

文章目录问题排查结果建议问题 最近项目用的mybatis-plus做的映射,有个批处理文件内容的需求,在使用mybatis-plus的批处理方法saveBatch时发现速度特别慢,测试从1000到10000到80000条基本上是线性增加,80000条时差不多要90秒。 …

世界冠军之路:菜鸟车辆路径规划求解引擎研发历程

阿里妹导读:车辆路径规划问题(Vehicle Routing Problem, VRP)是物流领域最经典的优化问题之一,具有极大的学术研究意义和实际应用价值。菜鸟网络高级算法专家胡浩源带领仓配智能化算法团队经过两年的研发,逐步沉淀出了…

原来,阿里工程师才是隐藏的“修图高手”!

阿里妹导读:在现实世界中,信息通常以不同的模态同时出现。这里提到的模态主要指信息的来源或者形式。例如在淘宝场景中,每个商品通常包含标题、商品短视频、主图、附图、各种商品属性(类目,价格,销量&#…

分布式数据集训营,从入门到精通,从理论到实践,你不可错过的精品课程!...

责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)随着微服务、云化架构的兴起,分布式数据库开始在越来越多的场景得到应用,从外围系统到中台业务,再到核心交易业务,分布式数据库成为企业基础架构转…

mybatis批量插入10万条数据的优化过程

在使用mybatis插入大量数据的时候,为了提高效率,放弃循环插入,改为批量插入,mapper如下: package com.lcy.service.mapper;import com.lcy.service.pojo.TestVO; import org.apache.ibatis.annotations.Insert;import java.util.List;/*** 功能描述:** author liuc…

java spring注解维护,从一次工程启动失败谈谈 spring 注解

原标题:从一次工程启动失败谈谈 spring 注解檀宝权Java 后端开发工程师,负责度假 App 后端和广告后端开发维护工作,熟悉 Tomcat,Spring,Mybatis,会点 Python,Lua。一、背景线上环境升级成 JDK8后…

探索Java日志的奥秘:底层日志系统-log4j2

前言 log4j2是apache在log4j的基础上,参考logback架构实现的一套新的日志系统(我感觉是apache害怕logback了)。 log4j2的官方文档上写着一些它的优点: 在拥有全部logback特性的情况下,还修复了一些隐藏问题API 分离&…

大地震!某大厂“硬核”抢人,放话:只要AI人才,高中毕业都行!

特斯拉创始人马斯克,在2019年曾许下很多承诺,其中一个就是:2019年底实现完全的自动驾驶。虽然这个承诺又成了flag,但是不妨碍他今年继续为这个承诺努力。这不,就在上周一,马斯克之间在twitter上放话了&…

Dart编译技术在服务端的探索和应用

前言 最近闲鱼技术团队在FlutterDart的多端一体化的基础上,实现了FaaS研发模式。Dart吸取了其它高级语言设计的精华,例如Smalltalk的Image技术、JVM的HotSpot和Dart编译技术又师出同门。由Dart实现的语言容器,它可以在启动速度、运行性能有不…

Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了! | 博文精选...

来源 | CSDN 博客作者 | 天元浪子责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)意犹未尽的诗词大会正月十六,中国诗词大会第五季落下帷幕。从2016年2月12日第一季于开播,迄今恰好四周年。在这个舞台上,时年…

Node.js 应用故障排查手册 —— 大纲与常规问题指标简介

楔子 你是否想要尝试进行 Node.js 应用开发但是又总听人说它不安全、稳定性差,想在公司推广扩张大前端的能力范畴和影响又说服不了技术领导。 JavaScript 发展到今天,早已脱离原本浏览器的战场,借助于 Node.js 的诞生将其触角伸到了服务端、P…