文 / 创意技术专家 Philip Bayer;软件工程师 Ping Yu 和开发技术推广工程师 Jason Mayes
在探索 BERT 针对语言的有益用例时,我们发现了许多令人兴奋的研究。我们想知道:如果我们可以让您更方便地在网络浏览器中使用 BERT,将会怎么样?这将实现哪些可能的有趣用例?
在 Google 中搜索提出类似于“自由女神像有多高?”的问题,并从网络中得到答案(305 英尺)很容易。但是,还没有办法可以轻松针对具体内容(例如,新闻报道、研究论文或文章)用自然语言提问。您或许可以尝试使用浏览器中的“在网页中查找”这一搜索功能 (CTRL + F),但此功能依赖于字词的直接匹配(通过搜索的关键字进行匹配)。那么,输入一个完整的问题而不是要查找的关键字,期待页面上能够突出显示答案,会不会更易实现?
为了探索这一想法,我们使用 MobileBERT 问答模型制作了 Chrome 扩展程序的原型,可以在浏览网页时提出任何问题。通过 TensorFlow.js ,该扩展程序会根据页面内容返回答案。模型完全在设备端的浏览器会话中运行,因此,无需向服务器发送内容,这样可以保护隐私。
MobileBERT 问答模型
https://github.com/tensorflow/tfjs-models/tree/master/qna
本文将介绍我们的早期试验,并分享我们的发现,阐述如何通过开源的 TensorFlow.js BERT 模型来构建此类应用。探索示例很有帮助,在一些示例中,我们得到了所需的答案,而在一些示例中,我们没有得到所期待的结果。这让我们得以了解模型的潜力及其当前限制。我们希望这些示例可以帮助所有人都参与进来,并让每个人都能思考机器学习可以怎样为语言提供帮助。
TensorFlow.js BERT 模型
https://github.com/tensorflow/tfjs-models/tree/master/qna
△ 使用 Chrome 扩展程序,问一个有关文章的问题,并得到答案
我们的发现
以下是我们获得了有用答案的一些结果:
介绍螃蟹(链接见文末) - 问题:“How do they move?”答案:“Crabs typically walk sideways”
某产品照明灯介绍页 - 问题:“Can it get wet?”答案:“submersion in up to 1m of water for 30min”
某汽车测评 - 问题:“Gas mileage”答案:“19 miles per gallon in the city”
介绍木质摩天楼 - 问题:“How tall is it”答案:“280 feet in height”
千层面配方介绍 - 问题:“How long in the oven”答案:“25 minutes”
在一些示例中,模型没有返回我们期待的答案,但探索这些示例一样有趣。以下是我们找到的几个示例:
某产品介绍页 - 问题:“What is the pitcher made of?”返回的答案是“Ice mode pulses at staggered intervals to uniformly crush a pitcher of ice in seconds”,而不是“BPA-free polycarbonate pitcher”
某文章 - 问题:“Were the sharks real?”返回的文字是“sharks! sharks”,但问到相关问题“How did the sharks work?”时,给出的答案较为有用:“mechanical sharks often malfunctioned”
机器学习模型的工作原理
MobileBERT 问答模型可用于构建一套可用自然语言来回答用户问题的系统。模型使用预训练的 BERT 模型创建,后者基于 SQuAD 1.1 (Stanford Question Answering Dataset) 进行了微调。这是一种预训练语言表征的新方法,语言表示可以在各种自然语言处理 (NLP) 任务中获取最前沿 (SOTA) 的结果。
MobileBERT 问答模型
https://github.com/tensorflow/tfjs-models/tree/master/qna
BERT 模型
https://github.com/google-research/bert
我们很高兴地宣布,此模型现在可以在 TensorFlow.js 中供您的用例使用。MobileBERT 模型是一个紧凑型 BERT 变体,可以部署到资源有限的设备上。
TensorFlow.js 中
https://tensorflow.google.cn/js/models/
该模型将段落和问题作为输入,然后返回一段最有可能回答问题的段落。由于我们使用的是 TensorFlow.js,所有操作均在客户端的网络浏览器中进行。这意味着,用户隐私可以得到保护,不会将您的检索文本发送到服务器。
TensorFlow.js
https://tensorflow.google.cn/js
TensorFlow.js BERT API
该模型使用起来超级简单。请看下面的代码段:
正如您看到的,前两行用于从托管脚本中加载 TensorFlow.js 库和 Q&A(问答)模型,因此,我们可以执行问答搜索。这只需要调用一次 - 模型位于内存中时,将保持加载状态。然后,我们可以重复调用 findAnswers(),向其传递两个字符串。第一个字符串是用户要提出的问题,第二个字符串是我们想要用来进行搜索的文字(例如,页面上的文字)。之后,我们将返回 results 对象,其结构如下所示:
[ { text: string, score: number, startIndex: number, endIndex: number } ]
您将获得一组对象,表示可以最好地解答问题的段落的各个部分,同时还会获得一个分数,表示回答正确的置信度。另外,我们还会得到答案文字的索引,便于定位答案文字在上下文字符串中的位置。这就是全部内容!借助此数据,您现在可以突出显示找到的文字,返回一些较丰富的结果,或实现一些创造性的应用。
如果您想自己尝试 MobileBERT 问答模型,我们很高兴地告诉您,该模型现已开放源代码,您可以在我们的 GitHub 仓库中找到它。如果您实现了一些有趣应用,请与我们分享,我们期待看到有更多丰富的应用与创意!
GitHub
https://github.com/tensorflow/tfjs-models/tree/master/qna
分享
http://services.google.cn/fb/forms/TFCS/?channel=wechat
如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
介绍螃蟹
https://en.wikipedia.org/wiki/Crab
某产品页介绍照明灯
https://www.rei.com/rei-garage/product/167000/black-diamond-spot-headlamp
某汽车测评
https://www.autotrader.com/car-reviews/2020-infiniti-q60-review-281474979991514
介绍木质摩天楼
https://www.cnn.com/style/article/wooden-skyscraper-revolution-timber/index.html
千层面配方介绍
https://www.allrecipes.com/recipe/23600/worlds-best-lasagna/?internalSource=hub%20recipe&referringContentType=Search
某产品介绍页
https://www.bedbathandbeyond.com/store/product/kitchenaid-reg-5-speed-diamond-blender/3242409
某文章
https://en.wikipedia.org/wiki/Jaws_(film)
责任编辑:xj
原文标题:用 TensorFlow.js 探索 BERT 在浏览器中的趣味实践
文章出处:【微信公众号:TensorFlow】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !