調研目的:如何使用第三方庫快速對資料進行預訓練,得到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...