你很有可能問過聰明的演講者一個問題,比如“珠穆朗瑪峰有多高?”如果你問了,它可能會說,“珠穆朗瑪峰海拔 29032 英尺。”你有沒有想過它是如何為你找到答案的?
問答系統(tǒng)是一個由信息檢索( IR )和自然語言處理( NLP )組成的系統(tǒng),主要負責以自然語言回答人類提出的問題。如果您不熟悉信息檢索,它是一種從數(shù)據庫中的資源庫、網頁或文檔中獲取查詢相關信息的技術。理解這個概念最簡單的方法就是你每天使用的搜索引擎。
然后,您需要 NLP 系統(tǒng)在 IR 系統(tǒng)中查找與查詢相關的答案。雖然我剛剛列出了構建 QA 系統(tǒng)所需的內容,但從頭開始構建 IR 和 NLP 并不是一項簡單的任務。以下是 NVIDIA Riva 如何使開發(fā) QA 系統(tǒng)變得容易。
Riva 概述
NVIDIA Riva 是一款 GPU – 加速 SDK ,用于構建使用端到端深度學習管道的多模式對話 AI 服務。 Riva 框架包括針對語音、視覺和自然語言理解( NLU )任務的優(yōu)化服務。除了為您的對話 AI 服務的整個管道提供幾個預先訓練的模型外, Riva 的體系結構也適合大規(guī)模部署。在本文中,我將仔細研究 Riva 的 QA 功能,以及如何使用它創(chuàng)建自己的 QA 應用程序。
Riva 質量保證功能
要了解 Riva QA 功能的工作原理,請從 transformers ( BERT )的雙向編碼器表示開始。這是谷歌在 2018 年開發(fā)的一種基于 transformer 的 NLP 預訓練方法,它徹底改變了 NLP 領域。 BERT 理解文本中給定單詞的上下文表示。它是根據包括維基百科在內的大量數(shù)據進行預訓練的。
使用預訓練的 BERT ,一個強大的 NLP 引擎,您可以進一步微調它,以對許多問答對執(zhí)行 QA ,就像斯坦福問答數(shù)據集( SQuAD )中的問答對一樣。該模型現(xiàn)在可以從給定的上下文中找到自然語言問題的答案:句子或段落。圖 1 顯示了一個 QA 示例,其中突出顯示了“重力”一詞,作為對“是什么導致降水量下降?”問題的回答。在本例中,段落是上下文,成功微調的 QA 模型返回單詞“重力”作為答案。

圖 1 團隊數(shù)據集中一篇示例文章的問答對。
使用 Riva 創(chuàng)建 QA 系統(tǒng)
NVIDIA 的工程師和研究人員團隊提供了質量保證功能,您可以直接使用 Riva 。 Riva NLP 服務提供了一組高級 API 操作,包括 QA 、 NaturalQuery 。 Wikipedia API 操作允許您獲取在線百科全書 Wikipedia 上發(fā)布的文章,并使用自然語言進行查詢。這就是我之前討論過的信息檢索系統(tǒng)。結合 WikipediaAPI 操作和 Riva QA 函數(shù),您可以使用幾行 Python 代碼創(chuàng)建一個簡單的 QA 系統(tǒng)。
首先安裝 Wikipedia API for Python 。接下來,導入 Riva NLP 服務 API 和 gRPC ,這是 Riva 的底層通信框架。
import grpc import riva_api.riva_nlp_pb2 as rnlp import riva_api.riva_nlp_pb2_grpc as rnlp_srv
現(xiàn)在,創(chuàng)建一個輸入查詢。使用 Wikipedia API 操作獲取相關文章,并定義要獲取的文章數(shù)量,定義為max_articles_combine。問一個問題,“什么是語音識別?”然后打印出搜索返回的文章的標題。最后,將每篇文章的摘要添加到變量combined_summary中。
input_query = "What is speech recognition?"
wiki_articles = wiki.search(input_query)
max_articles_combine = 3
combined_summary = ""
if len(wiki_articles) == 0:
print("ERROR: Could not find any matching results in Wikipedia.")
else:
for article in wiki_articles[:min(len(wiki_articles), max_articles_combine)]:
print(f"Getting summary for: {article}")
combined_summary += "
" + wiki.summary(article)
圖 2 .維基百科 API 操作獲取的文章標題。
接下來,打開指向 Riva 服務器運行位置的 gRPC 通道。因為您正在本地運行 Riva 服務器,所以它是“localhost:50051”。然后,實例化NaturalQueryRequest,并向 Riva 服務器發(fā)送請求,同時傳遞查詢和上下文。最后,打印從 Riva 服務器返回的響應。
channel = grpc.insecure_channel('localhost:50051')
riva_nlp = rnlp_srv.RivaLanguageUnderstandingStub(channel)req = rnlp.NaturalQueryRequest()
req.query = input_query
req.context = combined_summary
resp = riva_nlp.NaturalQuery(req)
print(f"Query: {input_query}")
print(f"Answer: {resp.results[0].answer}")
圖 3 .查詢和回答示例概括
使用 Riva QA 和 Wikipedia API 操作,您只需創(chuàng)建一個簡單的 QA 應用程序。如果維基百科中有一篇文章與你的查詢相關,理論上你可以找到答案。想象一下,你有一個數(shù)據庫,里面裝滿了與你的領域、公司、行業(yè)或任何感興趣的東西相關的文章。您可以創(chuàng)建一個 QA 服務,該服務可以找到特定于您感興趣領域的問題的答案。顯然,您需要一個 IR 系統(tǒng)從數(shù)據庫中獲取相關文章,就像本文中使用的 Wikipedia API 操作一樣。當你有了紅外系統(tǒng), Riva 可以幫你找到答案。我們期待著您將使用 Riva 創(chuàng)建的酷應用程序。
關于作者
James Sohn 是 NVIDIA 的深度學習技術營銷工程師,專注于多模態(tài)對話 AI 框架 Riva 。杰姆斯獲得了西北大學的機器人學碩士學位,在那里他專注于計算機視覺和人體運動建模與機器學習。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5708瀏覽量
110173 -
機器學習
+關注
關注
67文章
8569瀏覽量
137335 -
深度學習
+關注
關注
73文章
5612瀏覽量
124689
發(fā)布評論請先 登錄
S32K3跳轉到應用程序后,PTD5上沒有活動,為什么?
RDMA設計56:如何設計基于RDMA的應用程序
NVIDIA NVQLink推動量子計算迎來轉折點
如何構建藍牙應用程序?
小藝開放平臺快速創(chuàng)建鴻蒙智能體
NVIDIA DGX Spark助力構建自己的AI模型
NVIDIA DGX Spark快速入門指南
學生適合使用的SOLIDWORKS 云應用程序
如何使用NVIDIA Riva快速創(chuàng)建自己的QA應用程序
評論