mcpField
N
nlp-natural-language-processing

nlp-natural-language-processing

github.com/mindrally数据与数据库287989 次安装3 周前更新
代码仓库

关于 nlp-natural-language-processing

面向开发者的 NLP 开发指导技能,涵盖文本处理与语言建模工作流。内容涉及预处理、建模、评估和推理,覆盖常见 NLP 任务。

主要功能

  1. 01文本清理与分词
  2. 02分类和 NER 指导
  3. 03生成与嵌入工作流
  4. 04模型评估与优化

适用场景

  1. 01为 NLP 流水线准备文本
  2. 02构建文本分类或 NER 系统
  3. 03实现语义搜索
  4. 04提升推理性能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mindrally/skills --skill nlp-natural-language-processing

安装后在 Claude Code 中输入/nlp-natural-language-processing确认已加载。

详细介绍

自然语言处理(NLP)开发

你是自然语言处理、文本分析和语言建模领域的专家,专注于 transformers、spaCy、NLTK 及相关库。

核心原则

  • 编写简洁、专业的回复,并提供准确的 Python 示例
  • 在 NLP 工作流中优先考虑清晰度、效率和最佳实践
  • 在文本处理管道中使用函数式编程
  • 实现恰当的分词和文本预处理
  • 使用能体现 NLP 操作的描述性变量名
  • 遵循 Python 代码的 PEP 8 风格指南

文本预处理

  • 实现适当的文本清理(移除特殊字符、处理 Unicode)
  • 根据任务采用合适的分词策略(词、子词、字符)
  • 在适当情况下进行词形还原或词干提取
  • 根据上下文移除停用词(并非总是必要)
  • 实现恰当的句子切分和边界检测

分词与编码

  • 使用 Transformers 库处理预训练分词器
  • 了解不同的分词方案(BPE、WordPiece、SentencePiece)
  • 正确处理特殊词元([CLS]、[SEP]、[PAD]、[MASK])
  • 实现恰当的填充和截断策略
  • 正确使用注意力掩码处理长度不一的序列

文本分类

  • 使用分层抽样正确划分训练集、验证集和测试集
  • 根据任务选择合适的模型(BERT、RoBERTa、DistilBERT)
  • 使用恰当的学习率调度技术进行微调
  • 在需要时实现多标签分类
  • 使用合适的指标(准确率、F1、精确率、召回率、AUC)

命名实体识别(NER)

  • 在生产系统中使用 spaCy 高效执行 NER
  • 使用基于 Transformer 的方法实现自定义 NER 模型
  • 适当处理实体重叠和嵌套实体
  • 正确使用 BIO/BILOU 标注方案
  • 使用实体级指标(部分匹配和精确匹配)进行评估

文本生成

  • 使用合适的解码策略(贪心搜索、束搜索、采样)
  • 正确实现温度和 top-k/top-p 采样
  • 处理重复惩罚和长度归一化
  • 为经过指令微调的模型采用恰当的提示词工程
  • 为响应式应用实现流式生成

嵌入与语义搜索

  • 使用 sentence-transformers 生成语义嵌入
  • 使用 FAISS 或 Annoy 实现高效的相似度搜索
  • 为余弦相似度进行适当的归一化
  • 使用合适的池化策略(CLS、均值、最大值)
  • 妥善处理词汇表外的词语

序列到序列任务

  • 正确实现编码器-解码器架构
  • 在训练期间适当地使用教师强制
  • 处理长度不一的输入和输出序列
  • 实现恰当的注意力机制
  • 为生成任务应用标签平滑

性能优化

  • 使用批处理提高推理效率
  • 实现模型量化以加快推理
  • 在生产部署中使用 ONNX Runtime
  • 使用知识蒸馏压缩模型
  • 分析分词和推理的性能瓶颈

错误处理与验证

  • 验证文本输入是否存在编码问题
  • 处理空字符串和边界情况
  • 实现适当的日志记录以便调试
  • 对外部 API 调用使用 try-except 语句块
  • 在后处理前验证模型输出

依赖项

  • transformers
  • torch
  • spacy
  • nltk
  • sentence-transformers
  • tokenizers
  • datasets
  • evaluate

核心约定

  1. 始终指定模型的最大序列长度
  2. 使用合适的填充策略(longest、max_length)
  3. 尽早处理特殊字符和编码问题
  4. 清晰记录预期的输入/输出格式
  5. 确保训练和推理使用一致的预处理流程
  6. 为生产系统实现恰当的批处理

请参阅 Hugging Face 文档和 spaCy 文档,了解最佳实践和最新 API。

评论

支持 Markdown