oluwatosin adewumi
README modified 2
55ead19
metadata
thumbnail: https://huggingface.co/front/thumbnails/dialogpt.png
language:
  - en
license: cc-by-4.0
tags:
  - conversational
  - transformers
datasets:
  - multi_woz_v22 and PIE-English idioms corpus
metrics:
  - perplexity
widget:
  - text: Does that mean Jane is off the hook?

DialoGPT_MWOZ_Idioms

This is a fine-tuned model of DialoGPT (medium)-MultiWOZ on the PIE-English idioms corpus. It is intended to be used as an idiom-aware conversational system. The dataset it's trained on is limited in scope, as it covers only 10 classes of idioms ( metaphor, simile, euphemism, parallelism, personification, oxymoron, paradox, hyperbole, irony and literal).

The perplexity achieved on the test and validation sets are 160.9 and 160.46, respectively. More information about the original pre-trained model can be found here

  • Generation example from an interactive environment:
Role Response
User remind her to take it off the hook.
Bot the bookie took it on the nod
User A lengthy break is in order ; so make sure you keep your nose clean
Bot they are under a cloud because of fears about US President's wife Hillary Clinton
User Some families breed like rabbits and send us all their male heirs
Bot he was out for the count

Please find the information about preprocessing, training and full details of the DialoGPT in the original DialoGPT repository

How to use

Now we are ready to try out how the model works as a chatting partner!

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained("tosin/dialogpt_mwoz_idioms")
model = AutoModelForCausalLM.from_pretrained("tosin/dialogpt_mwoz_idioms")
# Let's chat for 5 lines
for step in range(5):
    # encode the new user input, add the eos_token and return a tensor in Pytorch
    new_user_input_ids = tokenizer.encode(input(">> User:") + tokenizer.eos_token, return_tensors='pt')
    # append the new user input tokens to the chat history
    bot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids
    # generated a response while limiting the total chat history to 1000 tokens, 
    chat_history_ids = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id)
    # pretty print last ouput tokens from bot
    print("DialoGPT_MWOZ_Bot: {}".format(tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)))