基於檢索的問答系統(recap: retrieval-based qa system)
我們輸入一句話。需要計算語料庫中每句話和當前輸入這句話的相似度,然後返回相似度最高的那個。
這種方法的時間複雜度為o(n),,如果語料庫中的有10^7個問題,那麼在計算乙個輸入的時候,要計算10^7次。
針對該方法,我們可以優化處理。
核心思想為:層次過濾思想。
我們可以先計算出詞與文件的倒排表。
比如詞典為[我們,今天,運動,昨天,上,什麼,課]
s1:我們、今天、運動
s2:我們、昨天、運動
s3:你們、上 課
s4:你們、上、什麼、課
那我們可以得出。
我們:[s1,s2] *****===》我們包含在s1,s2中
今天:[s1]
運動:[s1,s2]
昨天:[s2]
上:[s3,s4]
課:[s3,s4]
什麼:[s4]
假定現在輸入的問題是我們上課,那我們可以根據倒排表判斷,同時出現我們和上課的句子[s1,s2],[s3,s4]
則返回[s1,s2,s3,s4].
一般根據倒排表,可以過濾掉大部分的問題,留下來的我們再做進一步篩選。
核心思想就是找出倒排表,跟句詞典找出每個詞存在哪些文件。然後將輸入的文字進行分詞。去查詢具體的詞存在與哪些文件或者問題。
NLP學習之隨筆(1)
nlp一般的處理流程為 原始文字 raw data 分詞 segmentation 清洗資料 cleaning 標準化 normalization 特徵提取 feature extraction 建模 modeling 1 分詞 常見的分詞工具有 jieba分詞 snownlp ltp hannlp...
NLP學習之隨筆(3)
spell correction 拼寫錯誤糾正 那麼什麼是拼接錯誤糾正。請看一下例子。簡而言之,就是使用者的輸入和使用者真正要輸入的存在一定的出入。這種出入可以是英文的拼寫錯誤,也可以是中文的同音詞。那麼對於拼寫錯誤,我們應該去如何解決呢。比如there 和therr。使用者的輸入可能是therr,...
python學習隨筆6
從上面的那張圖中可以發現,我們所說的類應該是包含屬性 變數 和方法 函式 但是上圖中並沒有體現出這兩者。但我個人覺得def init self 就是屬性的一種變形式,雖然圖中寫的是 實質為方法,人家確實就是函式嘛!然而這時我個人目前的理解。為什麼這麼理解呢,我給出了一下是兩個理由 1 init通常是...