客户服务中的 NLP:场景、模型与落地做法
客户服务里谈 NLP,落点通常很实际:先把用户的问题分出来,再决定是自动回复、转人工,还是做后续分析。和实验室里的文本任务不太一样,这类场景更看重响应速度、噪声处理和可控性,模型跑得再漂亮,接不住真实咨询也没意义。
学习目标
- 理解自然语言处理(NLP)在客户服务中的常见场景
- 掌握聊天机器人、意图识别、情感分析这些核心能力
- 了解 BERT、GPT-3 这类模型在客服文本里的用法
- 认识实时性、多语言、用户体验带来的额外约束
- 能搭一个最小可用的客户服务聊天机器人
一、客户服务领域的主要场景
1.1 聊天机器人
聊天机器人本质上是一个能用自然语言跟用户来回交互的程序。在客服里,它常见的任务不是'聊天'本身,而是把高频问题接住:
- 回答售后问题,比如退货、换货、物流进度
- 做商品推荐
- 帮用户查订单状态、发货时间
这里面最容易踩坑的是泛化。用户问法很散,真正上线后,很多输入并不会像样例那么标准。光靠一两个示例,很快就会露馅。
1.2 意图识别
意图识别做的是分类:用户这句话到底是查订单、投诉,还是提建议。客服系统通常会先过这一层,再决定下一步动作。
典型意图包括:
- 查询意图:查订单、查价格、查状态
- 投诉意图:投诉质量、投诉物流、投诉服务
- 建议意图:改进商品、改进流程、改进服务
from transformers import BertTokenizer, BertForSequenceClassification
import torch
def recognize_intent(text, model_name='bert-base-uncased', num_labels=3):
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=num_labels)
# 编码输入文本
inputs = tokenizer(text, return_tensors='pt', max_length=512, truncation=True, padding=True)
outputs = model(**inputs)
# 计算分类结果
probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
label = torch.argmax(probs, dim=-1).item()
return label
这段代码是个最小骨架,能看出流程,但离可用系统还有距离。真正做项目时,模型要先用业务数据微调,不然分类结果大概率只是'看起来能跑'。
1.3 情感分析
情感分析一般用来判断用户态度是正向、负向,还是比较中性。在客服场景里,它更像一个辅助信号:
- 看反馈里有没有明显不满
- 给服务质量评估提供参考
- 帮投诉工单做优先级判断
transformers BertTokenizer, BertForSequenceClassification
torch
():
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=num_labels)
inputs = tokenizer(text, return_tensors=, max_length=, truncation=, padding=)
outputs = model(**inputs)
probs = torch.nn.functional.softmax(outputs.logits, dim=-)
label = torch.argmax(probs, dim=-).item()
label


