nltk 计算语料库级别的METEOR分数的正确方法是什么?

chhkpiq4  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(42)

对于BLEU,有一个corpus_bleu函数,但是METEOR没有这样的函数。我正在阅读METEOR的论文和代码,看起来它比简单地计算句子METEOR分数的平均值要复杂得多。那么我应该怎么做呢?我应该将所有假设句和参考句连接起来,然后计算METEOR分数吗?

yfwxisqw

yfwxisqw1#

遗憾的是,NLTK中的METEOR实现是非规范的。它也不符合BLEU/RIBES/CHRF分数的标准类/函数模式。我建议不要将其用于任何超出算法理解目的的用途。

oxosxuxt

oxosxuxt2#

你指的是非规范的@alvations无法将token列表传递给函数,而不是字符串吗?如果是这样的话,应该很容易解决,因为分词是第一步,而且所有的内部函数都有它们的分词变体实现。
以下签名的函数应该能解决问题吧?

def sentence_meteor(
    references, # list of tokens
    hypothesis,  # list of tokens
    *args, **kwargs)

def corpus_meteor(
    references, # list of list of tokens
    hypothesis,  # list of tokens
    *args, **kwargs)
svujldwt

svujldwt3#

有几种陨石变体,可以通过更改这些变体的参数来使它们与java meteor的官方输出相匹配。

8fq7wneg

8fq7wneg4#

你是指“通用流星”吗?
https://www.cs.cmu.edu/~alavie/METEOR/pdf/meteor-1.5.pdf
当前的实现基于原始/第一篇流星论文,最终,他们将其推广并将其带到了当前的形式,他们称之为“通用流星”。
起初,我认为我会单独处理通用流星和那时我写的印地语流星,但它带了很多包袱,我试图将印地语同义词数据文件移植到支持NLTK的wordnet API时迷失了方向。
这种痛苦可能是我没有尝试的原因之一,如果你们能给我一些资源或文档来解释wordnet的数据文件,那就太棒了,但即使没有这些,大部分匹配逻辑也可以迁移过来,我需要重新实现分数计算部分,也许还有波束搜索,不确定我是如何编写搜索逻辑的,但如果这是很多人请求的功能,我可以尝试一下。
@alvations 只是为了确保你指的是以下参数的支持,对吗?

Options:
-t task                         One of: rank util adq hter li tune
                                  util implies -ch
-p 'alpha beta gamma delta'     Custom parameters (overrides default)
-m 'module1 module2 ...'        Specify modules (overrides default)
                                  Any of: exact stem synonym paraphrase
-w 'weight1 weight2 ...'        Specify module weights (overrides default)
-r refCount                     Number of references (plaintext only)
-x beamSize                     (default 40)
-ch                             Character-based precision and recall
-norm                           Tokenize / normalize punctuation and lowercase
                                  (Recommended unless scoring raw output with
                                   pretokenized references)
-lower                          Lowercase only (not required if -norm specified)
-noPunct                        Do not consider punctuation when scoring

-l language                     Fully supported: en cz de es fr ar
                                Supported with language-independent parameters:
                                  da fi hu it nl no pt ro ru se tr

另外,有没有什么接口可以用来解析这些呢?或者我应该暂时不使用外部词表和同义词支持吗?

-s wordListDirectory            (if not default for language)
-d synonymDirectory             (if not default for language)
-a paraphraseFile               (if not default for language)

相关问题