天天看點

關于一種自然語言問答系統的構造(c++)

在大學的時候做一個語音識别與互動系統,利用了各項技術的合成

主要結構及實作方法如下:

關于一種自然語言問答系統的構造(c++)
關于一種自然語言問答系統的構造(c++)
關于一種自然語言問答系統的構造(c++)

其中:

語音識别與發聲子產品:主要是将語音信号轉化成文字(SR,speechrecognition),以及将文字轉化成語音資訊輸出(TTS,Text-To-Speech)。

分詞子產品:主要是将識别出的語句進行分詞處理,對分出來的詞語進行詞性标注,并且可以自定義詞語及詞性。

文檔檢索子產品:主要是對文檔中的内容進行索引的建立,并且根據檢索的詞條确定文檔及機率。

文本内搜尋子產品:主要是在文檔檢索子產品傳回的文檔中檢索該關鍵詞所對應的問題及答案。

回報子產品:主要是分析識别的結果,并調用發聲子產品或者底層運動等子產品,對識别的資訊進行相應的回報。

問答庫爬取與建立子產品:主要是對網頁上的資訊進行爬取分析,并将合适的問題及答案以關鍵字拼音、關鍵字、問題及答案的方式存儲在本地檔案中。

文本糾錯子產品:主要是輔助識别與檢索的,将漢字轉成拼音,進而利用拼音進行比對比較,從一定程度上改善識别及回報效果。

從整個前端到後端前面一部分的技術實作已經比較成熟,可以進行較好實作的包括:微軟的Speech Platform,劍橋大學的HTK以及日本京都大學和日本IPA的Julius。

微軟的SAPI提供SR和TTS兩部分,SR能将語音信号轉化成文字輸出,而TTS能根據安裝的語音包将字元串讀出來。而對于識别規則,SAPI支援XML對上下文無關文法的構造。

在本項目中是利用微軟的SAPI進行開發,自己對文法規則進行構造,對中文含義進行了解,然後采取相應的回報。

對于後端,在自然問答方面,基于語義了解的方式存在的困難較大,而基于大量資料的比對在當下則較為流行,其中全文檢索引擎Lucene是比較好的選擇,其c語言版本的CLucene在速度上更占優勢而且和開發環境更相容,是以在檢索方面采用CLucene全文檢索引擎。

分詞是銜接前後端的一種重要操作。而當下中文分詞技術較為成熟的則是中科院的分詞系統ICTCLAS10,其不僅識别率高而且反應速度快。是以,在分詞方面采用ICTCLAS10。

關于各個子產品的具體實作,在以後章節中進行詳細的介紹。