Skip to content
Information-oriented Metric (IOM)
Python Shell Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
chatbot
cn_learningbase
cn_rulebase
en_learningbase
en_rulebase
script
web
.gitignore
README.md

README.md

Information-oriented Metric (IOM)

这个项目提供一个基于信息三元组的自动化对话系统评估方法,它有基于规则和基于神经网络两种实现,并且支持中英文。该项目还包含了做对话系统评估常用的工具和数据集。

Reference

如果你使用IOM评估你的聊天机器人,请引用下面的文章:

Liu P, Zhong S, Ming Z, et al. Information-Oriented Evaluation Metric for Dialogue Response Generation Systems[C]//2018 IEEE 30th International Conference on Tools with Artificial Intelligence (ICTAI). IEEE, 2018: 780-785.

@inproceedings{liu2018information,
  title={Information-Oriented Evaluation Metric for Dialogue Response Generation Systems},
  author={Liu, Peiqi and Zhong, Sheng-hua and Ming, Zhong and Liu, Yan},
  booktitle={2018 IEEE 30th International Conference on Tools with Artificial Intelligence (ICTAI)},
  pages={780--785},
  year={2018},
  organization={IEEE}
}

Rule-base Method

中文

环境:python3

安装流程:

评估流程:

参考qaMatch.ex2.py文件

英文

环境:python3

安装流程:

  • pip install -r requirements.txt
  • python -m spacy download en

评估流程:

参考qaMatch.ex2.py文件

Learning-base Mthod

该方法由RNN-OIE改进而来,增加了类似beam search的机制提高提取率,并且增加了中文的版本

中文

环境:python2

安装流程:

git clone https://www.github.com/datalogai/recurrentshop.git
cd recurrentshop
python setup.py install
pip install git+https://github.com/farizrahman4u/seq2seq.git
  • 下载预训练embedding模型

    将hyperparams\confidence.json中的"emb_filename"参数改成任意一个你下载好的中文预训练word2vec文件,可参考本项目后面的Tools。如果使用的是非二进制的文本模式的预训练模型,则需要将cnsrc\rnn\load_pretrained_word_embeddings.py第40行换成binary=False模式

训练流程:

cd ./cnsrc/
./train.sh

评估流程:

参考oie.ex2.py,需要将OIEModel的参数改成你训练好的文件

预训练模型:

成熟的中文预训练模型还未完成,暂缺

英文

环境:python2

安装流程:

git clone https://www.github.com/datalogai/recurrentshop.git
cd recurrentshop
python setup.py install
pip install git+https://github.com/farizrahman4u/seq2seq.git
  • 下载预训练embedding模型
cd ./pretrained_word_embeddings/
./download_external.sh

训练流程:

下载训练数据,解压到data目录:链接:https://pan.baidu.com/s/1_lQ9DOd-fnzbgDRmtu5bpA 提取码:qv1e

cd ./ensrc/
./train.sh

评估流程:

参考oie.ex2.py,需要将OIEModel的参数改成你训练好的文件

预训练模型:

链接:https://pan.baidu.com/s/1kE_QoEUanjLTJY33Qx0kig 提取码:ith2

下载后解压到models目录

Dialogue Generation Models

Chatbot目录里存放了三个常用的Seq2seq模型(GNMT,Fairseq,Transformer),已经写好了一些运行脚本在里面方便直接训练。这里同时也列出了一些收集到的开源聊天机器人:

  • GNMT :基于LSTM的seq2seq模型,支持attention和beam search。按照我脚本里的参数训练可以训练出能用的聊天机器人,默认参数对话生成质量很差,会出现大量重复内容(在10w和100w的语料库上做过测试)
  • Fairseq :基于CNN的seq2seq模型,直接用默认参数训练对话语料结果会出现大量重复的短语,原因未知。
  • Transformer :只基于attention的seq2seq模型,他需要自己建立脚本,已经写好在chatbot目录里了(在10w级的语料训练效果比GNMT好,100w训练结果会出现大量重复短语,原因未知)
  • AMM :2018年EMNLP的一篇对话系统的改进,在100w语料库训练时会显存耗尽(Tesla V100)
  • jiweil's NDG :李jiwei的各种对话系统的代码集合,里面我只尝试了NAACL2016提出的模型,但是在运行10w以上稍大的语料库会报显存耗尽(Tesla V100)
  • TA-Seq2Seq :AAAI2017提出的利用主题词优化的Seq2seq模型,没跑过不知效果如何。

Tools

这里收集了一些常用工具,尽量追求有SOTA水平的版本

Word2Vec

import gensim
word2VecModel = gensim.models.KeyedVectors.load_word2vec_format(r"GoogleNews-vectors-negative300.bin", binary=True)
}
import gensim
word2VecModel = gensim.models.KeyedVectors.load_word2vec_format(r"merge_sgns_bigram_char300.txt", binary=False)
}

传统的对话系统评估方法

from nltk.translate.bleu_score import sentence_bleu
def bleu(question,answer):
    resultWords=question.split()
    targetWords=answer.split()
    reference = [targetWords]
    candidate = resultWords
    score = sentence_bleu(reference, candidate) #默认是BLEU-4
    # score = sentence_bleu(reference, candidate, weights=(1, 0, 0, 0)) #BLEU-1
    return score
}

中文分词与词性分析

  • pkuseg:北大19年发布的中文分词工具包,达到了SOTA水平,远胜于较为常用的jieba

  • jieba:可以分词也可以做词性分析

  • pynlpir:中科院的中文NLP工具箱,用它做分词和词性分析会有坑。它运行大规模的句子分词时,会不断调整内部结构,导致你跑同一个句子,只要上下文不一样,就会出现分词结果不一样的问题。

  • 常用中文词性标注对照表:适用于jieba和nlpir

依存语法分析

  • spacy:英文依存语法分析工具
  • pyltp:中文依存语法分析工具,哈工大出品

Sentence2Vec

主观对话评估平台

基于amaze-UI和CI框架编写的用于人类评估对话的打分系统,代码在web目录

主界面

语料爬虫工具

自己编写的百度贴吧爬虫,有时候会假死,有待更新:https://github.com/piekey1994/TieBa-Messenger-Bot-CN

商用聊天机器人自动对话工具

script\ex2\chatbot目录中,有一个tuling机器人的api,还有一个小冰的api,还有一个我自己编写的英文聊天机器人mitsuku的api。请不要滥用这些api!!!

Datasets

这里主要存放一些聊天机器人训练用的语料库。

You can’t perform that action at this time.