{"id":20778019,"url":"https://github.com/fergusq/fst-python","last_synced_at":"2025-04-30T18:40:38.527Z","repository":{"id":179040230,"uuid":"661705091","full_name":"fergusq/fst-python","owner":"fergusq","description":"Pure-Python Finite State Transducers – monorepo for KFST, PyOmorfi, and PyVoikko","archived":false,"fork":false,"pushed_at":"2024-10-11T07:30:32.000Z","size":23911,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-21T12:56:02.373Z","etag":null,"topics":["finnish","morphological-analysis","morphology","nlp","omorfi","voikko"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fergusq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-03T13:12:35.000Z","updated_at":"2025-01-29T04:56:40.000Z","dependencies_parsed_at":"2024-11-17T13:19:52.747Z","dependency_job_id":"561fdca0-c54e-4169-9cf1-d9fdcaca0b3c","html_url":"https://github.com/fergusq/fst-python","commit_stats":null,"previous_names":["fergusq/fst-python"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergusq%2Ffst-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergusq%2Ffst-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergusq%2Ffst-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergusq%2Ffst-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fergusq","download_url":"https://codeload.github.com/fergusq/fst-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251764363,"owners_count":21640049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finnish","morphological-analysis","morphology","nlp","omorfi","voikko"],"created_at":"2024-11-17T13:18:40.841Z","updated_at":"2025-04-30T18:40:38.503Z","avatar_url":"https://github.com/fergusq.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pure-Python Finite State Technology\n\nI often use FST-based tools like Omorfi and Voikko in my projects.\nHowever, parts of them are written in C++ and require native libraries like HFST and libvoikko to be installed.\nThis makes it difficult to use them in environments in which installing native libraries is not possible.\nFor example, it is far from trivial to use Omorfi in a classroom setting in which the students need to install it on their own computers.\nAlso, many web hosting services that support Python don't support installing native libraries easily.\n\nThis project contains three parts:\n\n- [KFST](https://github.com/fergusq/fst-python/tree/main/kfst) is a finite state transducer library written in pure Python. It replaces HFST in Omorfi and VVFST in Voikko.\n- [PyOmorfi](https://github.com/fergusq/fst-python/tree/main/pyomorfi) contains the Python bindings of Omorfi modified so that they use KFST instead of HFST.\n- [PyVoikko](https://github.com/fergusq/fst-python/tree/main/pyvoikko) contains a parser for the analysis strings produced by the Voikko transducer. It too uses KFST for lookups.\n\nBoth PyOmorfi and PyVoikko contain pre-built transducers. The idea is that you can just install them from PyPI and they will just work.\n\n## Installation\n\nKFST, PyOmorfi and PyVoikko are available on PyPI and can be installed with pip:\n\n```\npip install kfst\npip install pyomorfi\npip install pyvoikko\n```\n\n## Usage\n\nPlease refer to the README files of the individual projects for usage instructions.\n\n## Speed\n\nKFST is written in pure Python and is therefore much slower than native libraries like HFST and libvoikko.\nFor example, on my computer, libvoikko takes about 0.02 ms to analyse a word, while PyVoikko takes about 1 ms.\nHowever, this is still fast enough for many use cases.\n\n## Contributing\n\nThis project is in very early stages of its development and there are likely many bugs.\nPlease open an issue if you find one!\n\nIf you want to contribute code, feel free to open pull requests.\n\n## License\n\nKFST is licensed under the GNU LGPL version 3 or later. PyOmorfi is licensed under GNU GPL version 3 but **not** later. PyVoikko is licensed under the GNU GPL version 3 or later. See the LICENSE files for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffergusq%2Ffst-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffergusq%2Ffst-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffergusq%2Ffst-python/lists"}