pub mod coref;
pub mod types {
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default)]
pub struct CorefChainStats {
pub long_chain_count: usize,
pub short_chain_count: usize,
pub singleton_count: usize,
pub long_chain_f1: f64,
pub short_chain_f1: f64,
pub singleton_f1: f64,
}
impl CorefChainStats {
#[must_use]
pub fn total_chains(&self) -> usize {
self.long_chain_count + self.short_chain_count + self.singleton_count
}
#[must_use]
pub fn weighted_f1(&self) -> f64 {
let total = self.total_chains();
if total == 0 {
return 0.0;
}
let weighted_sum = self.long_chain_f1 * self.long_chain_count as f64
+ self.short_chain_f1 * self.short_chain_count as f64
+ self.singleton_f1 * self.singleton_count as f64;
weighted_sum / total as f64
}
}
}
pub mod coref_metrics;
pub mod cluster_encoder;
pub mod coref_resolver;
pub use cluster_encoder::{
ClusterEmbedding, ClusterEncoder, ClusterMention, CosineMergeScorer, CrossContextConfig,
HeuristicClusterEncoder, LocalCluster, MergeScorer, MergedCluster,
};
pub use coref_metrics::{
b_cubed_score, blanc_score, ceaf_e_score, ceaf_m_score, conll_f1, lea_score, muc_score,
CorefEvaluation, CorefScores, ZeroAnaphorEvaluation,
};
pub use coref_resolver::{CorefConfig, SimpleCorefResolver};