[ PROMPT_NODE_22250 ]
filtering
[ SKILL_DOCUMENTATION ]
# 质量过滤指南
NeMo Curator 30+ 种质量过滤器的完整指南。
## 基于文本的过滤器
### 单词计数
python
from nemo_curator.filters import WordCountFilter
# 按单词数量过滤
dataset = dataset.filter(WordCountFilter(min_words=50, max_words=100000))
### 重复内容
python
from nemo_curator.filters import RepeatedLinesFilter
# 移除重复行占比超过 30% 的文档
dataset = dataset.filter(RepeatedLinesFilter(max_repeated_line_fraction=0.3))
### 符号比例
python
from nemo_curator.filters import SymbolToWordRatioFilter
# 移除符号过多的文档
dataset = dataset.filter(SymbolToWordRatioFilter(max_symbol_to_word_ratio=0.3))
### URL 比例
python
from nemo_curator.filters import UrlRatioFilter
# 移除包含大量 URL 的文档
dataset = dataset.filter(UrlRatioFilter(max_url_ratio=0.2))
## 语言过滤
python
from nemo_curator.filters import LanguageIdentificationFilter
# 仅保留英语文档
dataset = dataset.filter(LanguageIdentificationFilter(target_languages=["en"]))
# 多语言
dataset = dataset.filter(LanguageIdentificationFilter(target_languages=["en", "es", "fr"]))
## 基于分类器的过滤
### 质量分类器
python
from nemo_curator.classifiers import QualityClassifier
quality_clf = QualityClassifier(
model_path="nvidia/quality-classifier-deberta",
batch_size=256,
device="cuda"
)
# 过滤低质量内容(阈值 > 0.5 为高质量)
dataset = dataset.filter(lambda doc: quality_clf(doc["text"]) > 0.5)
### NSFW 分类器
python
from nemo_curator.classifiers import NSFWClassifier
nsfw_clf = NSFWClassifier(threshold=0.9, device="cuda")
# 移除 NSFW 内容
dataset = dataset.filter(lambda doc: nsfw_clf(doc["text"]) < 0.9)
## 启发式过滤器
30+ 种过滤器的完整列表:
- WordCountFilter
- RepeatedLinesFilter
- UrlRatioFilter
- SymbolToWordRatioFilter
- NonAlphaNumericFilter
- BulletsFilter
- WhiteSpaceFilter
- ParenthesesFilter
- LongWordFilter
- 以及其他 20+ 种...
## 最佳实践
1. **先应用低成本过滤器** - 在 GPU 分类器之前先进行单词计数过滤
2. **在样本上调整阈值** - 在全量运行前先在 1 万条文档上进行测试
3. **谨慎使用 GPU 分类器** - 成本高但效果显著
4. **高效串联过滤器** - 按成本排序(从低到高)