机器翻译的计算度量

cyzil的Python项目详细描述


西里尔

PyPI versionSupported Python versionCoding style

说明

Cyzil提供了一些工具,可以快速深入地分析序列生成模型,比如机器翻译模型。它包含一个Cython模块,提供标准度量的快速计算。它涵盖了edit distance (Levenstein Distance)和{a5}提出的BLEU评分。在

要求

  • Python 3.7+

安装

Cyzil需要python3.7+。请运行以下代码进行安装:

pip install cyzil

命令行工具

用户指南

你可以在终端机上编辑你的距离。你要做的就是 指定引用文件(正确的翻译)和候选文件的路径的步骤 (由机器翻译模型生成的翻译)。 参考句和候选句应该分开存放,例如。 句子1\n句子2\n。。。句子k\n。 请参阅示例here。 为了计算分数,可以用空格或nltk tokenizer标记句子。 默认情况下,它标记句子 空白处。在

用法

下面的代码显示了语料库级别BLEU score的一个示例。它会打印出准确度,简短的点球和BLEU得分。在

^{pr2}$

下面是语料库级编辑距离的一个例子。在

> cyzil-edit-distance-corpus \
    --reference data/ref.en \
    --candidate data/can.en \
    --tokenizer nltk
[0.5, 0.04545454680919647]

计算每对

Cyzil还计算每个参考候选对的度量,以便深入分析序列生成模型。输出可以存储在csv文件中。每行输出对应于每个参考候选对。在

下面是BLEU分数的一个例子。输出的第一列是精度,第二列是简洁性惩罚,最后一列是BLEU分数。在

> cyzil-bleu-points \
    --reference data/ref.en \
    --candidate data/can.en \
    --ngram 4\
    --tokenizer nltk \
    --output output.csv

编辑距离可以计算如下。输出的第一列是edit distance,第二列是normalized edit distance。在

> cyzil-edit-distance-points \
    --reference data/ref.en \
    --candidate data/can.en \
    --tokenizer nltk \
    --output output.csv

有关详细信息,请参阅每个命令的帮助,例如cyzil-bleu-corpus -h。在

Python API

Cyzil可以作为python模块导入到您的程序中。 下面显示了API调用的示例。 有关详细信息,请参阅User Guide。在

importcyzilreference=['this','is','a','test']candidate=['this','is','a','test']cyzil.bleu_sentence(reference,candidate,max_ngram=4)cyzil.bleu_corpus([reference],[candidate],max_ngram=4)cyzil.bleu_points([reference],[candidate],max_ngram=4)cyzil.edit_distance_sentence(reference,candidate)cyzil.edit_distance_corpus([reference],[candidate])cyzil.edit_distance_points([reference],[candidate])

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么会出现这些错误?表达式的非法开始   使用HttpUrlConnection的java测试URL仅适用于前面的www   在大数据集上使用kmeans的java堆外内存   查找Java RandomAccessFile如何以字符形式读取第n个字节   java Android从BroadcastReceiver获取标题和描述   java使用构造函数参数模拟嵌套类并测试方法   正在将Azure Blob项强制转换为Java文件对象   java并行运行testNG套件   java程序在运行时似乎没有进入   贬低Java规则引擎的优点和缺点   文本区域中的java中心文本   java JPA从多个表中选择错误   类Java问题使用类加载器重新加载代码   java如何在Spring非管理类上使用@Value   java(关闭)Gradle导入VS代码失败   java arraylist拆分(“空白”)并计算字数   Android/Java如何在单独的*中调用函数。java文件?   具有基本身份验证的java Apache Camel RSS模块   java为什么程序在出现溢出或下溢时不抛出异常