多样性排序
基于嵌入的项目多样化,最大化标注多样性。
多样性排序
多样性排序使用 sentence-transformer 嵌入将相似项目聚类,然后从不同聚类中轮询采样项目。这确保标注者看到多样化的内容,而不是连续的相似项目。
优势
- 减少标注者疲劳,避免重复内容
- 通过多样化上下文提高标注质量
- 更快覆盖完整的主题空间
快速开始
yaml
assignment_strategy: diversity_clustering
diversity_ordering:
enabled: true
prefill_count: 100工作原理
- 启动时:前 N 个项目使用 sentence-transformers 嵌入并用 k-means 聚类
- 分配时:从聚类中轮询采样项目,确保多样性
- 标注时:新项目在标注时异步嵌入
- 重新聚类:当用户从所有聚类中采样后,系统重新聚类
配置
yaml
diversity_ordering:
enabled: true
# Sentence-transformer model
model_name: "all-MiniLM-L6-v2"
# Clustering parameters
num_clusters: 10
items_per_cluster: 20
auto_clusters: true # Auto-calculate based on data size
# Prefill on startup
prefill_count: 100
batch_size: 32
# Re-clustering behavior
recluster_threshold: 1.0 # Recluster when all clusters sampled
# Order preservation
preserve_visited: true
# AI integration
trigger_ai_prefetch: true配置参考
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
enabled | boolean | false | 启用多样性排序 |
model_name | string | "all-MiniLM-L6-v2" | sentence-transformers 模型 |
num_clusters | integer | 10 | 聚类数量(auto_clusters=false 时) |
items_per_cluster | integer | 20 | 目标聚类大小(auto_clusters=true 时) |
auto_clusters | boolean | true | 自动计算聚类数量 |
prefill_count | integer | 100 | 启动时嵌入的项目数 |
batch_size | integer | 32 | 嵌入计算的批量大小 |
recluster_threshold | float | 1.0 | 重新聚类前采样的聚类比例 |
preserve_visited | boolean | true | 保持已访问/跳过项目的位置 |
trigger_ai_prefetch | boolean | true | 重排序后触发 AI 缓存 |
依赖要求
bash
pip install sentence-transformers scikit-learn这些是可选依赖。没有它们,该功能将被禁用并发出警告。
性能
- 启动时间:100 个项目约 10 秒,500 个项目约 30 秒(首次运行;之后有缓存)
- 内存:每个项目约 1.5 KB(all-MiniLM-L6-v2),10,000 个项目约 15 MB
- 缓存:嵌入持久化到磁盘,存储在
.diversity_cache/
与其他功能的交互
- AI 支持:当
trigger_ai_prefetch: true时,AI 提示会自动为重排序的项目预取 - 主动学习:可以结合使用,先用多样性聚类进行初始覆盖,然后切换到主动学习
- 顺序保留:当
preserve_visited: true时,之前看过的项目保持其位置
完整示例
yaml
annotation_task_name: "Diversity Ordering Test"
assignment_strategy: diversity_clustering
diversity_ordering:
enabled: true
model_name: "all-MiniLM-L6-v2"
num_clusters: 5
auto_clusters: false
prefill_count: 100
batch_size: 16
recluster_threshold: 1.0
preserve_visited: true
annotation_schemes:
- annotation_type: radio
name: topic
description: "What is the main topic of this text?"
labels:
- name: Sports
- name: Technology
- name: Food
- name: Travel
- name: Health延伸阅读
有关实现细节,请参阅源代码文档。