🚀 LONGFORMER-BASE-4096在SQuAD v1上微調
這是一個在SQuAD v1數據集上針對問答任務進行微調的longformer-base-4096模型。該模型能夠有效處理問答場景,為長文本問答提供了強大的支持。
數據集
許可證
🚀 快速開始
本模型是基於Transformer架構的問答模型,可用於處理長文本的問答任務。以下是使用該模型的示例代碼:
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
model = AutoModelForQuestionAnswering.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
text = "Huggingface has democratized NLP. Huge thanks to Huggingface for this."
question = "What has Huggingface done ?"
encoding = tokenizer(question, text, return_tensors="pt")
input_ids = encoding["input_ids"]
attention_mask = encoding["attention_mask"]
start_scores, end_scores = model(input_ids, attention_mask=attention_mask)
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = all_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
目前,LongformerForQuestionAnswering
還不支持 pipeline
。待支持添加後,我會更新此文檔。
✨ 主要特性
- 長文本處理能力:預訓練模型可以處理長達4096個標記的序列,適合處理長文檔問答。
- 自動處理全局注意力:
LongformerForQuestionAnswering
模型會自動為問題標記設置全局注意力。
📦 安裝指南
文檔未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
model = AutoModelForQuestionAnswering.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
text = "Huggingface has democratized NLP. Huge thanks to Huggingface for this."
question = "What has Huggingface done ?"
encoding = tokenizer(question, text, return_tensors="pt")
input_ids = encoding["input_ids"]
attention_mask = encoding["attention_mask"]
start_scores, end_scores = model(input_ids, attention_mask=attention_mask)
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = all_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
高級用法
文檔未提及高級用法代碼示例,故跳過此部分。
📚 詳細文檔
模型介紹
Longformer 模型由AllenAI的Iz Beltagy、Matthew E. Peters和Arman Coha創建。正如論文中所解釋的,Longformer
是一個用於長文檔的類BERT模型。
模型訓練
此模型在Google Colab的v100 GPU上進行訓練。你可以通過以下鏈接找到微調的Colab筆記本
。
在為問答任務訓練Longformer時,需要注意以下幾點:
默認情況下,Longformer對所有標記使用滑動窗口局部注意力。但對於問答任務,所有問題標記都應該具有全局注意力。LongformerForQuestionAnswering
模型會自動為你完成此操作。為了讓它能夠正常工作:
- 輸入序列必須有三個分隔標記,即序列應該按照以下方式編碼:
<s> question</s></s> context</s>
。如果你將問題和答案作為輸入對進行編碼,那麼分詞器會自動處理這個問題,你無需擔心。
input_ids
應該始終是一批示例。
模型效果
指標 |
值 |
精確匹配 |
85.1466 |
F1值 |
91.5415 |
🔧 技術細節
輸入序列要求
輸入序列必須有三個分隔標記,編碼格式為 <s> question</s></s> context</s>
。若將問題和答案作為輸入對編碼,分詞器會自動處理。
全局注意力設置
LongformerForQuestionAnswering
模型會自動為問題標記設置全局注意力。
輸入批次要求
input_ids
必須是一批示例。
📄 許可證
本項目採用MIT許可證。
由Suraj Patil ❤️ 創建
