🚀 俄罗斯闲聊、演绎与常识推理模型
本模型是对话系统原型的核心,具备两大主要功能。
🚀 快速开始
该模型可用于生成闲聊回复和基于额外事实或“常识”回答问题。以下是使用示例:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
device = "cuda" if torch.cuda.is_available() else "cpu"
model_name = "inkoziev/rugpt_chitchat"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.add_special_tokens({'bos_token': '<s>', 'eos_token': '</s>', 'pad_token': '<pad>'})
model = AutoModelForCausalLM.from_pretrained(model_name)
model.to(device)
model.eval()
input_text = """<s>- Привет! Что делаешь?
- Привет :) В такси еду
-"""
encoded_prompt = tokenizer.encode(input_text, add_special_tokens=False, return_tensors="pt").to(device)
output_sequences = model.generate(input_ids=encoded_prompt, max_length=100, num_return_sequences=1, pad_token_id=tokenizer.pad_token_id)
text = tokenizer.decode(output_sequences[0].tolist(), clean_up_tokenization_spaces=True)[len(input_text)+1:]
text = text[: text.find('</s>')]
print(text)
✨ 主要特性
闲聊回复生成
以对话历史(前1 - 10条回复)作为输入,模型可生成闲聊回复。示例如下:
- Привет, как дела?
- Привет, так себе.
- <<< 期望模型生成此回复 >>>
问题回答
模型可根据额外事实或“常识”回答问题。相关事实可通过其他模型(如 sbert_pq)从外部知识库中提取。使用这些事实和问题文本,模型会构建语法正确且尽可能简洁的答案,就像人类在类似交流场景中所做的那样。相关事实应置于问题文本之前,就像对话伙伴直接说出一样。例如:
- Сегодня 15 сентября. Какой сейчас у нас месяц?
- Сентябрь
模型不要求添加到对话上下文中的所有事实都与问题相关,因此从知识库中提取信息的模型可以牺牲准确性来换取完整性,并添加一些额外信息。在这种情况下,闲聊模型会自行选择上下文中的必要信息并忽略多余信息。当前版本的模型允许在问题前添加最多5个事实。例如:
- Стасу 16 лет. Стас живет в Подольске. У Стаса нет своей машины. Где живет Стас?
- в Подольске
逻辑推理
在某些情况下,模型可以基于两个相互关联的前提进行逻辑推理得出答案。从两个前提得出的结论并非明确表述,而是似乎用于推导答案。例如:
- Смертен ли Аристофан, если он был греческим философом, а все философы смертны?
- Да
算术问题解决
除了逻辑推理,模型还能解决小学1 - 2年级水平、包含两个数字参数的简单算术问题。例如:
- Чему равно 2+8?
- 10
📚 详细文档
模型变体与指标
目前发布的模型有7.6亿个参数,即达到了 sberbank - ai/rugpt3large_based_on_gpt2 的水平。以下是在预留测试样本集上解决算术问题的准确率测量结果:
属性 |
详情 |
模型类型 |
不同基础模型在算术问题解决上的准确率 |
训练数据 |
未提及 |
基础模型 |
算术准确率 |
sberbank - ai/rugpt3large_based_on_gpt2 |
0.91 |
sberbank - ai/rugpt3medium_based_on_gpt2 |
0.70 |
sberbank - ai/rugpt3small_based_on_gpt2 |
0.58 |
tinkoff - ai/ruDialoGPT - small |
0.44 |
tinkoff - ai/ruDialoGPT - medium |
0.69 |
“算术准确率”列中的0.91表示91%的测试问题得到了完全正确的解答。生成的答案与标准答案的任何偏差都被视为错误。例如,给出答案“120”而非“119”也会被记录为错误。
📄 许可证
本模型采用 Unlicense 许可证。
📞 联系方式
如果您在使用此模型时遇到问题,或有改进建议,请发送邮件至 mentalcomputing@gmail.com。
📖 引用格式
@MISC{rugpt_chitchat,
author = {Ilya Koziev},
title = {Russian Chit - chat with Common sence Reasoning},
url = {https://huggingface.co/inkoziev/rugpt_chitchat},
year = 2022
}