1,拆分問答庫,將文本分別拆分成問題庫和答案庫。
2.文本處理問題:循環處理問題庫中的每個問題。每個問題的文本處理:首先加載停用詞庫,用nltk分詞對問題進行小寫,去掉停用詞,對值進行歸壹化,然後重新加入壹個問題庫,用zipf定律對這個處理後的問題庫進行詞頻過濾。對輸入問題進行文本處理。將處理後的問題庫詞矢量化後計算問題庫向量的L2範數(使用qlove或word2vec,包子詞的矢量化是將詞向量相加,取平均值)。對處理後的輸入問題詞進行量化,並計算問題向量的L2範數。
3.建立壹個簡單的倒排表。
4.利用倒排表計算問題庫的詞向量與輸入問題詞向量的余弦相似度。
5.建立優先級隊列,用(優先級(余弦相似度),相似度對應的問題答案下標)(值越小,優先級越大)找出ToD對應的答案下標。
6.根據找到的答案下標到答案庫,然後遍歷打印。