Crate kondrak_aline

Crate kondrak_aline 

Source
Expand description

https://webdocs.cs.ualberta.ca/~kondrak/ Copyright 2002 by Grzegorz Kondrak.

ALINE is an algorithm for aligning phonetic sequences, described in [1]. This module is a port of Kondrak’s (2002) ALINE. It provides functions for phonetic sequence alignment and similarity analysis. These are useful in historical linguistics, sociolinguistics and synchronic phonology.

ALINE has parameters that can be tuned for desired output. These parameters are:

  • C_skip, C_sub, C_exp, C_vwl
  • Salience weights
  • Segmental features

In this implementation, some parameters have been changed from their default values as described in [1], in order to replicate published results. All changes are noted in comments.

§Get optimal alignment of two phonetic sequences

use kondrak_aline::align;

let alignment = align("θin", "tenwis", 0.0);

assert_eq!(
    alignment,
    vec![
        vec![
            ("θ", "t"),
            ("i", "e"),
            ("n", "n")
        ].iter()
        .map(|(a, b)| (a.to_string(), b.to_string()))
        .collect::<Vec<(String, String)>>()
    ]
);

§References

[1] G. Kondrak. Algorithms for Language Reconstruction. PhD dissertation, University of Toronto.

Functions§

align
Compute the alignment of two phonetic strings.
delta
Return weighted sum of difference between P and Q.
diff
Returns difference between phonetic segments P and Q for feature F.
r
Return relevant features for segment comparison.
sigma_exp
Returns score of an expansion/compression.
sigma_skip
Returns score of an indel of P.
sigma_sub
Returns score of a substitution of P with Q.
v
Return vowel weight if P is vowel.