https://github.com/apertium/lexd

A lexicon compiler for non-suffixational morphologies

https://github.com/apertium/lexd

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary

Keywords

apertium-core apertium-tools

Keywords from Contributors

apertium-languages
Last synced: 11 months ago · JSON representation

Repository

A lexicon compiler for non-suffixational morphologies

Basic Info
  • Host: GitHub
  • Owner: apertium
  • License: gpl-3.0
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 567 KB
Statistics
  • Stars: 13
  • Watchers: 6
  • Forks: 3
  • Open Issues: 5
  • Releases: 4
Topics
apertium-core apertium-tools
Created almost 7 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License Authors

README

# Lexd

A lexicon compiler specialising in non-suffixational morphologies.

This module compiles lexicons in a format loosely based on hfst-lexc and produces transducers in ATT format which are equivalent to those produced using the overgenerate-and-constrain approach with hfst-twolc (see [here](https://wiki.apertium.org/wiki/Morphotactic_constraints_with_twol) and [here](https://wiki.apertium.org/wiki/Replacement_for_flag_diacritics)).  However, it is much faster (see below).

See [Usage.md](Usage.md) for the rule file syntax.

## Installation

First, clone this repository.

To build, do
```bash
./autogen.sh
make
make install
```

If installing to a system-wide path, you may want to run `sudo make install` instead for the last step.

To compile a lexicon file into a transducer, do
```bash
lexd lexicon_file att_file
```

To get a speed comparison, do
```bash
make timing-test
```

To run basic feature smoke-tests (fast), do
```bash
make check
```

## Why is it faster?

When dealing with prefixes, the overgenerate-and-constrain approach initially builds a transducer like this:

![transducer that overgenerates](https://github.com/apertium/lexd/raw/main/imgs/lexc.png)

Then composes that with a twolc rule to turn it into somehting like this:

![correct transducer](https://github.com/apertium/lexd/raw/main/imgs/twoc.png)

But compiling the rule needed to do that can take hundreds of times longer than compiling the lexicon.

Lexd, meanwhile, makes multiple copies of the lexical portion and attaches one to each prefix, thus generating the second transducer directly in a similar amount of time to what is required to generate the first one.

| Language |  Wamesa | Hebrew | Navajo | Lingala |
|---|---:|---:|---:|---:|
| Stems |  262 | 127 | 19 | 1470
| Total forms | 12576 | 2540 | 473 | 1649496
| Path restrictions | 14 | 10 | 17 | 19 
| **Lexc + Twolc**
|    Lexc compilation | 25ms | 15ms | 25ms | 230ms 
|    Twolc compilation | 10245ms | 1360ms | 8460ms | 275525ms
|    Rule composition | 2050ms | 225ms | 1705ms | 45550ms 
|    Minimization | 65ms | 5ms | 20ms | 155ms |
|    Total time | 12385ms | 1605ms | 10210ms | 321460ms |
| **Lexd**
|    Lexd compilation | 210ms | 85ms | 10ms | 490ms |
|     Format conversion | 30ms | 5ms | 5ms | 55ms |
|     Total time | 240ms | 90ms | 15ms | 545ms |
|   **Speedup** | 52x | 18x | 681x | 590x |

Owner

  • Name: Apertium
  • Login: apertium
  • Kind: organization
  • Email: apertium-contact@lists.sourceforge.net

Free/open-source platform for developing rule-based machine translation systems and language technology

GitHub Events

Total
  • Issues event: 7
  • Watch event: 2
  • Issue comment event: 7
  • Push event: 2
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 7
  • Watch event: 2
  • Issue comment event: 7
  • Push event: 2
  • Fork event: 1
  • Create event: 1

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 176
  • Total Committers: 5
  • Avg Commits per committer: 35.2
  • Development Distribution Score (DDS): 0.54
Past Year
  • Commits: 4
  • Committers: 2
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.25
Top Committers
Name Email Commits
Nick Howell n****l@g****m 81
Daniel Swanson p****e@g****m 79
Tino Didriksen m****l@t****m 12
jonorthwash j****n@g****m 3
Ahmed Siam 9****0 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 24
  • Total pull requests: 9
  • Average time to close issues: 5 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 8
  • Total pull request authors: 2
  • Average comments per issue: 1.58
  • Average comments per pull request: 0.22
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 0
  • Average time to close issues: about 2 hours
  • Average time to close pull requests: N/A
  • Issue authors: 3
  • Pull request authors: 0
  • Average comments per issue: 0.75
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mr-martian (7)
  • reynoldsnlp (4)
  • jonorthwash (3)
  • TinoDidriksen (3)
  • agricolamz (3)
  • ApertiumBot (2)
  • nlhowell (1)
  • Affenmilchmann (1)
Pull Request Authors
  • mr-martian (7)
  • ahmedsiam0 (2)
Top Labels
Issue Labels
bug (3) enhancement (2)
Pull Request Labels

Dependencies

.github/workflows/build.yaml actions
  • actions/checkout v3 composite