✅ Benchmark en anglais pour évaluer les méthodes d'explication causale.
✅ Benchmark de l'analyse des sentiments basée sur l'aspect évalué par l'homme (ABSA).
Eldar David Abraham, Karel d'Oosterlink, Amir Feder, Yair Gat, Atticus Geiger, Christopher Potts, Roi Reichart, Zhengxuan Wu. 2022. CEBAB: Estimation des effets causaux des concepts du monde réel sur le comportement du modèle NLP. Mme, Stanford University, Technion - Israel Institute of Technology et Gand University.
@unpublished{abraham-etal-2022-cebab,
title={{CEBaB}: Estimating the Causal Effects of Real-World Concepts on {NLP} Model Behavior},
author={Abraham, Eldar David and D'Oosterlinck, Karel and Feder, Amir and Gat, Yair Ori and Geiger, Atticus and Potts, Christopher and Reichart, Roi and Wu, Zhengxuan},
note={arXiv:2205.14140},
url={https://arxiv.org/abs/2205.14140},
year={2022}}
Les fichiers de jeu de données peuvent être téléchargés à partir de cebab-v1.1.zip. Notre V1.1 diffère de V1.0 uniquement en ce que V1.1 a des ID uniques appropriés nos exemples et corrige un bogue qui a conduit à certains ID non uniques dans la version précédente. Il n'y a aucun changement dans d'autres champs critiques.
Notez que nous vous recommandons d'utiliser la bibliothèque de jeux de données HuggingFace pour utiliser notre ensemble de données. Voir ci-dessous pour un chargement de données linéaire.
L'ensemble de données se compose de Train_Exclusive / Train_inclusive / Dev / Test Splits:
train_exclusive.jsontrain_inclusive.jsontrain_observational.jsondev.jsontest.json La fiche technique de notre ensemble de données:
Cebab est principalement maintenu à l'aide de la bibliothèque de données HuggingFace:
"""
Make sure you install the Datasets library using:
pip install datasets
"""
from datasets import load_dataset
CEBaB = load_dataset ( "CEBaB/CEBaB" ) Cette fonction peut être utilisée pour charger n'importe quel sous-ensemble des fichiers RAW *.json :
import json
def load_split ( splitname ):
with open ( splitname ) as f :
data = json . load ( f )
return data {
'id' : str in format dddddd_dddddd as the concatenation of original_id and edit_id ,
'original_id' : str in format dddddd ,
'edit_id' : str in format dddddd ,
'is_original' : bool ,
'edit_goal' : str ( one of "Negative" , "Positive" , "unknown" ) or None if is_original ,
'edit_type' : str ( one of "noise" , "service" , "ambiance" , "food" ),
'edit_worker' : str or None if is_original ,
'description' : str ,
'review_majority' : str ( one of "1" , "2" , "3" , "4" , "5" , "no majority" ),
'review_label_distribution' : dict ( str to int ),
'review_workers' : dict ( str to str ),
'food_aspect_majority' : str ( one of "Negative" , "Positive" , "unknown" , "no majority" ),
'ambiance_aspect_majority' : str ( one of "Negative" , "Positive" , "unknown" , "no majority" ),
'service_aspect_majority' : str ( one of "Negative" , "Positive" , "unknown" , "no majority" ),
'noise_aspect_majority' : str ( one of "Negative" , "Positive" , "unknown" , "no majority" ),
'food_aspect_label_distribution' : dict ( str to int ),
'ambiance_aspect_label_distribution' : dict ( str to int ),
'service_aspect_label_distribution' : dict ( str to int ),
'noise_aspect_label_distribution' : dict ( str to int ),
'food_aspect_validation_workers' : dict ( str to str ),
'ambiance_aspect_validation_workers' : dict ( str to str ),
'service_aspect_validation_workers' : dict ( str to str ),
'noise_aspect_validation_workers' : dict ( str to str ),
'opentable_metadata' : {
"restaurant_id" : int ,
"restaurant_name" : str ,
"cuisine" : str ,
"price_tier" : str ,
"dining_style" : str ,
"dress_code" : str ,
"parking" : str ,
"region" : str ,
"rating_ambiance" : int ,
"rating_food" : int ,
"rating_noise" : int ,
"rating_service" : int ,
"rating_overall" : int
}
}Détails:
'id' : l'identifiant unique cet exemple (une combinaison de deux ID répertoriées ci-dessous).'original_id' : l'identifiant unique de la phrase originale pour un exemple édité.'edit_id' : l'identifiant unique de la phrase éditée.'is_original' : indiquez si cette phrase est une modification ou non.'edit_goal' : l'étiquette des objectifs de l'aspect d'édition si c'est un exemple édité, sinon None .'edit_type' : l'aspect à modifier ou à étiqueter avec sentiment s'il est édité, sinon None .'edit_worker' : ID de MTurk anonymisé du travailleur qui a écrit 'description' . Ceux-ci proviennent de la même famille d'ID que celle utilisée dans 'aspect_validation_workers' .'description' : l'exemple de texte.'review_majority' : l'étiquette de niveau de la revue pour l'aspect d'édition choisi par au moins trois des cinq travailleurs s'il y en a un, sinon no majority .'review_label_distribution' : distribution de notation au niveau de la revue de la tâche de validation MTURK.'review_workers' : réponse individuelle pour la note de niveau de la revue des annotateurs. Les clés sont des listes d'ID MTURK anonymisées, qui sont utilisées de manière cohérente tout au long de l'ensemble de données.'*_aspect_majority' : l'étiquette au niveau de l'aspect pour l'aspect d'édition choisi par au moins trois des cinq travailleurs s'il y en a un, d'autre no majority .'*_aspect_label_distribution' : distribution de note de niveau d'aspect de la tâche de validation MTURK.'*_aspect_label_workers' : Réponse individuelle pour la note au niveau de la revue des annotateurs. Les clés sont des listes d'ID MTURK anonymisées, qui sont utilisées de manière cohérente tout au long de l'ensemble de données.'opentable_metadata' : métadonnées pour l'examen.Voici un exemple,
{
"id" : "000000_000000" ,
"original_id" : "000000" ,
"edit_id" : "000000" ,
"is_original" : true ,
"edit_goal" : null ,
"edit_type" : null ,
"edit_worker" : null ,
"description" : "Overbooked and didnot honor reservation time,put on wait list with walk INS" ,
"review_majority" : "1" ,
"review_label_distribution" : {
"1" : 4 ,
"2" : 1
},
"review_workers" : {
"w244" : "1" ,
"w120" : "2" ,
"w197" : "1" ,
"w7" : "1" ,
"w132" : "1"
},
"food_aspect_majority" : "" ,
"ambiance_aspect_majority" : "" ,
"service_aspect_majority" : "Negative" ,
"noise_aspect_majority" : "unknown" ,
"food_aspect_label_distribution" : "" ,
"ambiance_aspect_label_distribution" : "" ,
"service_aspect_label_distribution" : {
"Negative" : 5
},
"noise_aspect_label_distribution" : {
"unknown" : 4 ,
"Negative" : 1
},
"food_aspect_validation_workers" : "" ,
"ambiance_aspect_validation_workers" : "" ,
"service_aspect_validation_workers" : {
"w148" : "Negative" ,
"w120" : "Negative" ,
"w83" : "Negative" ,
"w35" : "Negative" ,
"w70" : "Negative"
},
"noise_aspect_validation_workers" : {
"w27" : "unknown" ,
"w23" : "unknown" ,
"w81" : "Negative" ,
"w103" : "unknown" ,
"w9" : "unknown"
},
"opentable_metadata" : {
"restaurant_id" : 6513 ,
"restaurant_name" : "Molino's Ristorante" ,
"cuisine" : "italian" ,
"price_tier" : "low" ,
"dining_style" : "Casual Elegant" ,
"dress_code" : "Smart Casual" ,
"parking" : "Private Lot" ,
"region" : "south" ,
"rating_ambiance" : 1 ,
"rating_food" : 3 ,
"rating_noise" : 2 ,
"rating_service" : 2 ,
"rating_overall" : 2
}
}Nous hébergeons notre code d'analyse dans notre code Foher.
Cette section contient le classement pour certaines des meilleures scores obtenues sur CeBAB en tant que tâche de classification de sentiment de cinq classes. Pour ajouter des scores, veuillez envisager une demande de traction.
| Architecture modèle | Métrique | Environ | S-learner | INLP |
|---|---|---|---|---|
| Bert | L2 | 0,81 (± 0,01) | 0,74 (± 0,02) | 0,80 (± 0,02) |
| Bert | Cos | 0,61 (± 0,01) | 0,63 (± 0,01) | 0,59 (± 0,03) |
| Bert | Normdiff | 0,44 (± 0,01) | 0,54 (± 0,02) | 0,73 (± 0,02) |
| Roberta | L2 | 0,83 (± 0,01) | 0,78 (± 0,01) | 0,84 (± 0,01) |
| Roberta | Cos | 0,60 (± 0,01) | 0,64 (± 0,01) | 0,58 (± 0,01) |
| Roberta | Normdiff | 0,45 (± 0,00) | 0,59 (± 0,01) | 0,81 (± 0,01) |
| Gpt-2 | L2 | 0,72 (± 0,02) | 0,60 (± 0,02) | 0,72 (± 0,01) |
| Gpt-2 | Cos | 0,59 (± 0,01) | 0,59 (± 0,01) | 1,00 (± 0,00) |
| Gpt-2 | Normdiff | 0,41 (± 0,01) | 0,40 (± 0,01) | 0,58 (± 0,03) |
| LSTM | L2 | 0,86 (± 0,01) | 0,73 (± 0,01) | 0,79 (± 0,01) |
| LSTM | Cos | 0,64 (± 0,01) | 0,64 (± 0,01) | 0,74 (± 0,02) |
| LSTM | Normdiff | 0,50 (± 0,01) | 0,53 (± 0,01) | 0,60 (± 0,01) |
Cebab a une licence internationale Creative Commons Attribution 4.0.