你很有可能問過聰明的演講者一個問題,比如“珠穆朗瑪峰有多高?”如果你問了,它可能會說,“珠穆朗瑪峰海拔 29032 英尺。”你有沒有想過它是如何為你找到答案的?
問答系統是一個由信息檢索( IR )和自然語言處理( NLP )組成的系統,主要負責以自然語言回答人類提出的問題。如果您不熟悉信息檢索,它是一種從數據庫中的資源庫、網頁或文檔中獲取查詢相關信息的技術。理解這個概念最簡單的方法就是你每天使用的搜索引擎。
然后,您需要 NLP 系統在 IR 系統中查找與查詢相關的答案。雖然我剛剛列出了構建 QA 系統所需的內容,但從頭開始構建 IR 和 NLP 并不是一項簡單的任務。以下是 NVIDIA Riva 如何使開發 QA 系統變得容易。
Riva 概述
NVIDIA Riva 是一款 GPU – 加速 SDK ,用于構建使用端到端深度學習管道的多模式對話 AI 服務。 Riva 框架包括針對語音、視覺和自然語言理解( NLU )任務的優化服務。除了為您的對話 AI 服務的整個管道提供幾個預先訓練的模型外, Riva 的體系結構也適合大規模部署。在本文中,我將仔細研究 Riva 的 QA 功能,以及如何使用它創建自己的 QA 應用程序。
Riva 質量保證功能
要了解 Riva QA 功能的工作原理,請從 transformers ( BERT )的雙向編碼器表示開始。這是谷歌在 2018 年開發的一種基于 transformer 的 NLP 預訓練方法,它徹底改變了 NLP 領域。 BERT 理解文本中給定單詞的上下文表示。它是根據包括維基百科在內的大量數據進行預訓練的。
使用預訓練的 BERT ,一個強大的 NLP 引擎,您可以進一步微調它,以對許多問答對執行 QA ,就像斯坦福問答數據集( SQuAD )中的問答對一樣。該模型現在可以從給定的上下文中找到自然語言問題的答案:句子或段落。圖 1 顯示了一個 QA 示例,其中突出顯示了“重力”一詞,作為對“是什么導致降水量下降?”問題的回答。在本例中,段落是上下文,成功微調的 QA 模型返回單詞“重力”作為答案。
圖 1 團隊數據集中一篇示例文章的問答對。
使用 Riva 創建 QA 系統
NVIDIA 的工程師和研究人員團隊提供了質量保證功能,您可以直接使用 Riva 。 Riva NLP 服務提供了一組高級 API 操作,包括 QA 、 NaturalQuery 。 Wikipedia API 操作允許您獲取在線百科全書 Wikipedia 上發布的文章,并使用自然語言進行查詢。這就是我之前討論過的信息檢索系統。結合 WikipediaAPI 操作和 Riva QA 函數,您可以使用幾行 Python 代碼創建一個簡單的 QA 系統。
首先安裝 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
現在,創建一個輸入查詢。使用 Wikipedia API 操作獲取相關文章,并定義要獲取的文章數量,定義為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)
接下來,打開指向 Riva 服務器運行位置的 gRPC 通道。因為您正在本地運行 Riva 服務器,所以它是“localhost:50051
”。然后,實例化NaturalQueryRequest
,并向 Riva 服務器發送請求,同時傳遞查詢和上下文。最后,打印從 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}")
概括
使用 Riva QA 和 Wikipedia API 操作,您只需創建一個簡單的 QA 應用程序。如果維基百科中有一篇文章與你的查詢相關,理論上你可以找到答案。想象一下,你有一個數據庫,里面裝滿了與你的領域、公司、行業或任何感興趣的東西相關的文章。您可以創建一個 QA 服務,該服務可以找到特定于您感興趣領域的問題的答案。顯然,您需要一個 IR 系統從數據庫中獲取相關文章,就像本文中使用的 Wikipedia API 操作一樣。當你有了紅外系統, Riva 可以幫你找到答案。我們期待著您將使用 Riva 創建的酷應用程序。
關于作者
James Sohn 是 NVIDIA 的深度學習技術營銷工程師,專注于多模態對話 AI 框架 Riva 。杰姆斯獲得了西北大學的機器人學碩士學位,在那里他專注于計算機視覺和人體運動建模與機器學習。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5059瀏覽量
103413 -
機器學習
+關注
關注
66文章
8429瀏覽量
132854 -
深度學習
+關注
關注
73文章
5511瀏覽量
121355
發布評論請先 登錄
相關推薦
評論