Skip to content

jzw2/rust-capr

Repository files navigation

Rust-Capr

A tool for specifiying sound law changes by compiling to finite state transducers similar to HFST and Foma. It is written in rust, with the initial goal of being faster and easier to develop in. Whether it was sucessful in these is goal is unfortunately debatable.

This was my master’s thesis for the University of Tübingen. Even though I theoretically graduated in December, I still have not gotten my grade back 🙄

Try here. (Note, the online system is not working very well. Use the backend API calls and use cargo to run tests.)

Installation

Web user interface

You first need wasm-pack and cargo. Also you need yarn and parcel for the front end. Run

wasm-pack build --target web

Then do yarn run parcel index.html to start a server.

Just Backend

Make sure you have rust and cargo installed. It shouldn’t need any external dependencies besides this.

To run the backend tests, use cargo test to run backend tests.

Design

Most of the infastructure is built on top of the library rustfst which is largely openfst written in rust. The replacement operator was surprisingly non trivial, and most code has been adapted from hfsts c++ implementation. The rust creates a web assembly package which is then run in the browser.

Documentation

I’ve uploaded the actual thesis here, where you can read about the project. I also spent a decent amount of pages describing the necessary theoretical background. (In feedback for the thesis, apparrently too much fo thesis was background information and not enough was the actual stuff I did. Well, at least it increased my page count by a decent amount)

Hopefully, my code serves as enough documentation. But that might be quite a bit of a stretch. If you find an area that is of excessively bad documentation, open a pull request and I will consider fixing it.

Similar projects

About

Capr implemented in Rust

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors