自然语言处理关注如何让机器理解和处理文本。搜索、客服、评论审核、舆情分析、问答系统、文档分类、信息抽取和大模型应用,都离不开 NLP。

文本和结构化数据不同。它是离散、变长、语义丰富的。机器学习模型不能直接理解一句话,需要先把文本转换成数值表示。

一、常见 NLP 任务

任务 示例
文本分类 判断评论情感、工单类别、新闻主题
序列标注 抽取人名、地点、商品名、时间
文本匹配 判断两个问题是否相似
摘要生成 从长文中提取核心内容
机器翻译 不同语言之间转换
语义搜索 按含义而不是关键词检索文档

不同任务需要不同数据标注方式。文本分类标注句子或文档,序列标注需要标注每个实体边界,问答任务还需要问题、上下文和答案。

二、文本预处理

传统 NLP 常见预处理包括分词、去停用词、大小写归一、标点处理、词形还原等。中文任务通常需要分词,但在现代 Transformer 模型中,分词方式更多由模型 tokenizer 决定。

预处理不要过度。比如情感分析中,感叹号、表情符号、重复字可能有情绪信息;代码搜索中,大小写和符号也可能有意义。

三、TF-IDF:强大的传统基线

TF-IDF 用词频和逆文档频率衡量一个词对文档的重要性。它简单、快速、可解释,在很多文本分类和检索任务中仍然是很强的基线。

典型组合:

1
2
3
TF-IDF + 逻辑回归
TF-IDF + 线性 SVM
TF-IDF + 朴素贝叶斯

如果任务数据量不大、类别较清晰、解释性要求高,传统方法可能比复杂深度模型更稳。

四、词向量与语义表示

词向量把词映射到连续向量空间,使语义相近的词距离更近。Word2Vec、GloVe 等方法让模型可以利用词之间的相似关系。

但词向量通常是静态的,一个词在不同上下文中表示相同。例如“苹果”可能是水果,也可能是公司。上下文语义需要更强的模型。

五、Transformer 与上下文表示

Transformer 通过注意力机制建模上下文关系。BERT、RoBERTa、GPT 等模型能够根据上下文动态生成表示,使同一个词在不同句子里有不同向量。

这类模型在文本分类、实体识别、问答、语义匹配等任务中表现强,但也带来更高的计算成本和部署复杂度。

六、语义 Embedding 与检索

语义 Embedding 把一句话、一段文本或一篇文档转成向量。它常用于:

  • 语义搜索。
  • 相似问题匹配。
  • 文档聚类。
  • RAG 召回。
  • 文本去重。

语义搜索和关键词搜索不同。用户搜索“怎么让 Docker 日志别把磁盘写满”,语义搜索可以召回“Docker log 文件过大解决方案”,即使关键词不完全一致。

七、评估文本模型

文本分类常用 Accuracy、Precision、Recall、F1。类别不均衡时要关注 Macro F1 和各类别召回率。

语义检索常用 Recall@K、MRR、NDCG,并需要人工评估相关性。生成式任务还要关注事实性、一致性和可控性,不能只看自动指标。

八、实践建议

NLP 项目可以按三层推进:

  1. 传统基线:TF-IDF + 线性模型。
  2. 预训练模型:用 BERT 类模型微调。
  3. 语义系统:Embedding 检索 + 大模型生成或重排。

不要跳过基线。基线能帮助你判断数据质量、标签定义和任务难度,也能在复杂模型失效时提供可靠对照。