Skip to content

多样性排序

基于嵌入的项目多样化,最大化标注多样性。

多样性排序

多样性排序使用 sentence-transformer 嵌入将相似项目聚类,然后从不同聚类中轮询采样项目。这确保标注者看到多样化的内容,而不是连续的相似项目。

优势

  • 减少标注者疲劳,避免重复内容
  • 通过多样化上下文提高标注质量
  • 更快覆盖完整的主题空间

快速开始

yaml
assignment_strategy: diversity_clustering
 
diversity_ordering:
  enabled: true
  prefill_count: 100

工作原理

  1. 启动时:前 N 个项目使用 sentence-transformers 嵌入并用 k-means 聚类
  2. 分配时:从聚类中轮询采样项目,确保多样性
  3. 标注时:新项目在标注时异步嵌入
  4. 重新聚类:当用户从所有聚类中采样后,系统重新聚类

配置

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

配置参考

选项类型默认值描述
enabledbooleanfalse启用多样性排序
model_namestring"all-MiniLM-L6-v2"sentence-transformers 模型
num_clustersinteger10聚类数量(auto_clusters=false 时)
items_per_clusterinteger20目标聚类大小(auto_clusters=true 时)
auto_clustersbooleantrue自动计算聚类数量
prefill_countinteger100启动时嵌入的项目数
batch_sizeinteger32嵌入计算的批量大小
recluster_thresholdfloat1.0重新聚类前采样的聚类比例
preserve_visitedbooleantrue保持已访问/跳过项目的位置
trigger_ai_prefetchbooleantrue重排序后触发 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

延伸阅读

有关实现细节,请参阅源代码文档