日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python 教你三分鐘用 Bert 搭建問答搜索引擎

來源: 責編: 時間:2024-04-29 16:17:28 257觀看
導讀鼎鼎大名的 Bert 算法相信大部分同學都聽說過,它是Google推出的NLP領域“王炸級”預訓練模型,其在NLP任務中刷新了多項記錄,并取得state of the art的成績。但是有很多深度學習的新手發現BERT模型并不好搭建,上手難度很高

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

但是有很多深度學習的新手發現BERT模型并不好搭建,上手難度很高,普通人可能要研究幾天才能勉強搭建出一個模型。4PO28資訊網——每日最新資訊28at.com

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

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。4PO28資訊網——每日最新資訊28at.com

(可選1) 如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.4PO28資訊網——每日最新資訊28at.com

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南。4PO28資訊網——每日最新資訊28at.com

請選擇以下任一種方式輸入命令安裝依賴:1. Windows 環境 打開 Cmd (開始-運行-CMD)。2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.4PO28資訊網——每日最新資訊28at.com

pip install bert-serving-server # 服務端pip install bert-serving-client # 客戶端

請注意,服務端的版本要求:Python >= 3.5,Tensorflow >= 1.10 。4PO28資訊網——每日最新資訊28at.com

此外還要下載預訓練好的BERT模型,在 https://github.com/hanxiao/bert-as-service#install 上可以下載,如果你無法訪問該網站,也可以在 https://pythondict.com/download/bert-serving-model/ 此處下載。4PO28資訊網——每日最新資訊28at.com

也可在Python實用寶典后臺回復 bert-as-service 下載這些預訓練好的模型。4PO28資訊網——每日最新資訊28at.com

下載完成后,將 zip 文件解壓到某個文件夾中,例如 /tmp/uncased_L-24_H-1024_A-16/.4PO28資訊網——每日最新資訊28at.com

2.Bert-as-service 基本使用

安裝完成后,輸入以下命令啟動BERT服務:4PO28資訊網——每日最新資訊28at.com

bert-serving-start -model_dir /tmp/uncased_L-24_H-1024_A-16/ -num_worker=4

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

下面顯示了正確啟動時服務器的樣子:4PO28資訊網——每日最新資訊28at.com

圖片圖片4PO28資訊網——每日最新資訊28at.com

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

現在你可以簡單地對句子進行編碼,如下所示:4PO28資訊網——每日最新資訊28at.com

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

作為 BERT 的一個特性,你可以通過將它們與 |||(前后有空格)連接來獲得一對句子的編碼,例如4PO28資訊網——每日最新資訊28at.com

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

圖片圖片4PO28資訊網——每日最新資訊28at.com

遠程使用 BERT 服務

你還可以在一臺 (GPU) 機器上啟動服務并從另一臺 (CPU) 機器上調用它,如下所示:4PO28資訊網——每日最新資訊28at.com

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

3.搭建問答搜索引擎

我們將通過 bert-as-service 從FAQ 列表中找到與用戶輸入的問題最相似的問題,并返回相應的答案。4PO28資訊網——每日最新資訊28at.com

FAQ列表其實就是官方文檔的readme.md, 在我提供的下載鏈接里也附帶了。4PO28資訊網——每日最新資訊28at.com

  • 加載所有問題,并顯示統計數據:
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.4PO28資訊網——每日最新資訊28at.com

  • 然后使用預訓練好的模型: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個類似的問題:4PO28資訊網——每日最新資訊28at.com

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('> %s/t%s' % (score[idx], questions[idx]))

完成!現在運行代碼并輸入你的查詢,看看這個搜索引擎如何處理模糊匹配:4PO28資訊網——每日最新資訊28at.com

圖片圖片4PO28資訊網——每日最新資訊28at.com

完整代碼如下,一共23行代碼:4PO28資訊網——每日最新資訊28at.com

import numpy as npfrom bert_serving.client import BertClientfrom termcolor import coloredprefix_q = '##### **Q:** 'topk = 5with 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])))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 idx in topk_idx:            print('> %s/t%s' % (colored('%.1f' % score[idx], 'cyan'), colored(questions[idx], 'yellow')))

夠簡單吧?當然,這是一個基于預訓練的Bert模型制造的一個簡單QA搜索模型。4PO28資訊網——每日最新資訊28at.com

你還可以微調模型,讓這個模型整體表現地更完美,你可以將自己的數據放到某個目錄下,然后執行 run_classifier.py 對模型進行微調,比如這個例子:4PO28資訊網——每日最新資訊28at.com

https://github.com/google-research/bert#sentence-and-sentence-pair-classification-tasks4PO28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-86511-0.htmlPython 教你三分鐘用 Bert 搭建問答搜索引擎

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 系統設計中跨時區問題的解決方案

下一篇: Google 孵化了三個Go安全庫,推薦使用!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩mp4| 午夜视频一区在线观看| 国内综合精品午夜久久资源| 国外成人在线| 亚洲欧洲日产国产网站| 亚洲视频国产视频| 久久精品国产精品亚洲精品| 模特精品在线| 国产精品国产精品| 国内揄拍国内精品久久| 亚洲毛片在线看| 香蕉乱码成人久久天堂爱免费| 久久久久久夜精品精品免费| 欧美激情一二三区| 国产欧美精品在线播放| 亚洲国产成人av好男人在线观看| 亚洲伦理一区| 久久er99精品| 欧美成人一区二区三区在线观看| 欧美日韩一区二区精品| 国产午夜精品全部视频播放 | 久久影院午夜论| 欧美日韩中文字幕在线| 国产综合一区二区| 亚洲人成欧美中文字幕| 性色一区二区| 欧美日韩ab片| 伊人久久成人| 亚洲欧美日韩成人| 欧美激情精品久久久久久大尺度| 国产欧美一区二区三区另类精品 | 久久久国产精品一区二区三区| 欧美日韩国产三级| 极品少妇一区二区三区| 亚洲午夜久久久久久久久电影院| 理论片一区二区在线| 国产精品视频一二三| 亚洲精品国久久99热| 久久久999| 国产精品日本一区二区| 亚洲理伦在线| 国产欧美日韩综合一区在线播放 | 欧美ed2k| 国产精品综合视频| 亚洲精品国产精品国自产观看浪潮 | 亚洲欧美综合网| 欧美大色视频| 激情丁香综合| 欧美一区二区三区免费看| 欧美色中文字幕| 91久久久亚洲精品| 久久久免费av| 国产亚洲在线观看| 亚洲欧美日韩精品一区二区 | 国产精品嫩草99a| 99精品国产热久久91蜜凸| 乱中年女人伦av一区二区| 国产区在线观看成人精品| 中文久久精品| 欧美精品一区二区三区在线播放 | 999亚洲国产精| 亚洲精品日韩精品| 久久国产精品一区二区| 欧美系列精品| 一本一本久久a久久精品综合妖精| 欧美成人免费小视频| 狠狠色丁香婷婷综合| 香蕉久久一区二区不卡无毒影院| 欧美肉体xxxx裸体137大胆| 欧美大色视频| 精品成人在线| 久久久国产成人精品| 国产精品一区二区在线观看网站| 在线一区观看| 欧美亚州韩日在线看免费版国语版| 99精品欧美一区二区蜜桃免费| 毛片av中文字幕一区二区| 激情视频一区| 久热精品在线| 亚洲高清视频在线观看| 欧美.www| 亚洲精品欧美日韩| 欧美精品一区二区三区在线看午夜 | 亚洲色在线视频| 欧美xart系列在线观看| 在线观看日韩| 欧美亚洲一级| 国产精品丝袜白浆摸在线| 亚洲视频在线观看视频| 欧美日韩中国免费专区在线看| 99re在线精品| 欧美香蕉大胸在线视频观看| 亚洲私人影吧| 国产精品国产三级国产专播精品人| 亚洲尤物视频网| 国产精品资源在线观看| 欧美亚洲综合另类| 国产一区二区三区直播精品电影| 久久国产一区| 在线观看三级视频欧美| 欧美bbbxxxxx| 中日韩在线视频| 国产精品综合不卡av| 久久不射中文字幕| 亚洲第一综合天堂另类专| 欧美电影免费观看高清| 9久re热视频在线精品| 国产精品高清一区二区三区| 香蕉久久夜色精品国产| 黄色工厂这里只有精品| 欧美不卡一区| 欧美视频免费在线| 亚洲精品乱码久久久久久蜜桃91| 欧美激情第1页| 这里只有视频精品| 国产精品视频yy9299一区| 欧美在线视频全部完| 黄页网站一区| 欧美理论电影在线观看| 亚洲欧美www| 黄色成人小视频| 欧美激情区在线播放| 亚洲一区免费| 国语自产在线不卡| 欧美裸体一区二区三区| 亚洲欧美中文在线视频| 一区在线播放| 欧美午夜一区二区| 久久亚洲一区二区| 中文精品视频一区二区在线观看| 韩日精品在线| av成人免费在线| 国产日韩欧美| 欧美激情在线有限公司| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 国产午夜精品麻豆| 欧美激情精品久久久久久久变态| 亚洲欧美日韩综合国产aⅴ| 伊人久久大香线蕉综合热线| 欧美日韩美女| 久久久精品tv| 在线午夜精品自拍| 伊人婷婷久久| 国产精品乱码| 欧美大片一区二区三区| 午夜精品视频| 日韩视频久久| 韩日在线一区| 国产精品a级| 欧美成年网站| 亚洲电影免费观看高清完整版在线| 欧美剧在线免费观看网站| 午夜精品久久久久影视| 亚洲国产影院| 国产精品一区二区男女羞羞无遮挡| 免费观看亚洲视频大全| 新片速递亚洲合集欧美合集| 亚洲理论在线| 伊人伊人伊人久久| 国产精品一区久久| 欧美日韩国产综合视频在线| 久久久久久网址| 亚洲欧美日韩精品久久奇米色影视| 亚洲美女av黄| 亚洲高清资源综合久久精品| 国产亚洲精品综合一区91| 国产精品草草| 欧美日韩成人一区二区三区| 久久亚洲一区二区三区四区| 欧美一区二区三区男人的天堂| av成人手机在线| 亚洲韩国一区二区三区| 国内成人精品一区| 国产农村妇女毛片精品久久麻豆| 欧美日韩一区在线| 欧美国产日本高清在线| 久久蜜臀精品av| 欧美中文字幕在线| 午夜精品电影| 亚洲欧美精品伊人久久| 亚洲一区二区三区欧美| 一二三四社区欧美黄| 亚洲精选一区二区| 亚洲七七久久综合桃花剧情介绍| 激情视频一区二区| 狠狠色综合日日| 国产午夜精品一区二区三区欧美| 国产精品成人一区二区| 欧美日韩调教| 欧美色视频一区| 欧美天堂在线观看| 欧美日韩国产综合网| 欧美激情一区二区久久久| 欧美激情按摩在线| 欧美精品一区二区视频| 欧美韩国一区| 欧美电影资源| 欧美国产日本在线| 亚洲精选在线观看| 亚洲精品视频在线观看免费| 91久久综合亚洲鲁鲁五月天| 亚洲国产一二三| 亚洲精品极品| 9色精品在线|