其他
开发 NLP 文本处理、分类、NER、生成与语义检索任务时…
适用于用 Python 生态(transformers、spaCy、NLTK、sentence-transformers 等)开发文本预处理、分类、NER、文本生成、embedding 检索和 seq2seq 任务的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
开发 NLP 文本处理、分类、NER、生通用
解决思路
- 关键原则:编写简洁、技术性的回答,并提供准确的 Python 示例
- 关键原则:在 NLP 工作流中优先考虑清晰性、效率和最佳实践
- 关键原则:对文本处理管道使用函数式编程
- 关键原则:实现正确的分词和文本预处理
- 关键原则:使用能反映 NLP 操作、具有描述性的变量名
- 关键原则:遵循 PEP 8 的 Python 代码风格指南
- 文本预处理:实现正确的文本清洗(移除特殊字符、处理 unicode)
- 文本预处理:根据任务选择合适的分词策略(词、子词、字符)
- 文本预处理:在合适时应用词形还原或词干提取
- 文本预处理:根据上下文处理停用词移除(并非总是必要)
- 文本预处理:实现正确的句子分段和边界检测
- 分词与编码:使用 Transformers 库处理预训练分词器
- 分词与编码:理解不同分词方案(BPE、WordPiece、SentencePiece)
- 分词与编码:正确处理特殊 token([CLS]、[SEP]、[PAD]、[MASK])
- 分词与编码:实现正确的 padding 和截断策略
- 分词与编码:对变长序列正确使用 attention masks
- 文本分类:实现正确的 train/validation/test 划分并进行分层采样
- 文本分类:为任务选择合适的模型(BERT、RoBERTa、DistilBERT)
- 文本分类:应用微调技术并配合正确的学习率调度
- 文本分类:在需要时实现多标签分类
- 文本分类:使用合适的指标(accuracy、F1、precision、recall、AUC)
- 命名实体识别:在生产系统中使用 spaCy 进行高效 NER
- 命名实体识别:使用基于 transformer 的方法实现自定义 NER 模型
- 命名实体识别:适当处理实体重叠和嵌套实体
- 命名实体识别:正确使用 BIO/BILOU 标注方案
- 命名实体识别:使用实体级指标评估(部分匹配和精确匹配)
- 文本生成:使用合适的解码策略(贪心、beam search、采样)
- 文本生成:正确实现 temperature 和 top-k/top-p 采样
- 文本生成:处理重复惩罚和长度归一化
- 文本生成:为指令微调模型使用正确的 prompt engineering
- 文本生成:为响应式应用实现流式生成
- Embedding 与语义搜索:使用 sentence-transformers 生成语义 embedding
- Embedding 与语义搜索:使用 FAISS 或 Annoy 实现高效相似度搜索
- Embedding 与语义搜索:为余弦相似度应用正确的归一化
- Embedding 与语义搜索:使用合适的池化策略(CLS、mean、max)
- Embedding 与语义搜索:优雅处理词表外词
- 序列到序列任务:正确实现 encoder-decoder 架构
- 序列到序列任务:在训练中适当使用 teacher forcing
- 序列到序列任务:处理变长输入和输出序列
- 序列到序列任务:实现正确的注意力机制
- 序列到序列任务:为生成任务应用标签平滑
- 性能优化:使用批处理提高推理效率
- 性能优化:实现模型量化以加快推理
- 性能优化:在生产部署中使用 ONNX runtime
- 性能优化:应用知识蒸馏以得到更小的模型
- 性能优化:分析分词和推理瓶颈
- 错误处理与验证:验证文本输入的编码问题
- 错误处理与验证:处理空字符串和边界情况
- 错误处理与验证:实现正确的日志记录以便调试
- 错误处理与验证:对外部 API 调用使用 try-except 块
- 错误处理与验证:在后处理前验证模型输出
- 依赖:安装或引入 transformers
- 依赖:安装或引入 torch
- 依赖:安装或引入 spacy
- 依赖:安装或引入 nltk
- 依赖:安装或引入 sentence-transformers
- 依赖:安装或引入 tokenizers
- 依赖:安装或引入 datasets
- 依赖:安装或引入 evaluate
- 关键约定:始终指定模型的最大序列长度
- 关键约定:使用合适的 padding 策略(longest、max_length)
- 关键约定:尽早处理特殊字符和编码问题
- 关键约定:清晰记录预期的输入/输出格式
- 关键约定:在训练和推理中使用一致的预处理
- 关键约定:为生产系统实现正确的批处理
- 参考 Hugging Face 文档和 spaCy 文档以获取最佳实践和最新 API