# 工具与库

URL: https://caijiao.org/nlp/tools
Source: docs/nlp/tools.md
Description: 本章介绍 NLP 中常用工具与库，包括数据处理、模型训练、评估和部署相关工具。

NLP 开发过程中需要使用丰富的工具和库来处理文本、构建模型、训练与评估。本章将介绍常用的 Python 库及其应用场景。

## 一、文本处理工具

| 工具/库 | 功能 | 示例 |
|---------|------|------|
| **NLTK** | 分词、词性标注、句法分析 | `nltk.word_tokenize("Hello world!")` |
| **spaCy** | 高效的分词、NER、依存句法分析 | `import spacy; nlp = spacy.load("en_core_web_sm")` |
| **jieba** | 中文分词 | `jieba.lcut("我爱自然语言处理")` |
| **TextBlob** | 情感分析、翻译 | `TextBlob("I love NLP").sentiment` |

## 二、模型与训练库

| 库 | 功能 | 示例 |
|----|------|------|
| **Transformers (Hugging Face)** | 预训练模型、Tokenizer、Trainer | `from transformers import pipeline; classifier = pipeline("text-classification")` |
| **PyTorch** | 深度学习模型构建与训练 | `import torch.nn as nn` |
| **TensorFlow / Keras** | 模型构建、训练、部署 | `tf.keras.Model` |
| **fastai** | 高层 API 简化训练流程 | `from fastai.text.all import *` |

## 三、数据集与评估工具

| 库 | 功能 | 示例 |
|----|------|------|
| **datasets** | 提供多种 NLP 数据集 | `from datasets import load_dataset` |
| **scikit-learn** | 分类、回归、评估指标 | `from sklearn.metrics import accuracy_score` |
| **seqeval** | 序列标注评估（NER） | `from seqeval.metrics import classification_report` |
| **BLEU / ROUGE** | 文本生成任务评估 | `from nltk.translate.bleu_score import sentence_bleu` |

## 四、可视化工具

- **matplotlib / seaborn**：绘制统计图、混淆矩阵  
- **TensorBoard / Weights & Biases (W&B)**：训练日志可视化  
- **t-SNE / UMAP**：嵌入向量降维可视化  

## 五、辅助工具

- **sentencepiece**：子词分词器（支持多语言）  
- **tokenizers**：高性能分词工具  
- **spaCy Prodigy**：数据标注工具  
- **Hugging Face Hub**：模型与数据集共享平台  

## 六、小结

- NLP 开发生态丰富，选择工具需结合任务场景；  
- Transformers + datasets 已成为主流训练与实验方案；  
- 可视化与标注工具提升数据理解与模型分析能力。
