Ambisyllabicity and syllable overlap

Phonetic interpretation in YorkTalk/IPOX is compositional, that is, polysyllabic words are made up from their individual syllables. As a consequence, there are no separate rules for intervocalic consonant clusters.

Ambisyllabicity is used to assure that intervocalic consonants are properly coarticulated with their neighbouring vowels. That is, in a word such as /bot@l/ the /t/ should be interpreted:

Thus, the intervocalic /t/ must be parsed as a coda of the first syllable, and as an onset of the second syllable:

In phonetic interpretation, the onset is overlaid on the coda of the previous syllable. Different amounts of overlap are used in different contexts (Coleman 1995):

The following rule is used to generate the correct amount of overlap for ambisyllabic /t/ in /bot@l/:

   cons:[+coda, VOICELESS, -cnt, -nas, str=A, cns=B, squish=C] 
   cons:[-coda, VOICELESS, -cnt, -nas, str=A, cns=B] 
   C * (250 - A*50) + 140.
In this rule, the feature squish encodes the amount of compression assigned to the first syllable.
Ambisyllabicity is not restricted to single intervocalic consonants (as in most phonological theories). Within (latinate parts of) words, intervocalic clusters are parsed with maximal ambisyllabicity: By parsing the bracketed clusters as ambisyllabic, we derive that:
Implementation: As a more principled solution, we are presently experimenting with a "head first" parsing algorithm adapted from Van Noord (1993):
   parse(Input, L, R, Target) :-
      head(Target, Head),
      input(Head, Input, L0, R0),
      head_first(L0, L, R0, R, Head, Target).

   head_first(L0, L, R0, R, Head, Target) :-
      Phrase --> (NonHead / Head),
      parse(L0, L1, [], NonHead),
      head_first(L1, L, R0, R, Phrase, Target).
   head_first(L0, L, R0, R, Head, Target) :-
      Phrase --> (Head \ NonHead),
      parse(R0, [], R1, NonHead),
      head_first(L0, L, R1, R, Phrase, Target).
   head_first(L0, L, R0, R, Head, Target) :-
      Phrase --> Head,
      head_first(L0, L, R0, R, Phrase, Target).
   head_first(L, L, R, R, Target, Target).
   input(Head, [Terminal|L], [], L) :- 
      lex(Terminal, Head).
   input(Head, [Terminal|L1], [Terminal|L2], L3) :-
      input(Head, L1, L2, L3).

This parsing algorithm has the following properties: We plan to use this algorithm in the following way:
Examples: Also:
Back to Table of Contents
Arthur Dirksen / / January 1995