Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Underdefined phonology: provisional definitions, and analysis-side membership of featureless segments

Aperta
#537 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend

Direzione di ricerca

This issue is a discussion about analysis-side unification for featureless segments and where provisional definitions should live; it does not identify files or tests. Start by locating HermitCrab's analysis rule-unapplication and the environment/class matching paths, then compare their behavior with synthesis. Done means establishing whether the extra mupa analysis is intended and giving a reasoned recommendation on the policy's proper home.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hermit Crab

HermitCrab needs a fully defined phonology. When a FieldWorks project leaves a letter or a natural class undefined, FieldWorks' HCLoader drops the affected allomorphs and environments (with diagnostics), so a project that parses under XAMPLE loses words, or gains wrong parses, when it switches to HermitCrab. AcceptUnspecifiedGraphemes recovers many of these forms, but not all.

PanGloss (a Rust port of HermitCrab) has decided to run such "underdefined" projects anyway, by supplying a provisional definition for each undefined thing and reporting each one to the author as an informational finding. A fully defined project still parses exactly as HermitCrab does. We'd like to know whether this belongs in HermitCrab itself, in HCLoader, or nowhere upstream, and to raise one likely HermitCrab inconsistency we found along the way.

What we measured

12 synthetic project families, run through native XAMPLE 3.12.23.21, FieldWorks HCLoader 9.3.10.1452 (LCModel 11.0.0.55173) and Machine HermitCrab 3.8.2.0:

  • Undefined letters in roots and affixes. XAMPLE keeps the words. HermitCrab with AcceptUnspecifiedGraphemes off drops them; with it on, the tested forms come back.
  • A multigraph exemplar ({ch} in the LDML) that is not a phoneme. XAMPLE returns both root chuma and prefix c- + root huma. HermitCrab with AcceptUnspecifiedGraphemes on segments ch as one unit and loses the second analysis.
  • An environment naming a class that does not exist (/ [V] _, no V). FieldWorks omits the restriction before XAMPLE sees it, and HermitCrab discards it too; both accept the affix unrestricted.
  • A featureless phoneme and a feature-defined class. In environments and forward rules, HermitCrab does not treat a featureless x as a member of V = [voc +] (subsumption). When unapplying a phonological rule during analysis, it does (unification), and that yields an extra root analysis that synthesis would never produce (mupa gets a second root). This looks like an inconsistency in HermitCrab itself.

What PanGloss does

  • An undefined letter becomes a provisional segment, one visible character at a time. It belongs to no class that names letters or requires a feature value; a class with no conditions still matches it.
  • A phoneme with no features belongs to no class that requires a feature value, in every path, including analysis. That removes the extra analysis above, which is the one place PanGloss now differs from HermitCrab for these segments.
  • Phonological rules the author wrote still apply, even though XAMPLE ignored them.

Questions

  1. Is the analysis-side unification behaviour for featureless segments intended? If not, should analysis use subsumption, matching environments and synthesis?
  2. Would a provisional-definition policy be welcome in HermitCrab or HCLoader, or should it stay in PanGloss?

The raw outputs, full analysis identities, controls and errors for every case are available. This is a discussion, not a bug-fix claim.

Lingua principale
C#
Stelle
29
Fork
16
Merge medio
6g 6h
PR unite (30g)
10

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sillsdev/machine

Tutte le issue di sillsdev/machine

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.