Bing搜索:智能搜索:编码答案触手可及

Bing搜索最新发布:

原文地址:https://blogs.bing.com/search-quality-insights/2018-07/Intelligent-search-Coding-answers-at-your-fingertips

如果您是开发人员,您可能会阅读大量文档,论坛和讨论,以找到编码问题的解决方案,学习新的编程语言或掌握新工具。它总是需要时间和精力的大量通过很多长的丝终于发现,之前讨论类似的问题和潜在的解决方案来阅读一个答案。 

我们Bing的许多人也是开发人员,我们想:如果Bing有足够的智慧为我们做这件事怎么办?如果它可以通过自动查找包含问题答案的确切代码段来节省用户的时间,该怎么办?这就是Code Sample Answer诞生的原因。

您可以通过尝试使用 “ 使用R中的函数转换大小写 ”等查询来查看Bing上的现场直播,我们相信您会了解如何从文章中为您提取代码段并在请求的结果中显示编程语言。如果您需要更多上下文,代码示例下方的链接将直接带您到相应的文章。而且要明确 – 我们的支持不仅限于Microsoft系列编程语言。
Bing搜索:智能搜索:编码答案触手可及

挑战

根据维基百科,源代码是使用某种人类可读编程语言编写的任何计算机指令集合,通常是纯文本。每种编程语言都有一组定义的指令,语法和形式,这些语言对于该语言是唯一的。

我们希望我们的解决方案支持广泛的编程语言。为了使Bing能够满足此要求并找到回答用户查询的相应代码片段,它必须能够解析和理解这些指令,许多不同编程语言的语法和形式。是否可以在不必为每种语言构建完全独立的系统的情况下完成它?

与此同时,开发人员更喜欢使用自然语言搜索问题的解决方案。Bing需要能够将查询的意图(以自然语言表示)映射到代码样本的意图(以编程语言表示),以便为查询找到最相关的代码样本。

通过利用Bing的自然语言处理(NLP)技术和语言无关的代码理解功能,我们能够解决这一挑战,大大减少了许多开发人员从问题到答案的时间和精力。

Code Sample Answer如何工作?

当开发人员发出一个复杂的查询,例如“ 使用java 发送包含Outlook的附件的 html电子邮件 ”,其中包含多个与编码相关的术语:“html”,“java”,“outlook”,需要花费大量工作才能正确地分开用户的实际意图。在这种情况下,目的是使用Java编程语言通过Outlook发送带有附件的HTML格式的电子邮件。获得正确的查询意图对于能够从一系列可用选项中提取过程中最相关的代码示例至关重要。

Bing的自然语言处理流程通过将查询转换为等效的“编码查询关键词”来实现此目的。Bing的语言不可知代码理解引擎然后确保结果正确地反映基于整体查询理解的意图而不是简单的单个关键字匹配。下图更详细地显示了此过程。
Bing搜索:智能搜索:编码答案触手可及

在Bing.com上发出查询时,首先根据其意图作为代码或非代码类型的查询对其进行分类。然后由Bing的几个基本查询更改管道(包括我们的NLP管道)处理,并转换为查询关键字,随后可以与相关网页匹配。

这些管道中的每一个都专门用于编码查询,因为它们的语义通常与一般查询完全不同,例如:  考虑查询:“Chai或Mocha”和“Chai或Mocha assert”。虽然他们可能有一些重叠的意图,但主要意图明显不同。在前一种情况下,用户可能正在寻找chai和mocha饮料类型之间的差异,而在后一种情况下,很明显主要意图肯定是要找到更多关于相应的JavaScript测试框架。

在诸如此类的模糊情况下,网络结果将继续尊重所有可能的意图,并且可能会抑制代码答案。只有当Bing以高可信度智能检测到编码意图时,才会触发代码示例应答:
Bing搜索:智能搜索:编码答案触手可及

为了实现查询意图检测的这种精确度,Bing为开发人员提供的自然语言处理流程利用了多年来收集的开发人员查询的培训数据中的模式,这些模式包含编码查询的常用术语和文本结构。该系统还利用大量点击信号进一步提高精度。

一旦查询被分类为代码与非代码查询并且识别出关键短语术语,Bing的语言不可知代码理解引擎就会智能地解释开发者意图。这种对意图的理解是根据特定语法,查询中使用的任何API,工具或语言名称等信号构建的,这些信息目前在开发社区中很常见。

基于查询理解,系统然后从诸如Stackoverflow,Github,W3Schools,MSDN,Tutorialpoints等流行,权威和良好主持的站点中提取最匹配的代码样本,同时考虑API的保真度和编程语言匹配等方面,计数上/下投票,解决方案的完整性等等。 

从网页中提取和显示最匹配的代码片段的关键挑战之一是,这些页面中的许多页面可能具有多个意图。例如,Stackoverflow上的这篇文章有一个主要主题,即使用Nodejs通过动态表生成PDF,但同一页面包含开发人员的回复,建议Phantomjs是一个解决方案。页面上的这些混合建议可能会导致模糊的结果。因此,为了保持我们的结果精确,我们使用显式语义分析来提取网页内容,该语义分析可以测量查询关键短语和给定网页之间的语义相关性。

模型产生的语义分数捕获文档片段与查询的匹配质量。在该过程的后续步骤中,对片段进行评估,排名,并返回最佳片段。
Bing搜索:智能搜索:编码答案触手可及

如果我们非常确信我们的最佳代码段完全满足用户的查询,它将显示在结果页面的顶部,如上例所示。您可能还想尝试:  “ js中的数组连接 ”,“ c#string.substring ”,“ arraylist toarray java ”,“ php preg_match ”以查看更多高可信度答案的示例。
Bing搜索:智能搜索:编码答案触手可及

 

在我们的信心较低的情况下,代码示例答案将在页面正文中更深层次地呈现(“ c#native json ”,“ 在html中缩进项目符号 ”,“ INVALID PARAMETER EXCEPTION ”,“ 如何在根网站上移动c#.net中的sharepoint “)

结束思考

Code Sample Answer的功能并不仅限于编程语言,它还涵盖了开发人员常用的许多工具。因此,例如,如果您在记忆所有有用的git命令及其语法时遇到问题,您可以使用Code Sample Answer轻松获取该信息。

随着我们从网络搜索中获得越来越多的信号以及开发人员的持续反馈,我们将继续致力于增强整体开发人员帮助体验和代码示例答案的覆盖范围。 

我们依靠像您这样的用户的反馈来帮助我们了解未来的增强功能对您的日常任务最有帮助和最有价值。我们建议您在寻找任何与代码相关的帮助时使用Bing,如果您有任何建议或反馈,请使用页面上的反馈链接直接分享。

快乐的编码!

– Bing Tech Team(开发人员帮助)

北京网站优化公司_SEO优化公司_北京新闻发稿_稿件策划撰写_越视界

相关新闻