精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于BERT算法搭建一個問答搜索引擎

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-30 11:46 ? 次閱讀

鼎鼎大名的 Bert 算法相信大部分同學都聽說過,它是Google推出的NLP領域“王炸級”預訓練模型,其在NLP任務中刷新了多項記錄,并取得state of the art的成績。

但是有很多深度學習的新手發現BERT模型并不好搭建,上手難度很高,普通人可能要研究幾天才能勉強搭建出一個模型。

沒關系,今天我們介紹的這個模塊,能讓你在3分鐘內基于BERT算法搭建一個問答索引擎。它就是 bert-as-service 項目。這個開源項目,能夠讓你基于多GPU機器快速搭建BERT服務(支持微調模型),并且能夠讓多個客戶端并發使用。

1.準備

開始之前,你要確保Pythonpip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。

**(可選1) **如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環境 打開 Cmd (開始-運行-CMD)。
  2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install bert-serving-server # 服務端
pip install bert-serving-client # 客戶端

請注意,服務端的版本要求: Python >= 3.5Tensorflow >= 1.10

此外還要下載預訓練好的BERT模型,在 https://github.com/hanxiao/bert-as-service#install 上可以下載。

也可在Python實用寶典后臺回復 bert-as-service 下載這些預訓練好的模型。

下載完成后,將 zip 文件解壓到某個文件夾中,例如 /tmp/english_L-12_H-768_A-12/

2.Bert-as-service 基本使用

安裝完成后,輸入以下命令啟動BERT服務:

bert-serving-start -model_dir /tmp/english_L-12_H-768_A-12/ -num_worker=4

-num_worker=4 代表這將啟動一個有四個worker的服務,意味著它最多可以處理四個并發請求。超過4個其他并發請求將在負載均衡器中排隊等待處理。

下面顯示了正確啟動時服務器的樣子:

圖片

使用客戶端獲取語句的編碼

現在你可以簡單地對句子進行編碼,如下所示:

from bert_serving.client import BertClient
bc = BertClient()
bc.encode(['First do it', 'then do it right', 'then do it better'])

作為 BERT 的一個特性,你可以通過將它們與 |||(前后有空格)連接來獲得一對句子的編碼,例如

bc.encode(['First do it ||| then do it right'])

圖片

遠程使用 BERT 服務

你還可以在一臺 (GPU) 機器上啟動服務并從另一臺 (CPU) 機器上調用它,如下所示:

# on another CPU machine
from bert_serving.client import BertClient
bc = BertClient(ip='xx.xx.xx.xx') # ip address of the GPU machine
bc.encode(['First do it', 'then do it right', 'then do it better'])

3.搭建問答搜索引擎

我們將通過 bert-as-service 從FAQ 列表中找到與用戶輸入的問題最相似的問題,并返回相應的答案。

FAQ列表你也可以在 Python實用寶典后臺回復 bert-as-service 下載。

首先,加載所有問題,并顯示統計數據:

prefix_q = '##### **Q:** '
with open('README.md') as fp:
    questions = [v.replace(prefix_q, '').strip() for v in fp if v.strip() and v.startswith(prefix_q)]
    print('%d questions loaded, avg. len of %d' % (len(questions), np.mean([len(d.split()) for d in questions])))
    # 33 questions loaded, avg. len of 9

一共有33個問題被加載,平均長度是9.

然后使用預訓練好的模型:uncased_L-12_H-768_A-12 啟動一個Bert服務:

bert-serving-start -num_worker=1 -model_dir=/data/cips/data/lab/data/model/uncased_L-12_H-768_A-12

接下來,將我們的問題編碼為向量:

bc = BertClient(port=4000, port_out=4001)
doc_vecs = bc.encode(questions)

最后,我們準備好接收用戶的查詢,并對現有問題執行簡單的“模糊”搜索。

為此,每次有新查詢到來時,我們將其編碼為向量并計算其點積 ** doc_vecs **然后對結果進行降序排序,返回前N個類似的問題:

while True:
    query = input('your question: ')
    query_vec = bc.encode([query])[0]
    # compute normalized dot product as score
    score = np.sum(query_vec * doc_vecs, axis=1) / np.linalg.norm(doc_vecs, axis=1)
    topk_idx = np.argsort(score)[::-1][:topk]
    for idx in topk_idx:
        print(' > %st%s' % (score[idx], questions[idx]))

完成! 現在運行代碼并輸入你的查詢,看看這個搜索引擎如何處理模糊匹配:

圖片

完整代碼如下,一共23行代碼(在后臺回復關鍵詞也能下載):

上滑查看完整代碼

import numpyas np
from bert_serving.clientimport BertClient
from termcolorimport colored

prefix_q ='##### **Q:** '
topk =5

with open('README.md')as fp:
questions = [v.replace(prefix_q,'').strip()for vin fpif v.strip()and v.startswith(prefix_q)]
print('%d questions loaded, avg. len of %d' % (len(questions), np.mean([len(d.split())for din questions])))

with BertClient(port=4000, port_out=4001)as bc:
doc_vecs = bc.encode(questions)

while True:
query = input(colored('your question: ','green'))
query_vec = bc.encode([query])[0]
# compute normalized dot product as score
score = np.sum(query_vec * doc_vecs, axis=1) / np.linalg.norm(doc_vecs, axis=1)
topk_idx = np.argsort(score)[::-1][:topk]
print('top %d questions similar to "%s"' % (topk, colored(query,'green')))
for idxin topk_idx:
print(' > %st%s' % (colored('%.1f' % score[idx],'cyan'), colored(questions[idx],'yellow')))

夠簡單吧?當然,這是一個基于預訓練的Bert模型制造的一個簡單QA搜索模型。

你還可以微調模型,讓這個模型整體表現地更完美,你可以將自己的數據放到某個目錄下,然后執行 run_classifier.py 對模型進行微調,比如這個例子:

https://github.com/google-research/bert#sentence-and-sentence-pair-classification-tasks

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4703

    瀏覽量

    128718
  • 算法
    +關注

    關注

    23

    文章

    4601

    瀏覽量

    92664
  • 搜索引擎
    +關注

    關注

    0

    文章

    117

    瀏覽量

    13351
  • 模型
    +關注

    關注

    1

    文章

    3177

    瀏覽量

    48725
收藏 人收藏

    評論

    相關推薦

    [分享]最強山寨版搜索引擎震驚世界-熊熊搜索

    。在記者嘗試著搜索關鍵詞后,集合了多個搜索引擎的組合頁面出現在屏幕上。界面上不僅詳細列出
    發表于 11-22 18:58

    參加搜索引擎營銷SEM培訓的好處?

    參加搜索引擎營銷SEM培訓進入搜索引擎行業,跟隨各大搜索引擎起成長;4. 可以通過校友會認識大量業界專家和從業者,為日后的職業發展廣聚人脈資源;北京鼎泰恒業網絡營銷培訓學校010-5
    發表于 04-11 14:21

    基于網格技術的并行搜索引擎

    研究現有網格技術和搜索技術,分析并行搜索引擎的優點和不足,提出基于網格技術的并行搜索引擎解決方案,其中包含3 層結構的應用框架和
    發表于 03-30 10:09 ?23次下載

    搜索引擎查詢日志的聚類

    隨著搜索引擎技術和網絡數據挖掘技術的發展,怎樣從搜索引擎查詢日志中找到有用的信息成為研究熱點。該文在討論Beeferman提出的算法及Chan對其改進的算法的優缺點后,提出
    發表于 04-02 08:49 ?27次下載

    原創優先的搜索引擎排序算法

    現有的搜索引擎排序算法大多根據網頁之間的鏈接關系進行排序,沒有考慮原創和轉載文章之間的優先次序。該文提出種適用于專業搜索引擎的新型排序算法
    發表于 04-16 08:43 ?20次下載

    教育網BBS搜索引擎設計與實現

    BBS 是教育網的大特色,也是傳統搜索引擎搜索的盲點,本文系統介紹了根據教育網BBS 的特點建立BBS 搜索引擎的關鍵技術和實現方法。關鍵詞:搜索
    發表于 06-17 11:28 ?14次下載

    主題搜索引擎的研究

    介紹了將開源的全文檢索工具包Lucene嵌入到自己的搜索引擎中來滿足開發主題搜索引擎的需求。并基于Lucene中文分詞的不足設計了比較完善的中文分詞器,然后將其引入具體應
    發表于 07-05 16:30 ?11次下載

    網絡搜索引擎,網絡搜索引擎的工作原理

    網絡搜索引擎,網絡搜索引擎的工作原理 21 世紀是信息時代,隨著信息科學技術的不斷發展,網絡已成為人們生活中的重要組成部分,網上
    發表于 03-26 15:51 ?1439次閱讀

    基于JAVA技術的搜索引擎的研究與實現

    本文還利用Java技術對搜索引擎的三核心部分即網絡蜘蛛、網頁索引搜索進行了實現。索引搜索
    發表于 05-07 14:14 ?35次下載
    基于JAVA技術的<b class='flag-5'>搜索引擎</b>的研究與實現

    大規模超文本網絡搜索引擎剖析(英文版)

    大規模超文本網絡搜索引擎剖析(英文版)
    發表于 04-30 14:09 ?0次下載

    垂直搜索引擎是什么_垂直搜索引擎有哪些

    垂直搜索引擎是針對某一個行業的專業搜索引擎,是搜索引擎的細分和延伸,是對網頁庫中的某類專門的信息進行次整合,定向分字段抽取出需要的數據進行
    發表于 01-04 17:19 ?7898次閱讀

    Valossa推出由AI算法驅動的智能電影搜索引擎

    whatismymovie.com可以通過關鍵詞或描述搜索相應的電影,但它不是普通網站,而是由AI
    的頭像 發表于 02-09 10:04 ?7903次閱讀

    介紹五具有高級功能的搜索引擎

    數據庫里存儲的大量的信息對標準的搜索引擎來說是不可見的,標準的搜索引擎只是索引網站上的內容,從鏈接到另
    的頭像 發表于 04-04 09:13 ?7082次閱讀

    蘋果自研的搜索引擎干的過谷歌嗎?

    據TNW報道,蘋果正在加快研發自己的搜索引擎,以取代谷歌。推出自己的搜索引擎,將有利于蘋果的產品服務的推廣,同時削弱谷歌在搜索領域的壟斷地位。
    的頭像 發表于 12-22 14:54 ?1924次閱讀

    NAS下搭建linux命令搜索引擎教程

    前面寫到了程序專用的vscode,今天再來介紹款程序佬專用的搜索引擎——Linux命令搜索引擎。該引擎專用于搜索Linux下的各種命令,畢
    的頭像 發表于 02-24 11:33 ?1082次閱讀
    NAS下<b class='flag-5'>搭建</b>linux命令<b class='flag-5'>搜索引擎</b>教程