GiellaLT

GiellaLT provides an infrastructure for rule-based language technology aimed at minority and indigenous languages, and streamlines building anything from keyboards to speech technology.

View GiellaLT on GitHub

Page Content

Full agreement

Full agreement singular, e.g. vuosttaš albmáin => vuosmuin almain

Full agreement plural, e.g. vuosttaš albmáid => vuosmuid almaid

Define categories for use in pattern in the rule

List with adjectives, pronouns, numbers which has agreement in the target language, and not in the source language (the same as for half agreement)

    <def-cat n="agreement-attr">                             
      <cat-item lemma="vuosttas" tags="adj.ord.attr.*"/>
      <cat-item lemma="vuosttaš" tags="adj.ord.attr.*"/> 
      <cat-item lemma="aiddonas" tags="adj.*.attr.*"/> 
      <cat-item lemma="aiddonas" tags="adj.attr.*"/> 
      <cat-item lemma="dárbbašlaš" tags="adj.*.attr.*"/> 
      <cat-item lemma="dárbbašlaš" tags="adj.attr.*"/> ....
      ```

    
List with the tags in the noun, when the attribute should have full agreement, Sg and plural


<def-cat n="agreem-sg">                             
  <cat-item tags="n.*.sg.nom.*"/>                   
  <cat-item tags="np.*.sg.nom.*"/>                   
  <cat-item tags="np.sg.nom.*"/>                   
  <cat-item tags="n.*.sg.acc.*"/>                    
  <cat-item tags="n.*.sg.com.*"/>                    
  <cat-item tags="n.sg.nom.*"/>                   
  <cat-item tags="n.sg.acc.*"/>                    
  <cat-item tags="n.sg.com.*"/>                    
  <cat-item tags="*.n.sg.nom.*"/>                   
  <cat-item tags="*.n.sg.acc.*"/>                    
  <cat-item tags="*.n.sg.com.*"/>                    
</def-cat>  
<def-cat n="agreem-pl">                             
  <cat-item tags="n.*.pl.nom.*"/>                    
  <cat-item tags="n.*.pl.gen.*"/>                    
  <cat-item tags="n.*.pl.acc.*"/>                    
  <cat-item tags="n.*.pl.ill.*"/>                    
  <cat-item tags="n.*.pl.loc.*"/>                    
  <cat-item tags="n.*.pl.abe.*"/>                    
  <cat-item tags="n.*.pl.com.*"/>      
  <cat-item tags="n.pl.nom.*"/>                    
  <cat-item tags="n.pl.gen.*"/>                    
  <cat-item tags="n.pl.acc.*"/>                    
  <cat-item tags="n.pl.ill.*"/>                    
  <cat-item tags="n.pl.loc.*"/>                    
  <cat-item tags="n.pl.abe.*"/>                    
  <cat-item tags="n.pl.com.*"/>      
  <cat-item tags="*.n.pl.nom.*"/>                    
  <cat-item tags="*.n.pl.gen.*"/>                    
  <cat-item tags="*.n.pl.acc.*"/>                    
  <cat-item tags="*.n.pl.ill.*"/>                    
  <cat-item tags="*.n.pl.loc.*"/>                    
  <cat-item tags="*.n.pl.abe.*"/>                    
  <cat-item tags="*.n.pl.com.*"/>      
</def-cat>  ```

Define attributes: the tags to the left of Sg/Pl

  <section-def-attrs>
    <def-attr n="a_npagree_type">
       <attr-item tags="adj"/>
       <attr-item tags="adj.ord"/>
       <attr-item tags="prn.ind"/>
       <attr-item tags="prn.dem"/>
       <attr-item tags="prn.itg"/>
       <attr-item tags="prn.rel"/>
       <attr-item tags="num"/>
    </def-attr> 

Define macros

macro 1: Full agreement in sg

    <def-macro n="agreement-adj-ind-sg-2Posit" npar="2">  
        <let>
          <clip pos="1" side="tl" part="tags"/>
		<concat>
		  <clip pos="1" side="tl" part="a_npagree_type"/>
		  <clip pos="2" side="tl" part="a_nbr"/>
		  <clip pos="2" side="tl" part="a_cas"/> 
		</concat>                
        </let> 
    </def-macro> 

macro 2: Full agreement in pl, with exeption for Pl Com

    <def-macro n="agreement-adj-ind-pl-2Posit" npar="2"> 
       <choose>
          <when>        <!-- with pl.com -->
            <test>
	      <and>
		<equal>
		  <clip pos="2" side="tl" part="a_cas"/>
		  <lit-tag v="com"/>
		</equal>
                <equal>
		  <clip pos="2" side="tl" part="a_nbr"/>
		  <lit-tag v="pl"/>
		</equal>
              </and>
	    </test>
         <let>
            <clip pos="2" side="tl" part="tags"/>
	    <concat>
	      <lit-tag v="n"/>
	      <clip pos="2" side="tl" part="a_ntype"/>
	      <clip pos="2" side="tl" part="a_nbr"/>
	      <clip pos="2" side="tl" part="a_cas"/>
	    </concat>  
        </let> 
        <let>
          <clip pos="1" side="tl" part="tags"/>
	  <concat>
            <clip pos="1" side="tl" part="a_npagree_type"/>
	    <clip pos="2" side="tl" part="a_nbr"/>
	    <lit-tag v="gen"/> 
	  </concat>                
        </let> 
        </when>
        <otherwise>
                <!-- default -->
        <let>
       	  <clip pos="2" side="tl" part="tags"/>
	  <concat>
            <lit-tag v="n"/>
	    <clip pos="2" side="tl" part="a_ntype"/>
	    <lit-tag v="pl"/>
	    <clip pos="2" side="tl" part="a_cas"/> 
	  </concat>                
        </let> 
        <let>
          <clip pos="1" side="tl" part="tags"/>
	  <concat>
            <clip pos="1" side="tl" part="a_npagree_type"/>
	    <clip pos="2" side="tl" part="a_nbr"/>
	    <clip pos="2" side="tl" part="a_cas"/> 
	  </concat>                
        </let> 
        </otherwise>
        </choose>
    </def-macro> 

Define pattern in the rule

Full agreement singular:

    <rule comment="REGLA: agreement-attr n-sg agreement"> 
      <pattern>                                        
        <pattern-item n="agreement-attr"/>                 
        <pattern-item n="agreem-sg"/>                   
      </pattern>     
      <action>
        <call-macro n="remove-semtag-1Posit"><with-param pos="2"/></call-macro>
        <let><clip pos="2" side="tl" part="x_func"/><lit v=""/></let>
        <let><clip pos="2" side="tl" part="a_func"/><lit v=""/></let>
        <call-macro n="agreement-adj-ind-sg-2Posit"><with-param pos="1"/><with-param pos="2"/></call-macro>
        <out>

Full agreement plural:

     <rule comment="REGLA: agreement-attr n-pl"> 
      <pattern>                                        
        <pattern-item n="agreement-attr"/>                 
        <pattern-item n="agreem-pl"/>                   
      </pattern>     
      <action>
        <call-macro n="convert-deriv-1Posit"><with-param pos="1"/></call-macro>
        <call-macro n="convert-deriv2-1Posit"><with-param pos="1"/></call-macro>
        <call-macro n="convert-deriv-1Posit"><with-param pos="2"/></call-macro>
        <call-macro n="convert-deriv2-1Posit"><with-param pos="2"/></call-macro>
        <let><clip pos="2" side="tl" part="x_func"/><lit v=""/></let>
        <let><clip pos="2" side="tl" part="a_func"/><lit v=""/></let>
        <call-macro n="agreement-adj-ind-pl-2Posit"><with-param pos="1"/><with-param pos="2"/></call-macro>