nlg-eval 项目介绍
项目概述
nlg-eval是一个用于评估自然语言生成(NLG)的多种无监督自动化指标的工具。通过输入假设文件和一个或多个参考文件,nlg-eval可以输出各种评估指标的数值。这些文件中的每一行对应于同一个例子。
支持的评估指标
nlg-eval 支持多种衡量自然语言生成质量的指标,其中包括:
- BLEU
- METEOR
- ROUGE
- CIDEr
- SPICE
- SkipThought 余弦相似度
- 嵌入平均余弦相似度
- 向量极大值余弦相似度
- 贪婪匹配分数
环境设置
若要使用nlg-eval,首先需要安装Java 1.8.0及以上版本。然后,用户需要安装Python依赖,可以通过运行以下命令完成:
pip install git+https://github.com/Maluuba/nlg-eval.git@master
特殊设置说明
-
macOS用户可能需要设置环境变量以便启用多线程支持:
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
-
简单安装步骤:下载所需数据(如模型、嵌入)和外部代码文件,运行:
nlg-eval --setup
-
自定义数据路径:若不喜欢默认数据下载路径,可以指定下载文件的位置:
nlg-eval --setup ${data_path}
设置验证(可选)
用户可以验证文件是否正确下载以及设置是否成功。例如,在Git Bash终端中查看下载文件的大小或进行文件校验。
使用方法
nlg-eval支持通过Python API或者命令行界面评估NLG指标。
命令行使用
命令行版本的使用方式为:
nlg-eval --hypothesis=examples/hyp.txt --references=examples/ref1.txt --references=examples/ref2.txt
Python API 使用
-
全局功能API:
from nlgeval import compute_metrics metrics_dict = compute_metrics(hypothesis='examples/hyp.txt', references=['examples/ref1.txt', 'examples/ref2.txt'])
-
单句功能API:
from nlgeval import compute_individual_metrics metrics_dict = compute_individual_metrics(references, hypothesis)
-
面向对象API(单个示例):
from nlgeval import NLGEval nlgeval = NLGEval() metrics_dict = nlgeval.compute_individual_metrics(references, hypothesis)
-
面向对象API(多个示例):
from nlgeval import NLGEval nlgeval = NLGEval() metrics_dict = nlgeval.compute_metrics(references, hypothesis)
参考文献
如果使用nlg-eval进行研究,请引用以下论文:
作者:Shikhar Sharma、Layla El Asri、Hannes Schulz、Jeremie Zumer,标题:任务导向对话中无监督指标在评估自然语言生成中的相关性,文献编号:arXiv:1706.09799(2017)。
实例运行
运行以下命令可以获得不同指标的数值:
nlg-eval --hypothesis=examples/hyp.txt --references=examples/ref1.txt --references=examples/ref2.txt
常见问题解决
若遇到Meteor使用问题,可以尝试在meteor.py中降低mem
变量值。此外,在评估CIDEr分数时,注意IDF参数的设置。
注意事项
当CIDEr使用"idf"参数为"corpus"模式时,计算IDF值需要参考提供的参考句子。对于仅使用一个或少量示例进行评估时,建议将idf设置为"coco-val-df"。
外部数据目录
用户可以通过设置NLGEVAL_DATA
环境变量指定nlg-eval的模型和数据位置,以便将其挂载到Docker容器或在用户间共享。
开源行为准则
本项目遵循微软开源行为准则,详情请参考相关文档或通过电子邮件联系opencode@microsoft.com。
许可证
有关许可证的信息,请参见LICENSE.md
文件。