如何使用bert做word embedding

2021-10-21 06:24:25 字數 1676 閱讀 6647

調研目的:如何使用第三方庫快速對資料進行預訓練,得到embedding

作者(香港大學)馬東什麼:

不同預訓練模型的embedding機制不一樣,word2vec glove fasttext 都是直接查詞得到embedding,bert 直接取最後一層的輸出,elmo更靈活了 可以取embedding和lstm層的輸出的平均 concat或者頂層lstm的輸出。提取出embedding之後 將這些embedding與其它特徵concat即可

作者sirius:

主流的bert包,經典的是google-research/bert;另外,這個也很好用huggingface/transformers,是從pytorch-pretrained-bert進化過來的。bert word embeddings tutorial(英文)

作者天生smile

超出我的理解能力,解釋了原始碼。專案太複雜:實體識別ner、金融圖譜塔建、seq2seq。但bert的沒有**。

作者風吹草地

pytorch-pretrained-bert簡單使用,沒有訓練,直接輸入一句話,得到這句話的embedding。

作者iterate7

bert進行embedding。bertmodel.from_pretrained也是拿訓練好的

作者captainqxy

使用transformers從頭訓練bert。pytorch版

token embedding、segment embedding、position embedding的意義我已經清楚了,但是這三個向量為什麼可以相加呢?相加後向量的大小和方向就變了,語義不就變了嗎?

我的目的是為知識追蹤的question進行預訓練,得到question的embedding,充分表達question的語義。我的訓練集像nlp一樣,一句句話。因為我的詞不是中文,沒有已經訓練好的引數。只能從頭開始訓練。而且訓練中文的bert模型都是幾十層的,我這個小型資料集是不適合的。結果:手寫實現一層transformer的encoder。

理解了transformer的話,其實就那幾個部分。不必使用人家的第三方函式庫。

不過走nlp方向,肯定也要熟悉怎麼使用第三方庫。

tensorflow的話可以使用bert4keras蘇劍林大神的,他還有自己的qq群

pytorch的話,就上面參考資料。

知識追蹤的語料,雖然是序列是question id,就好比人說的每句話,我們從序列中,希望的到question與question之間的某些關係,相似的question的embedding距離較近。結果表明,訓練的loss一直不降,維持在5~7左右。而且訓練好的embedding還沒skip-gram的好。經分析和推斷

(1)question序列中,較遠的題目沒有很強的聯絡。

(2)question序列中,沒有位置關係,因為他是從無向圖graph中取樣的。無向圖取樣比較隨意。q1-c1-q2-c1-q3-c1-q2(元路徑q-c-q的侷限性)

(3)question之間的聯絡並沒有中文中「我」跟「愛」的聯絡強。skip-gram就只用判斷2個question是否相似。skip-gram有負樣本,不用計算softmax。

(4)bert是**mask掉的詞,gpt是**下乙個詞,哪個形式好呢?

如何使用bert

bert原文中文翻譯版,位址。uer py全稱是universal encoder representations,uer py是乙個在通用語料預訓練以及對下游任務進行微調的工具包。github專案位址。uer的一些教程,知乎教程 bert做情感分類 序列標註 uer分類 的介紹,參考uer py ...

bert做文字摘要 BERT文字摘要

簡介 bert是經過預先訓練的transformer模型,已在多個nlp任務上取得了突破性的效能。最近,我遇到了bertsum,這是愛丁堡的liu的 本文擴充套件了bert模型,以在文字摘要上達到最新的分數。在此部落格中,我將解釋本文以及如何使用此模型進行工作。提取摘要 類似於使用螢光筆。我們從原始...

bert可以做哪些nlp任務

讀了bert的 大概知道bert可以做下面幾個事情 一 bert能做的任務 一 文字分類 二 序列標註任務,比如分詞 實體識別 詞性標註 三 句子關係判斷 比如qa,自然語言推理 二 bert不能做的任務 不能做的事情 一 機器翻譯 三 bert重新整理的11個記錄 multinli multi g...