You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastText文本分类自定义标注数据集测试返回P@1、R@1为nan问题排查

fasttext单分类任务输出N=0、P/R为nan的解决方案

核心问题定位

你输出日志中N = 0是触发异常的直接原因:fasttext的test函数仅能识别符合标注规范的测试样本,当前没有从test_valid.txt中读取到任何有效样本,因此精确率、召回率计算结果为nan,该问题和训练集词汇量、训练代码主体逻辑无关。

fasttext标注数据集强制规范

训练集、测试集都必须遵循以下格式要求:

  • 每一行对应一条独立样本,行首无多余空格、空行
  • 每行格式固定为 [标签] [文本内容],标签必须以__label__为前缀
  • 你当前的测试集如果仅包含纯文本、没有加__label__int前缀,fasttext会直接判定为无效样本。

修复步骤

1. 修正测试集格式

test_valid.txt的每一行都需要补充标签前缀,示例如下:

__label__int Aggression frequency is on an increasing trend.
__label__int Crying percentage is on a decreasing trend.

同时确认test_valid.txt和代码运行的工作目录路径一致,无文件名拼写错误、隐藏后缀错误。

2. 优化训练参数适配小样本单分类场景

你当前仅使用单标签、训练样本量较小,可以调整训练参数提升效果,修改后代码示例:

import fasttext

# 新增参数适配小样本单分类任务
model = fasttext.train_supervised(
    input='Interfering Behavior Train.txt',
    lr=0.1,
    epoch=20,
    loss='softmax'
)
model.save_model("model_int-behavior.bin")

# 输出测试集评估指标
test_num, precision, recall = model.test("test_valid.txt")
print(f"测试样本数:{test_num}, 精确率:{precision}, 召回率:{recall}")

# 若需要预测无标注的纯文本,直接调用predict方法即可
print(model.predict("Aggression data are low and stable at occurrences."))

内容的提问来源于stack exchange,提问作者SSerb1989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:18:03