pub struct MetricDivergence {
pub muc_f1: f64,
pub b3_f1: f64,
pub ceaf_e_f1: f64,
pub muc_ceaf_divergence: f64,
pub muc_b3_divergence: f64,
pub b3_ceaf_divergence: f64,
}Expand description
Divergence between coreference metrics.
§Research Context
At book scale, different metrics diverge significantly:
- MUC tends to be inflated (favors link-based evaluation)
- CEAF-e tends to collapse (entity alignment struggles)
- B³ falls between but is more stable
Large divergence (>0.20) indicates potential metric unreliability.
§Example
use anno_eval::eval::MetricDivergence;
let divergence = MetricDivergence::from_scores(0.90, 0.65, 0.45);
assert!(divergence.has_high_divergence());
println!("MUC-CEAF divergence: {:.0}%", divergence.muc_ceaf_divergence * 100.0);Fields§
§muc_f1: f64MUC F1 score.
b3_f1: f64B³ F1 score.
ceaf_e_f1: f64CEAF-e F1 score.
muc_ceaf_divergence: f64Divergence between MUC and CEAF-e (absolute difference).
muc_b3_divergence: f64Divergence between MUC and B³.
b3_ceaf_divergence: f64Divergence between B³ and CEAF-e.
Implementations§
Source§impl MetricDivergence
impl MetricDivergence
Sourcepub fn from_scores(muc_f1: f64, b3_f1: f64, ceaf_e_f1: f64) -> Self
pub fn from_scores(muc_f1: f64, b3_f1: f64, ceaf_e_f1: f64) -> Self
Compute divergence from raw scores.
Sourcepub fn has_high_divergence(&self) -> bool
pub fn has_high_divergence(&self) -> bool
Check if divergence is high (>0.20), indicating unreliable metrics.
Sourcepub fn muc_likely_inflated(&self) -> bool
pub fn muc_likely_inflated(&self) -> bool
Check if MUC is likely inflated (MUC >> CEAF-e).
Sourcepub fn ceaf_likely_collapsed(&self) -> bool
pub fn ceaf_likely_collapsed(&self) -> bool
Check if CEAF-e is likely collapsed (CEAF-e << others).
Sourcepub fn most_reliable_metric(&self) -> &'static str
pub fn most_reliable_metric(&self) -> &'static str
Get most reliable metric recommendation.
Trait Implementations§
Source§impl Clone for MetricDivergence
impl Clone for MetricDivergence
Source§fn clone(&self) -> MetricDivergence
fn clone(&self) -> MetricDivergence
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for MetricDivergence
Source§impl Debug for MetricDivergence
impl Debug for MetricDivergence
Source§impl Default for MetricDivergence
impl Default for MetricDivergence
Source§fn default() -> MetricDivergence
fn default() -> MetricDivergence
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for MetricDivergence
impl<'de> Deserialize<'de> for MetricDivergence
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for MetricDivergence
impl RefUnwindSafe for MetricDivergence
impl Send for MetricDivergence
impl Sync for MetricDivergence
impl Unpin for MetricDivergence
impl UnsafeUnpin for MetricDivergence
impl UnwindSafe for MetricDivergence
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more