本书以实践为宗旨,主要讨论了使用(深度)神经网络来帮助建立有效的搜索引擎的方法。书中研究了搜索引擎的几个组成部分,不仅针对它们的工作方式提供了一些见解,还为在不同环境中使用神经网络提供了指导。重点在于通过示例解释搜索和深度学习技术,且其中大部分示例配有代码。同时,本书还在适当的地方提供了相关的研究论文,以鼓励你进行扩展阅读,深化对特定主题的认识。对神经网络和搜索相关主题的阐释贯穿全书。
读完本书,你将深入理解搜索引擎面临的主要挑战、这些挑战的常见解决方法以及深度学习所能提供的帮助。你将清晰地理解几种深度学习技术以及它们在搜索环境中的适用范围,并深入了解Lucene和Deeplearning4j库。此外,你还将培养出一种实践的态度,测试神经网络的有效性(而不是将其视为神奇的“魔法”),并且度量它们的成本和收益。
本书是为具有中级编程背景的读者准备的。如果你精通Java编程,并且对开发搜索引擎有兴趣或愿意参与其中,那就再好不过了。如果你想让搜索引擎更有效地给出相关结果,从而对最终用户更有用,那么你应该读读本书。
即使你没有开发搜索引擎的背景也没关系,因为本书在涉及搜索的每个具体方面时,都会介绍搜索引擎的基本概念。同样,你也无须提前掌握机器学习或深度学习的知识。本书将介绍所有必需的机器学习和深度学习基础知识,以及在生产场景中将深度学习应用于搜索引擎的实用技巧。
你应该准备好动手写代码,并扩展现有的开源库,以实现深度学习算法,解决搜索问题。
本书分成三个部分。
本书涉及的主题与概念的复杂性是递增的。如果你对深度学习或搜索不熟悉,或者对两者都不熟悉,强烈建议你先阅读第1章和第2章。在其他情况下,你可以根据自己的需要和兴趣随意选择章节阅读。
本书偏向于提供代码片段而不是完整的代码清单,因为这样能快速、轻松地了解代码在做什么以及是如何做的。完整的源代码可以扫描本书封底二维码下载 1 ,也可以在本书的图灵社区页面( https://www.ituring.com.cn/book/2733 )下载。
1 扫描二维码前,请先关注图灵社区微信公众号,以便及时获取推送。——编者注
代码示例使用Java编程语言和两个开源(Apache授权的)库,即Apache Lucene和Deeplearning4j。Lucene是构建搜索引擎时使用最广泛的库之一;在撰写本书时,Deeplearning4j是用于深度学习的原生Java库的最佳选择。同时使用两者将使你轻松、快速、顺利地测试和试验搜索和深度学习。
在本书中,为了与普通文本相区别,源代码采用了等宽字体。在很多情况下,源代码的格式经过了调整,我们添加了换行符,修改了缩进,以适应本书页面的可用空间。但是,在极少数情况下,即使这样也不能适应版面,因此代码清单中使用了续行符(➥)。此外,当用文本描述代码时,源代码中的注释通常会从代码清单中删除。许多代码清单有代码注释,以突出重要的概念。
在购买本书英文版后,你可以免费访问由Manning Publication运营的一个私有网络论坛,在那里你可以对本书发表评论,提出技术问题,并从作者和其他用户那里获得帮助。要访问论坛,请访问 https://livebook.manning.com/#!/book/deep-learning-for-search/discussion 。可以通过 https://livebook.manning.com/#!/discussion 了解Manning的论坛和行为规则。
Manning虽然为读者提供了一个平台,以方便读者之间、读者与作者之间进行有意义的对话,但是不能保证作者会频繁参与互动,因为作者对论坛的贡献是自愿的(也是无偿的)。我们建议读者向作者提出一些有挑战性的问题,以引起他的兴趣。只要本书仍然印刷出版,论坛和以前讨论的档案就可以从出版商的网站上找到。
本书中文版除了纸质版本,还有电子书可供选购。扫描如下二维码,即可购买本书中文版电子版。“随书下载”处可下载本书部分彩图。