python3 training_code/train_tfidf.py
python3 training_code/train_bert.py
cd test/
ab -n 100 -c 100 -p data.json -T 'application/json' -H 'accept: application/json' 'http://0.0.0.0:8000/v1/text-cls/regex'
ab -n 100 -c 100 -p data.json -T 'application/json' -H 'accept: application/json' 'http://0.0.0.0:8000/v1/text-cls/tfidf'
ab -n 100 -c 100 -p data.json -T 'application/json' -H 'accept: application/json' 'http://0.0.0.0:8000/v1/text-cls/bert'
curl -X 'POST' \
'http://0.0.0.0:8000/v1/text-cls/tfidf' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"request_id": "string",
"request_text": "帮我播放周杰伦的歌曲"
}'
uvicorn main:app --host 0.0.0.0 --port 8000
解释:Uvicorn是一个ASGI服务器,负责接收HTTP请求并转发给FastAPI应用处理。FastAPI本身只是一个框架,不负责网络监听;uvicorn才是真正"跑起来"的那个进程
main:app → main是Python模块名,对应main.py文件;app是该模块里的变量,即main.py里的app = FastAPI()
uvicorn会先 import main,然后拿到main.py里的FastAPI实例,开始监听请求
可以重新找一个公开数据集(比如在魔搭社区的数据集),或直接标注一个文本分类数据集(推荐3个以上的类别个数),复现加载bert base 模型在新数据集上的微调过程。最终输入一个新的样本进行测试,验证分类效果是否准确。
本项目介绍了意图识别常用的三个方法:
1.关键词匹配。写规则。好处是简单快,坏处是说法稍微变一下就抓不到了,并且容易误命中
2.模型分类。用一个专门训练过的语言理解模型做分类(本项目有TFIDF/BERT)
3.大模型判断:直接把用户输入喂给大语言模型,让它判断意图,不需要训练,但速度慢、成本高,适合长尾场景或刚起步阶段。
对于一个高频场景,通常的选择是:模型分类做主力,关键词规则兜底,大模型处理没见过的长尾说法。三个分开用,别指望一个方案全搞定。
置信度就是模型对自己判断结果的把握程度,范围0到1。1是完全确定,0是完全不知道
┌────────────────────┬────────────────────┬────────────┐
│ 路由 │ 置信度来源 │ 值范围 │
├────────────────────┼────────────────────┼────────────┤
│ /v1/text-cls/bert │ softmax 概率 │ 0 ~ 1 │
├────────────────────┼────────────────────┼────────────┤
│ /v1/text-cls/tfidf │ predict_proba 概率 │ 0 ~ 1 │
├────────────────────┼────────────────────┼────────────┤
│ /v1/text-cls/regex │ 固定值 │ 1.0 或 0.0 │
├────────────────────┼────────────────────┼────────────┤
│ /v1/text-cls/gpt │ 固定值 │ 1.0 │
└────────────────────┴────────────────────┴────────────┘