亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于BERT算法搭建一個(gè)問(wèn)答搜索引擎

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

鼎鼎大名的 Bert 算法相信大部分同學(xué)都聽(tīng)說(shuō)過(guò),它是Google推出的NLP領(lǐng)域“王炸級(jí)”預(yù)訓(xùn)練模型,其在NLP任務(wù)中刷新了多項(xiàng)記錄,并取得state of the art的成績(jī)。

但是有很多深度學(xué)習(xí)的新手發(fā)現(xiàn)BERT模型并不好搭建,上手難度很高,普通人可能要研究幾天才能勉強(qiáng)搭建出一個(gè)模型。

沒(méi)關(guān)系,今天我們介紹的這個(gè)模塊,能讓你在3分鐘內(nèi)基于BERT算法搭建一個(gè)問(wèn)答索引擎。它就是 bert-as-service 項(xiàng)目。這個(gè)開(kāi)源項(xiàng)目,能夠讓你基于多GPU機(jī)器快速搭建BERT服務(wù)(支持微調(diào)模型),并且能夠讓多個(gè)客戶端并發(fā)使用。

1.準(zhǔn)備

開(kāi)始之前,你要確保Pythonpip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

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

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

請(qǐng)選擇以下任一種方式輸入命令安裝依賴

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

請(qǐng)注意,服務(wù)端的版本要求: Python >= 3.5Tensorflow >= 1.10 。

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

也可在Python實(shí)用寶典后臺(tái)回復(fù) bert-as-service 下載這些預(yù)訓(xùn)練好的模型。

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

2.Bert-as-service 基本使用

安裝完成后,輸入以下命令啟動(dòng)BERT服務(wù):

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

-num_worker=4 代表這將啟動(dòng)一個(gè)有四個(gè)worker的服務(wù),意味著它最多可以處理四個(gè)并發(fā)請(qǐng)求。超過(guò)4個(gè)其他并發(fā)請(qǐng)求將在負(fù)載均衡器中排隊(duì)等待處理。

下面顯示了正確啟動(dòng)時(shí)服務(wù)器的樣子:

圖片

使用客戶端獲取語(yǔ)句的編碼

現(xiàn)在你可以簡(jiǎn)單地對(duì)句子進(jìn)行編碼,如下所示:

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

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

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

圖片

遠(yuǎn)程使用 BERT 服務(wù)

你還可以在一臺(tái) (GPU) 機(jī)器上啟動(dòng)服務(wù)并從另一臺(tái) (CPU) 機(jī)器上調(diào)用它,如下所示:

# 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.搭建問(wèn)答搜索引擎

我們將通過(guò) bert-as-service 從FAQ 列表中找到與用戶輸入的問(wèn)題最相似的問(wèn)題,并返回相應(yīng)的答案。

FAQ列表你也可以在 Python實(shí)用寶典后臺(tái)回復(fù) bert-as-service 下載。

首先,加載所有問(wèn)題,并顯示統(tǒng)計(jì)數(shù)據(jù):

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個(gè)問(wèn)題被加載,平均長(zhǎng)度是9.

然后使用預(yù)訓(xùn)練好的模型:uncased_L-12_H-768_A-12 啟動(dòng)一個(gè)Bert服務(wù):

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

接下來(lái),將我們的問(wèn)題編碼為向量:

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

最后,我們準(zhǔn)備好接收用戶的查詢,并對(duì)現(xiàn)有問(wèn)題執(zhí)行簡(jiǎn)單的“模糊”搜索。

為此,每次有新查詢到來(lái)時(shí),我們將其編碼為向量并計(jì)算其點(diǎn)積 ** doc_vecs **然后對(duì)結(jié)果進(jìn)行降序排序,返回前N個(gè)類似的問(wè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]))

完成! 現(xiàn)在運(yùn)行代碼并輸入你的查詢,看看這個(gè)搜索引擎如何處理模糊匹配:

圖片

完整代碼如下,一共23行代碼(在后臺(tái)回復(fù)關(guān)鍵詞也能下載):

上滑查看完整代碼

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')))

夠簡(jiǎn)單吧?當(dāng)然,這是一個(gè)基于預(yù)訓(xùn)練的Bert模型制造的一個(gè)簡(jiǎn)單QA搜索模型。

你還可以微調(diào)模型,讓這個(gè)模型整體表現(xiàn)地更完美,你可以將自己的數(shù)據(jù)放到某個(gè)目錄下,然后執(zhí)行 run_classifier.py 對(duì)模型進(jìn)行微調(diào),比如這個(gè)例子:

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4945

    瀏覽量

    131228
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4710

    瀏覽量

    95376
  • 搜索引擎
    +關(guān)注

    關(guān)注

    0

    文章

    120

    瀏覽量

    13606
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3520

    瀏覽量

    50419
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    [分享]最強(qiáng)山寨版搜索引擎震驚世界-熊熊搜索

    。在記者嘗試著搜索個(gè)關(guān)鍵詞后,個(gè)集合了多個(gè)搜索引擎的組合頁(yè)面出現(xiàn)在屏幕上。界面上不僅詳細(xì)列出
    發(fā)表于 11-22 18:58

    參加搜索引擎營(yíng)銷SEM培訓(xùn)的好處?

    參加搜索引擎營(yíng)銷SEM培訓(xùn)進(jìn)入搜索引擎行業(yè),跟隨各大搜索引擎起成長(zhǎng);4. 可以通過(guò)校友會(huì)認(rèn)識(shí)大量業(yè)界專家和從業(yè)者,為日后的職業(yè)發(fā)展廣聚人脈資源;北京鼎泰恒業(yè)網(wǎng)絡(luò)營(yíng)銷培訓(xùn)學(xué)校010-5
    發(fā)表于 04-11 14:21

    基于網(wǎng)格技術(shù)的并行搜索引擎

    研究現(xiàn)有網(wǎng)格技術(shù)和搜索技術(shù),分析并行搜索引擎的優(yōu)點(diǎn)和不足,提出基于網(wǎng)格技術(shù)的并行搜索引擎解決方案,其中包含個(gè)3 層結(jié)構(gòu)的應(yīng)用框架和
    發(fā)表于 03-30 10:09 ?23次下載

    搜索引擎查詢?nèi)罩镜木垲?/a>

    隨著搜索引擎技術(shù)和網(wǎng)絡(luò)數(shù)據(jù)挖掘技術(shù)的發(fā)展,怎樣從搜索引擎查詢?nèi)罩局姓业接杏玫男畔⒊蔀檠芯繜狳c(diǎn)。該文在討論Beeferman提出的算法及Chan對(duì)其改進(jìn)的算法的優(yōu)缺點(diǎn)后,提出
    發(fā)表于 04-02 08:49 ?27次下載

    原創(chuàng)優(yōu)先的搜索引擎排序算法

    現(xiàn)有的搜索引擎排序算法大多根據(jù)網(wǎng)頁(yè)之間的鏈接關(guān)系進(jìn)行排序,沒(méi)有考慮原創(chuàng)和轉(zhuǎn)載文章之間的優(yōu)先次序。該文提出種適用于專業(yè)搜索引擎的新型排序算法
    發(fā)表于 04-16 08:43 ?20次下載

    教育網(wǎng)BBS搜索引擎設(shè)計(jì)與實(shí)現(xiàn)

    BBS 是教育網(wǎng)的大特色,也是傳統(tǒng)搜索引擎搜索的盲點(diǎn),本文系統(tǒng)介紹了根據(jù)教育網(wǎng)BBS 的特點(diǎn)建立BBS 搜索引擎的關(guān)鍵技術(shù)和實(shí)現(xiàn)方法。關(guān)鍵詞:搜索
    發(fā)表于 06-17 11:28 ?14次下載

    主題搜索引擎的研究

    介紹了將開(kāi)源的全文檢索工具包Lucene嵌入到自己的搜索引擎中來(lái)滿足開(kāi)發(fā)主題搜索引擎的需求。并基于Lucene中文分詞的不足設(shè)計(jì)了個(gè)比較完善的中文分詞器,然后將其引入具體應(yīng)
    發(fā)表于 07-05 16:30 ?11次下載

    網(wǎng)絡(luò)搜索引擎,網(wǎng)絡(luò)搜索引擎的工作原理

    網(wǎng)絡(luò)搜索引擎,網(wǎng)絡(luò)搜索引擎的工作原理 21 世紀(jì)是信息時(shí)代,隨著信息科學(xué)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)已成為人們生活中的重要組成部分,網(wǎng)上
    發(fā)表于 03-26 15:51 ?1513次閱讀

    基于JAVA技術(shù)的搜索引擎的研究與實(shí)現(xiàn)

    本文還利用Java技術(shù)對(duì)搜索引擎的三個(gè)核心部分即網(wǎng)絡(luò)蜘蛛、網(wǎng)頁(yè)索引、搜索進(jìn)行了實(shí)現(xiàn)。索引搜索
    發(fā)表于 05-07 14:14 ?35次下載
    基于JAVA技術(shù)的<b class='flag-5'>搜索引擎</b>的研究與實(shí)現(xiàn)

    個(gè)大規(guī)模超文本網(wǎng)絡(luò)搜索引擎剖析(英文版)

    個(gè)大規(guī)模超文本網(wǎng)絡(luò)搜索引擎剖析(英文版)
    發(fā)表于 04-30 14:09 ?0次下載

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

    垂直搜索引擎是針對(duì)某一個(gè)行業(yè)的專業(yè)搜索引擎,是搜索引擎的細(xì)分和延伸,是對(duì)網(wǎng)頁(yè)庫(kù)中的某類專門的信息進(jìn)行次整合,定向分字段抽取出需要的數(shù)據(jù)進(jìn)行
    發(fā)表于 01-04 17:19 ?8409次閱讀

    Valossa推出個(gè)由AI算法驅(qū)動(dòng)的智能電影搜索引擎

    whatismymovie.com可以通過(guò)關(guān)鍵詞或描述搜索相應(yīng)的電影,但它不是個(gè)普通網(wǎng)站,而是個(gè)由AI
    的頭像 發(fā)表于 02-09 10:04 ?8306次閱讀

    介紹五個(gè)具有高級(jí)功能的搜索引擎

    數(shù)據(jù)庫(kù)里存儲(chǔ)的大量的信息對(duì)標(biāo)準(zhǔn)的搜索引擎來(lái)說(shuō)是不可見(jiàn)的,標(biāo)準(zhǔn)的搜索引擎只是索引網(wǎng)站上的內(nèi)容,從個(gè)鏈接到另
    的頭像 發(fā)表于 04-04 09:13 ?7529次閱讀

    蘋(píng)果自研的搜索引擎干的過(guò)谷歌嗎?

    據(jù)TNW報(bào)道,蘋(píng)果正在加快研發(fā)自己的搜索引擎,以取代谷歌。推出自己的搜索引擎,將有利于蘋(píng)果的產(chǎn)品服務(wù)的推廣,同時(shí)削弱谷歌在搜索領(lǐng)域的壟斷地位。
    的頭像 發(fā)表于 12-22 14:54 ?2137次閱讀

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

    前面寫(xiě)到了程序?qū)S玫膙scode,今天再來(lái)介紹款程序佬專用的搜索引擎——Linux命令搜索引擎。該引擎專用于搜索Linux下的各種命令,畢
    的頭像 發(fā)表于 02-24 11:33 ?1373次閱讀
    NAS下<b class='flag-5'>搭建</b>linux命令<b class='flag-5'>搜索引擎</b>教程