|
--- |
|
language: |
|
- zh |
|
tags: |
|
- pytorch |
|
- zh |
|
- Conversational |
|
|
|
--- |
|
|
|
[hfl/chinese-roberta-wwm-ext](https://huggingface.co/hfl/chinese-roberta-wwm-ext) first pre-trained on CMNLI and OCNLI and then fine-tuned on the [CDConv dataset](https://github.com/thu-coai/cdconv). It supports 2-class classification for 2-turn dialogue contradiction detection. Usage example: |
|
|
|
```python |
|
import torch |
|
from transformers.models.bert import BertTokenizer, BertForSequenceClassification |
|
|
|
tokenizer = BertTokenizer.from_pretrained('thu-coai/roberta-base-cdconv') |
|
model = BertForSequenceClassification.from_pretrained('thu-coai/roberta-base-cdconv') |
|
model.eval() |
|
|
|
turn1 = [ |
|
"嗯嗯,你喜欢钓鱼吗?", # user |
|
"喜欢啊,钓鱼很好玩的", # bot |
|
] |
|
turn2 = [ |
|
"你喜欢钓鱼吗?", # user |
|
"不喜欢,我喜欢看别人钓鱼", # bot, we want to identify whether this utterance makes a contradiction |
|
] # turn1 and turn2 are not required to be two consecutive turns |
|
text1 = "[SEP]".join(turn1 + turn2[:1]) |
|
text2 = turn2[1] |
|
|
|
model_input = tokenizer(text1, text2, return_tensors='pt', return_token_type_ids=True, return_attention_mask=True) |
|
model_output = model(**model_input, return_dict=False) |
|
prediction = torch.argmax(model_output[0].cpu(), dim=-1)[0].item() |
|
print(prediction) # output 1. 0 for non-contradiction, 1 for contradiction |
|
``` |
|
|
|
This fine-tuned model obtains 75.7 accuracy and 72.3 macro-F1 on the test set. |
|
|
|
Please kindly cite the [original paper](https://arxiv.org/abs/2210.08511) if you use this model. |
|
|
|
```bib |
|
@inproceedings{zheng-etal-2022-cdconv, |
|
title={Towards Emotional Support Dialog Systems}, |
|
author={Zheng, Chujie and |
|
Zhou, Jinfeng and |
|
Zheng, Yinhe and |
|
Peng, Libiao and |
|
Guo, Zhen and |
|
Wu, Wenquan and |
|
Niu, Zhengyu and |
|
Wu, Hua and |
|
Huang, Minlie}, |
|
booktitle={Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing}, |
|
year={2022} |
|
} |
|
``` |