基於bert的中文語義匹配模型,判斷兩句話是不是同一個意思

  • 2019 年 10 月 28 日
  • 筆記

日趨增多的網路資訊使用戶很難迅速從搜索引擎返回的大量資訊中找到所需內容。自動問答系統為人們提供了以自然語言提問的交流方式,為用戶直接返回所需的答案而不是相關的網頁,具有方便、快捷、高效等特點。 Process:本文的問答系統採用了一個FAQ(Frequently Asked Questions)問答庫,並基於句子相似度進行設計。 1)首先建立一個足夠大的問題答案庫,即語料庫——–建庫 2)然後計算用戶提問的問題和語料庫中各個問題的相似度——-計算相似度——-餘弦定理 3)最後把相似度較高的問題所對應的答案返回給用戶。——-返回結果

本文的核心是句子相似度的計算,可以使用TF-IDF和word2vec兩種方法對問句進行向量化,並在此基礎上使用進行句子相似度的計算。

也可以利用深度學習模型做句子配對,即給定用戶描述的兩句話,用演算法來判斷是否表示了相同的語義。若語義相同則判斷為1,不相同則為0.

了解更多

https://blog.csdn.net/fkyyly/article/details/86016703

如果能夠找到相應的問題,就可以直接將問題所對應的答案返回給用戶,而不需要經過問題理解、資訊檢索、答案抽取等許多複雜的處理過程,提高了效率。FAQ(Frequently Asked Questions)系統在根據用戶問題建立候選問題集的基礎上,建立常問問題集的倒排索引,提高了系統的檢索效率,同時,與傳統的基於關鍵詞的方法相比,用基於語義的方法計算相似度提高了問題的匹配精度。

FAQ問答系統是一種已有的「問題-答案」對集合中找到與用戶提問相匹配的問句,並將其對應的答案返回給用戶的問答式檢索系統。由於FAQ問答系統免去了重新組織答案的過程,可以提高系統的效率,還可以提高答案的準確性。這其中要解決的一個關鍵問題是用戶問句與「問題-答案」對集合中問句的相似度比較,並把最佳結果返回給用戶。

利用預訓練的中文模型實現基於bert的語義匹配模型

AI項目體驗地址 https://loveai.tech

訓練腳本 train.sh

批量測試腳本 predict.sh

利用模型進行單條語句測試 intent.py

chinese_L-12_H-768_A-12為預訓練的相關模型和詞典

下載地址

https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

下載後解壓,放在項目根目錄

data文件夾中為訓練語料,驗證語料,測試語料 數據集為LCQMC官方數據

參數說明:max_seq_length sentence的最大長度(字) train_batch_size batch_size的大小

max_seq_length = 50

eval_accuracy = 0.87207

test_accuracy = 0.86272

max_seq_length = 40

eval_accuracy = 0.88093615

test_accuracy = 0.86256

訓練過程