Skip to content

feat(metrics): Burstiness / Token-Dispersion (gleichverteilt vs. geklumpt) #47

Description

@aspala

Was & Warum

Misst, ob ein Token gleichmäßig über die Datei verteilt ist oder burstet (lokal klumpt). In NLP bursten Content-Wörter, Funktionswörter sind gleichverteilt. Übertragen: gleichverteilte Tokens = strukturelle Keywords, burstende = lokale Konzepte.

Komplementär zu allen Häufigkeits-Metriken (Zipf, Entropy) — die zählen wie oft, Burstiness misst wo.

Skala

Verhalten Beispiel erwarteter Wert
gleichverteilt (niedrig) def über die ganze Datei verstreut VMR ≈ 1
mittel ein Helper lokal mehrfach, sonst nicht VMR > 1
geklumpt (hoch) socket = assign(socket, …) × 8 in einem Block VMR >> 1

Umsetzung

  • Neues Modul lib/codeqa/metrics/file/burstiness.ex, @behaviour CodeQA.Metrics.File.FileMetric.
  • Input: ctx.tokens mit .line (Token-Struct = [:col, :content, :kind, :line], wird von Bradford bereits so genutzt). Pro Token-Typ: Inter-Arrival-Distanzen über die Zeilennummern → Variance-to-Mean-Ratio (VMR).
  • keys: ["mean_vmr", "max_vmr", "bursty_token_count"].
  • Registrieren in lib/codeqa/engine/analyzer.ex.
  • Edge-Cases: leer / < 2 Vorkommen pro Token → kein VMR.

Test

  • test/codeqa/metrics/file/burstiness_test.exs, Muster wie brevity_test.exs.
  • Assertion: Token in jeder zweiten Zeile → VMR ≈ 0; Token 8× in einem Block, sonst nie → hohe max_vmr.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions