🚀 MeaningBERT
MeaningBERT 是一種用於評估句子間意義保留程度的自動且可訓練的指標。它能夠高度關聯人類判斷和合理性檢查,有效評估兩個句子之間的意義保留情況。
相關鏈接
🚀 快速開始
MeaningBERT 是一種用於評估句子間意義保留程度的自動且可訓練的指標。它在文章 MeaningBERT: assessing meaning preservation between sentences 中被提出,旨在評估兩個句子之間的意義保留情況,且該評估結果與人類判斷和合理性檢查高度相關。如需更多詳情,請參考我們公開發表的文章。
此公開版本的模型使用了訓練效果最佳的模型(在我們的文章中,我們展示的是 10 個模型的平均性能結果),並進行了更長時間的訓練(500 個 epoch 而非 250 個)。我們後來觀察到,該模型可以進一步降低驗證損失並提高性能。此外,我們將文章中使用的數據增強技術更換為更強大的技術,該技術還包含了意義函數的交換性,即 Meaning(Sent_a, Sent_b) = Meaning(Sent_b, Sent_a)。
✨ 主要特性
合理性檢查
與人類判斷的相關性是評估意義保留指標質量的一種方法。然而,由於它以人類判斷為黃金標準,因此具有主觀性,並且由於需要大量由多人標註的數據集,成本較高。作為替代方案,我們設計了兩個自動化測試:評估相同句子之間的意義保留情況(應 100% 保留)和不相關句子之間的意義保留情況(應 0% 保留)。在這些測試中,意義保留的目標值不是主觀的,並且不需要人類標註即可測量。它們代表了一個好的自動意義保留指標應該能夠達到的簡單且最低的閾值。即,一個指標至少應該能夠在比較兩個相同句子時返回完美分數(即 100%),並在兩個句子完全不相關時返回零分(即 0%)。
相同句子
第一個測試評估相同句子之間的意義保留情況。為了分析指標通過此測試的能力,我們統計指標評分大於或等於閾值 X∈[95, 99] 的次數,並將其除以句子數量,以創建指標給出預期評分的次數比例。為了考慮計算機浮點誤差,我們將評分四捨五入到最接近的整數,並且不使用 100% 的閾值。
不相關句子
我們的第二個測試評估源句子與由大語言模型生成的不相關句子之間的意義保留情況。其思路是驗證當給定一個主要由不相關單詞組成的完全不相關句子(也稱為亂序單詞)時,指標是否能得出 0 的意義保留評分。由於此測試的預期評分為 0,我們檢查指標評分是否小於或等於閾值 X∈[5, 1]。同樣,為了考慮計算機浮點誤差,我們將評分四捨五入到最接近的整數,並且不使用 0% 的閾值。
💻 使用示例
基礎用法
你可以將 MeaningBERT 作為一個模型使用,通過以下代碼在 HuggingFace 上進行重新訓練或推理:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("davebulaval/MeaningBERT")
model = AutoModelForSequenceClassification.from_pretrained("davebulaval/MeaningBERT")
高級用法
你也可以將 MeaningBERT 作為評估指標使用(無需重新訓練),以下是不同方式的示例代碼:
使用 HuggingFace 進行評估
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("davebulaval/MeaningBERT")
scorer = AutoModelForSequenceClassification.from_pretrained("davebulaval/MeaningBERT")
scorer.eval()
documents = ["He wanted to make them pay.", "This sandwich looks delicious.", "He wants to eat."]
simplifications = ["He wanted to make them pay.", "This sandwich looks delicious.",
"Whatever, whenever, this is a sentence."]
tokenize_text = tokenizer(documents, simplifications, truncation=True, padding=True, return_tensors="pt")
with torch.no_grad():
scores = scorer(**tokenize_text)
print(scores.logits.tolist())
使用 HuggingFace 指標模塊進行評估
import evaluate
documents = ["He wanted to make them pay.", "This sandwich looks delicious.", "He wants to eat."]
simplifications = ["He wanted to make them pay.", "This sandwich looks delicious.",
"Whatever, whenever, this is a sentence."]
meaning_bert = evaluate.load("davebulaval/meaningbert")
print(meaning_bert.compute(references=documents, predictions=simplifications))
📚 詳細文檔
如需引用 MeaningBERT,請使用以下 BibTeX 格式:
@ARTICLE{10.3389/frai.2023.1223924,
AUTHOR={Beauchemin, David and Saggion, Horacio and Khoury, Richard},
TITLE={MeaningBERT: assessing meaning preservation between sentences},
JOURNAL={Frontiers in Artificial Intelligence},
VOLUME={6},
YEAR={2023},
URL={https://www.frontiersin.org/articles/10.3389/frai.2023.1223924},
DOI={10.3389/frai.2023.1223924},
ISSN={2624-8212},
}
🤝 貢獻指南
我們歡迎用戶提供反饋,無論是發現庫中的 bug 還是提出功能建議!請查看我們的貢獻指南以獲取更多詳細信息。
📄 許可證
MeaningBERT 採用 MIT 許可證,詳情請見 LICENSE 文件。