As was mentioned in the introduction to this series of blogposts, both species and languages are often presented in a tree model. In biology, trees of each individual gene are created in order to account for horizontal transmission and other processes in which the history of a gene differs from the general history of its genome. From the sum of these trees, the species trees are then derived, a method called gene tree reconciliation (Nakhleh 2013). In linguistics on the other hand, phylogenetic trees normally are built on cognate sets of related words, from which the most likely tree of the languages is calculated. A closer equivalent however would be to describe the history of each individual word or word form, including regular sound change, irregular changes to its form, semantic changes, borrowings, and processes of word formation, and to derive the language tree based on the sum of the word histories (Gray, Greenhill, and Ross 2007, 15). Unlike its biological equivalent, this is normally done manually.
Having seen how we can obtain a simple scorer derived from the feature system in CLTS (List et al. 2019) in last month’s post, what is missing now, in order to use the scorer for alignment analyses, is an alignment function which can take the scorer as an argument. If one does not have higher ambitions with respect to the alignment function itself, this step can be achieved in a very straightforward way with help of LingPy’s (List et al. 2018)
sw_align() method. As can be seen from the documentation, this method takes as input two sequences (i.e., lists of sounds), along with a scoring function. Obviously, all we need to do now is to create our specific scorer based on the CLTS features, and then pass this scoring function along with our sequences to the function.