FastText 0.9.2 - 为什么召回是“nan”?

2024-01-29

我使用 Python 接口在 FastText 中训练了一个监督模型,并且在精确度和召回率方面得到了奇怪的结果。

首先,我训练了一个模型:

model = fasttext.train_supervised("train.txt", wordNgrams=3, epoch=100, pretrainedVectors=pretrained_model)

然后我得到测试数据的结果:

def print_results(N, p, r):
    print("N\t" + str(N))
    print("P@{}\t{:.3f}".format(1, p))
    print("R@{}\t{:.3f}".format(1, r))

print_results(*model.test('test.txt'))

但结果总是很奇怪,因为它们显示的精度和召回率@1是相同的,即使对于不同的数据集,例如一个输出是:

N   46425
P@1 0.917
R@1 0.917

然后,当我寻找每个标签的精确度和召回率时,我总是得到“nan”的召回率:

print(model.test_label('test.txt'))

输出是:

{'__label__1': {'precision': 0.9202150724134941, 'recall': nan, 'f1score': 1.8404301448269882}, '__label__5': {'precision': 0.9134956983264135, 'recall': nan, 'f1score': 1.826991396652827}}

有谁知道为什么会发生这种情况?

P.S.:要尝试此行为的可重现示例,请参阅https://github.com/facebookresearch/fastText/issues/1072 https://github.com/facebookresearch/fastText/issues/1072并使用 FastText 0.9.2 运行它


看起来 FastText 0.9.2 在召回率计算中存在错误,应该使用以下命令修复该错误这次提交 https://github.com/facebookresearch/fastText/commit/b64e359d5485dda4b4b5074494155d18e25c8d13.

安装 FastText 的“前沿”版本,例如和

pip install git+https://github.com/facebookresearch/fastText.git@b64e359d5485dda4b4b5074494155d18e25c8d13 --quiet

并重新运行您的代码应该可以摆脱nan召回计算中的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastText 0.9.2 - 为什么召回是“nan”? 的相关文章

随机推荐