Safe Haskell | None |
---|---|

Language | Haskell98 |

The module provides first-order, linear-chain conditional random fields (CRFs) with position-wide constraints over label values.

## Synopsis

- data Word a b = Word {}
- unknown :: Word a b -> Bool
- type Sent a b = DAG () (Word a b)
- data Prob a
- mkProb :: Ord a => [(a, Double)] -> Prob a
- data WordL a b
- mkWordL :: Ord b => Word a b -> Prob b -> WordL a b
- type SentL a b = DAG () (WordL a b)
- data Config a = Config {}
- tag :: (Ord a, Ord b) => Config b -> CRF a b -> Sent a b -> DAG () b
- marginals :: (Ord a, Ord b) => Config b -> CRF a b -> Sent a b -> SentL a b
- module Data.CRF.Chain1.Constrained.DAG.Train
- module Data.CRF.Chain1.Constrained.DAG.Feature.Present
- module Data.CRF.Chain1.Constrained.DAG.Feature.Hidden

# Data types

A Word is represented by a set of observations and a set of potential interpretation labels. When the set of potential labels is empty the word is considered to be unknown and the default potential set is used in its place.

unknown :: Word a b -> Bool Source #

The word is considered to be unknown when the set of potential labels is empty.

A probability distribution defined over elements of type a. All elements not included in the map have probability equal to 0.

mkProb :: Ord a => [(a, Double)] -> Prob a Source #

Construct the probability distribution.

Normalization is not performed because, when working with DAGs, the probability of a specific DAG edge can be lower than 1 (in particular, it can be 0).

Elements with probability 0 cab be filtered out since information that a
given label is a potential interpretation of the given word/edge is preserved
at the level of the `Word`

mkWordL :: Ord b => Word a b -> Prob b -> WordL a b Source #

Ensure, that every label from the distribution domain is a member of the set of potential labels corresponding to the word.

## Tagging

tag :: (Ord a, Ord b) => Config b -> CRF a b -> Sent a b -> DAG () b Source #

Determine the most probable label sequence within the context of the
given sentence using the model provided by the `CRF`

.

marginals :: (Ord a, Ord b) => Config b -> CRF a b -> Sent a b -> SentL a b Source #

Tag with marginal probabilities. For known words (i.e., with `lbs`

non-empty), their known potential interpretations are assigned some
probabilities (other interpretations are not considered. For unknown
words (i.e., with empty `lbs`

), all interpretations are considered
(up to the way the set of all interpretations is constructed).
In particular, if no interpretation with probability > 0 is found
for an unknown word, its set of chosen labels will remain empty.