module NLP.Probability.Chain (simpleObserve,
JointModel (..)
) where
import NLP.Probability.ConditionalDistribution
import NLP.Probability.Distribution
import NLP.Probability.Observation
import qualified Data.Map as M
class JointModel a where
data FullEvent a
data FullContext a
data Probs a
data Observation a
data Pairs a
chainRule :: FullEvent a -> FullContext a -> Pairs a
observe :: Pairs a -> Observation a
prob :: Probs a -> Pairs a -> Prob
estimate :: Observation a -> Probs a
class Estimate a where
type Dist a
instance Event String where type EventMap String = M.Map
instance Event Int where type EventMap Int = M.Map
simpleObserve a b = observe $ chainRule a b