• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 數據科學

    使用 NVIDIA Riva 快速開發問答應用程序

    你很有可能問過聰明的演講者一個問題,比如“珠穆朗瑪峰有多高?”如果你問了,它可能會說,“珠穆朗瑪峰海拔 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 模型返回單詞“重力”作為答案。

    A paragraph describing the meteorological explanation of precipitation. It has three pairs of questions and answers at the bottom.
    圖 1 .團隊數據集中一篇示例文章的問答對。
    來源: 團隊: 100000 多個問題,用于機器理解文本

    使用 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 的底層通信框架。

    !pip install wikipedia
    import wikipedia as wiki
    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)
    The figure shows the printed output of the Python code run, three articles related to speech recognition.
    圖 2 .維基百科 API 操作獲取的文章標題。

    接下來,打開指向 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}")
    The output of the Python code run, the query and answer, generated by the Riva QA function.
    圖 3 .查詢和回答示例

    概括

    使用 Riva QA 和 Wikipedia API 操作,您只需創建一個簡單的 QA 應用程序。如果維基百科中有一篇文章與你的查詢相關,理論上你可以找到答案。想象一下,你有一個數據庫,里面裝滿了與你的領域、公司、行業或任何感興趣的東西相關的文章。您可以創建一個 QA 服務,該服務可以找到特定于您感興趣領域的問題的答案。顯然,您需要一個 IR 系統從數據庫中獲取相關文章,就像本文中使用的 Wikipedia API 操作一樣。當你有了紅外系統, Riva 可以幫你找到答案。我們期待著您將使用 Riva 創建的酷應用程序。

    ?

    0

    標簽

    人人超碰97caoporen国产