crf-chain1-constrained-0.2.1: First-order, constrained, linear-chain conditional random fields

Data.CRF.Chain1.Constrained

Contents

Description

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

Synopsis

Data types

data Word a b Source

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.

Constructors

 Word Fieldsobs :: Set aThe set of observations lbs :: Set bThe set of potential interpretations.

Instances

 (Eq a, Eq b) => Eq (Word a b) (Ord a, Ord b) => Ord (Word a b) (Show a, Show b) => Show (Word a b)

unknown :: Word a b -> BoolSource

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

type Sent a b = [Word a b]Source

A sentence of words.

data Prob a Source

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

Instances

 Eq a => Eq (Prob a) Ord a => Ord (Prob a) Show a => Show (Prob a)

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

Construct the probability distribution.

type WordL a b = (Word a b, Prob b)Source

A WordL is a labeled word, i.e. a word with probability distribution defined over labels. We assume that every label from the distribution domain is a member of the set of potential labels corresponding to the word. TODO: Ensure the assumption using the smart constructor.

type SentL a b = [WordL a b]Source

A sentence of labeled words.

CRF

data CRF a b Source

A conditional random field model with additional codec used for data encoding.

Constructors

 CRF Fieldscodec :: Codec a bThe codec is used to transform data into internal representation, where each observation and each label is represented by a unique integer number. model :: ModelThe actual model, which is a map from `Feature`s to potentials.

Instances

 (Ord a, Ord b, Binary a, Binary b) => Binary (CRF a b)

Training

Arguments

 :: (Ord a, Ord b) => SgdArgs Args for SGD -> Bool Store dataset on a disk -> IO [SentL a b] Training data `IO` action -> IO [SentL a b] Evaluation data -> (AVec Lb -> [(Xs, Ys)] -> [Feature]) Feature selection -> IO (CRF a b) Resulting model

Train the CRF using the stochastic gradient descent method. The resulting model will contain features extracted with the user supplied extraction function. You can use the functions provided by the Data.CRF.Chain1.Feature.Present and Data.CRF.Chain1.Feature.Hidden modules for this purpose. When the evaluation data `IO` action is `Just`, the iterative training process will notify the user about the current accuracy on the evaluation part every full iteration over the training part. TODO: Accept custom r0 construction function.

Tagging

tag :: (Ord a, Ord b) => CRF a b -> Sent a b -> [b]Source

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

tagK :: (Ord a, Ord b) => Int -> CRF a b -> Sent a b -> [[b]]Source

Determine the most probable label sets of the given size (at maximum) for each position in the input sentence.

Feature selection

hiddenFeats :: AVec Lb -> [(Xs, b)] -> [Feature]Source

Hidden `Feature`s of all types which can be constructed on the basis of the dataset. The default set of potential interpretations is used for all unknown words.

presentFeats :: [(Xs, Ys)] -> [Feature]Source

`Feature`s of all kinds which occur in the dataset.