Skip to content

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

@aspala

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions