{"id":5354,"date":"2026-08-05T17:35:54","date_gmt":"2026-08-05T22:35:54","guid":{"rendered":"https:\/\/software.sil.org\/fieldworks\/?page_id=5354"},"modified":"2026-08-05T20:50:31","modified_gmt":"2026-08-06T01:50:31","slug":"bantu_features","status":"publish","type":"page","link":"https:\/\/software.sil.org\/fieldworks\/download\/bantu_features\/","title":{"rendered":"Modeling Bantu Features in FLEx for Parsing"},"content":{"rendered":"<h1>Modeling Bantu Features in FLEx for Parsing<\/h1>\n<p>In Bantu languages, as well as other language families, there is an extensive system of noun class marking that affects agreement, both within words and across word boundaries.  In FLEx, there are ways to model this information that is helpful for producing dictionaries and for doing automated morphological parsing.  This document focuses on the parsing aspects.  To learn how to set it up for dictionaries, please refer to the document <a href=\"https:\/\/lingtran.net\/Modeling-Bantu-Noun-Classes\" target=\"_blank\" rel=\"noopener\">Modeling Bantu Noun Classes<\/a>.<\/p>\n<h2>Background<\/h2>\n<p>Bantu (and other) languages typically mark nouns with a \u201cgender\u201d that may reflect more than one Noun Class that applies to that noun.  For instance, if a noun uses \u201cNoun Class 1\u201d for singular and \u201cNoun Class 2\u201d for plural, it will be marked with the \u201cgender\u201d 1\/2.  Some nouns only have a singleton class, such as for mass nouns, or for nouns that are only plural or only singular.  There may also be an additional class for \u201ca large number\u201d or \u201cuncountable\u201d.  Thus, a noun might have one or two or three Noun Classes indicated in its gender.<\/p>\n<p>When setting up FLEx for Bantu-style noun classes, it is recommended to use Inflection Features to store this information.  Since FLEx was first introduced, the default settings have made available a pre-populated set of values for an Inflection Feature called \u201cBantu noun class\u201d.  The set has one feature value for each gender, with values such as  1\/2, 5\/6, 6a, 14.  Users can add additional custom values.  This is a good way to set up a project if your primary purpose is to publish a dictionary.  More information about using this approach is available in<a href=\"https:\/\/lingtran.net\/Modeling-Bantu-Noun-Classes\" target=\"_blank\" rel=\"noopener\">Modeling Bantu Noun Classes<\/a>.<\/p>\n<p>If you are setting up FLEx for automatic parsing and for agreement behavior in FLExTrans rules, it is more efficient to \u201csplit up\u201d the genders and store only a single noun class value in each inflection feature.  FLEx 9.3.9 introduces this capability.  For nouns, that means that they may have more than one feature with a noun class value.  For prefixes, they will have only one noun class (homographs will be created for prefixes that are spelled the same but represent different noun classes).<\/p>\n<p>Because each sense of a word can have only one value for a given feature, it is necessary to have more than one inflection feature to use for noun classes.  In a typical gender notation such as 1\/2, the first number usually refers to a noun class used for singular occurrences of the noun, and the second refers to plural uses.  (There are noun classes that are often used for mass nouns, or nouns that don\u2019t have both a singular and a plural, so the labels \u201csingular\u201d and \u201cplural\u201d become less meaningful in those cases, but they are still useful as abstract labels for grouping.)  In some languages there may be a third value, for instances of \u201ca large number\u201d or \u201ctoo many to count\u201d.  To accommodate all of these, starting in FLEx 9.3.9, the Feature Catalog now includes the inflection features BantuSg, BantuPl, and BantuMany.  The notations \u201cSg\u201d, \u201cPl\u201d, and \u201cMany\u201d don\u2019t refer to actual syntactic number, but are rather convenient abstract labels for \u201ca set of feature values that pattern together\u201d.<\/p>\n<h3>Adding Features to the FLEx Project<\/h3>\n<p>To set up FLEx for automatic parsing for languages that use Bantu-type noun classes\/genders, there are several steps.<\/p>\n<p><H3>Add the features to your project<\/h3>\n<p><P>First the features need to be added to the FLEx project.  You only need to do this once.<\/p>\n<ol>\n<li>In FLEx, go to the Grammar area, and select the Inflection Features tool<\/li>\n<li>Use the Insert menu (or toolbar icon) to Insert \/\/ Feature.  This will open the Feature Catalog.<\/li>\n<li>Click on noun-related to open the section with features related to nouns.  Then open \u201cnoun agreement\u201d and then \u201cBantu Singular\u201d.  Here a list of values is shown, with their name (e.g., NC 1) first, and then their abbreviation (e.g., 1).<\/li>\n<li>Tick the boxes for any noun classes that occur in your language in what is normally considered the \u201csingular\u201d group.  Also select \u201cNC Sg Not Applicable\u201d.<\/li>\n<li>Now open \u201cBantu Plural\u201d and select values from that group.  Note that there are some values that are available in both \u201cBantu Singular\u201d and \u201cBantu Plural\u201d.  Depending on how your language works, these values may make more sense in one or the other, or in both.   Select them in whichever groups they pattern with.  Also select \u201cNC Pl Not Applicable\u201d.<\/li>\n<li>If your language can have three noun classes on some nouns, open the section \u201cBantu Many\u201d and select whichever values apply for that group in your language.  Also select NC Many Not Applicable\u201d.<\/li>\n<li>Click \u201cAdd\u201d.  Now these values have been added to your FLEx project, and are available as part of the complex feature \u201cnoun agreement\u201d.<\/li>\n<\/ol>\n<p>If you also plan to use FLExTrans and will need agreement across word boundaries, it is helpful to specifically add these values for other word categories. For automatic parsing within FLEx, having them on Nouns is enough, but it can still be useful for documentation purposes to add them to other categories.<\/p>\n<p>To add the features to other word categories<\/p>\n<ol>\n<li>Open the Feature Catalog again by using the menu item Insert \/\/ Feature.<\/li>\n<li>Now click on adjective-related.  Open the node for \u201cadjective agreement\u201d.  Open Bantu Singular.  Click on one of the values that you already added for nouns.  Notice that all the values you chose for Nouns are now selected.  Repeat this process for Bantu Plural and Bantu Many.<\/li>\n<li>Repeat this process for any of the listed word categories that take affixes that agree with the noun class of the noun.  For verbs, you may have to make selections for both subject agreement and object agreement.<\/li>\n<\/ol>\n<\/ol>\n<h3>Adjust the categories to use the features that have been added<\/h3>\n<p>Next the features need to be made available for any word category that uses them.<\/p>\n<ol>\n<li>Go to the Category Edit tool, in the Grammar area.<\/li>\n<li>Select \u201cNoun\u201d from the center pane.<\/li>\n<li>In the right pane, look for the section \u201cFeatures\u201d and the field \u201cInflectable Features\u201d.  If you followed the steps above, it may already be set to:  noun agreement(Bantu Singular, Bantu Plural).  If so, you don\u2019t need to do anything more for the Noun category.<\/li>\n<li>If it\u2019s not already there, or for other categories, click the button with three dots on the far right.<\/li>\n<li>A dialog box will open with several inflection features listed, including the Bantu ones by themselves or clustered under the agreement features for another word category.  It is better to choose the option that has them combined, as in this example:  noun agreement(Bantu Singular, Bantu Plural).  This will work better in some situations than choosing Bantu Singular and Bantu Plural separately. <\/li>\n<li>If you have not yet added other word categories that you need, you can repeat this process for them once you have added them.<\/li>\n<\/ol>\n<p>Now these features will be available when you create a lexical entry in any of these categories.  For further details about working with these, consult materials or training events related to using the automatic parsers in FLEx.<\/p>\n<h2>Templates<\/h2>\n<p>Create templates for the Categories that use these affixes.<\/p>\n<ol>\n<li>Start by creating a template for Nouns.  Give the template a name.<\/li>\n<li>Create the slot for the noun class marker.  Various names have been used:  Noun Class, NC, Ncl.  You can use a label that makes sense to you.\n<li>When creating the templates for other Parts of Speech, it will be recommended to use a different name for the noun class marker slot, so the slot names will be unique.  For instance, NC for nouns, and aNC for adjectives, pNC for pronouns, qNC for quantifiers.  Develop a convention that makes sense to you.<\/li>\n<li>Using unique slot names is needed for at least two reasons:  (1) There are situations in FLEx when you are choosing a slot from a list of all the slots, and having unique names helps you know which category each slot applies to.  (2) In FLExTrans, often we create an \u201cattribute\u201d for each slot in the FLEx project.  Conflicts will be avoided if each slot has a unique name.<\/li>\n<li>If you didn\u2019t add them above, add Inflectable Features to each category.<\/li>\n<li>Repeat this process for all categories that take Noun Class markers.<\/li>\n<\/ol>\n<h2>Create lexical entries<\/h2>\n<p>Now that the features exist in the project, they are available to be added to specific lexical entries, both those that already exist and new ones that you create.<\/p>\n<h3>Noun Stems<\/h3>\n<p>When creating an entry for a noun, be sure to put only the root in the Lexeme Form field.  Put the appropriate dictionary headword in the Citation Form field. (For nouns, this is typically the singular form.)  If you have created a custom field \u201cPlural\u201d for storing the plural form, fill that in as well. (It is recommended to have this field for dictionary and language documentation purposes, but it doesn\u2019t have any function for the parser.)<\/p>\n<p>Now you will want to add inflection feature values to the entry.  Depending on what you\u2019ve done so far, the Inflection Features field may be hidden, and you will want to adjust its field visibility.  To do this, go to any noun entry, scroll down to the Grammatical Info Details section.  If the Inflection Features field is not showing, tick \u201cShow Hidden Fields\u201d.  Now set the Inflection Features field to \u201cAlways Visible\u201d.  Then untick \u201cShow Hidden Fields\u201d.  Now it will be visible in all stem entries, even if it is empty.<\/p>\n<p>To add the features, go to an entry for a Noun stem.  In the Inflection Features field, click on the three dots.  Click the radio button for the values for BantuSg and BantuPl (and any other sets) for this stem.  <\/p>\n<h3>Other Stems<\/h3>\n<p>Many other word classes (such as verbs and modifiers) agree with nouns, and don\u2019t inherently have a noun class associated with them\u2013the agreement is marked by adding a prefix.  They don\u2019t need any noun class features specified in their lexical entry.<\/p>\n<p>Word classes such as pronouns or determiners may have specific forms for specific noun classes, and it may be easiest to model them as a unit, rather than trying to divide them into morphemes.  For these, add an inflection feature value for only one noun class.  If the same form is used for more than one noun class, make separate entries for each.<\/p>\n<h3>Affixes<\/3><\/p>\n<h4>Separate Entries or Senses?<\/h4>\n<p>When creating affix entries, it can be tricky to know when to make a separate entry or sense, or combine different uses of the same affix.  It is recommended to divide things up as follows:<\/p>\n<ol>\n<li>For affixes that are homographs but have different glosses, make separate entries.  (e.g., mu- \u20181\u2019 and mu- \u20183\u2019).<\/li>\n<li>For affixes that are homographs and have the same gloss but attach to different parts of speech, make separate senses in the same entry:  a- \u20182\u2019 n:NC ; a- \u20182\u2019 adj:aNC<\/li>\n<li>If you plan to work with FLExTrans, it is best to give different glosses to each one that is in a separate entry.  For instance, if they have to be different entries (because the surface form is different:  ma- 6 n:NC  vs  a- 6 adj:aNC), they need unique glosses.  You can adjust only the ones that need it, or you can develop a consistent system so you don\u2019t have to keep track of which ones need it.  For instance, you might make the glosses for the noun prefixes 1.n, 1a.n, 2.n, and the glosses for adjectives 1.adj, 1a.adj, 2.adj, etc.  You can work out what makes the most sense for you, and what will work for your text glossing and publication needs.<\/li>\n<\/ol>\n<h4>Adding features to affixes<\/h4>\n<ol>\n<li>Go to an entry for a noun class prefix.  (You will need to do the field visibility setting again, because it is a separate setting for affixes than for stems.)  Scroll down to the Inflection Features field and click the three dots.  Set the value for EITHER BantuSg or BantuPl for this affix.  (Affixes can have only one value.)<\/li>\n<li>It is not necessary to set the value for number, unless it\u2019s an affix for people, such as \u201c1st person singular\u201d or \u201c3rd person plural\u201d.<\/li>\n<li>You will probably need to add features to prefixes that attach to:  nouns, adjectives, numerals, quantifiers, pronouns, determiners.  You will probably also need them on agreement markers for verbs, for subject and possibly object, depending on the language you are describing.\n<li><\/ol>\n<h4>Tips for efficiency in creating affixes<\/h4>\n<p>There is more than one way to create a new entry for an affix.<\/p>\n<ul>\n<li>If you start from the Lexicon Edit view (using \u201cCreate a new lexical entry\u201d), you will need to set all the individual elements of \u201cGrammatical Info\u201d yourself:  Type: Inflection, Attaches to: Noun, Fills slot: NC.  And you will need to set the features yourself.<\/li>\n<li>But it is more efficient if you start from the template.  Click on the noun class affix slot and choose \u201cAdd inflectional affix to slot NC\u201d. Then you can choose \u201cCreate new inflectional affix\u201d and it will give you the New Entry dialog.  When it opens, it will have the grammatical info already filled in.  And you won\u2019t need to type the hyphen on the prefix.<\/li>\n<li>In the New Entry dialog, when you are working with an inflectional affix, there is a link to the Inflectional Affix Gloss Builder.  If you click this link, you can navigate to the feature this affix represents and insert it into the \u201cSelected Gloss Components\u201d box.  If you then click Save, it will create the gloss from the component in that box, and it will also set the features for you.<\/li>\n<\/ul>\n<p>Starting from the template rather than from Lexicon Edit can be a very efficient way to get all the features set, and to ensure consistency in your glosses.<\/p>\n<p>Once the affixes are added to the slot, you may desire to reorder them, since they are likely appearing in a random order.  To do that, right-click on an affix (e.g., mu- 1) and choose \u201cMove mu- 1 Affix Down\u201d (or up). Each time you use that command, it will move one position.  It will take several clicks to get them in place, but then they will stay in that order.<\/p>\n<p>Then create templates for other Categories.  Sometimes categories share similar affixes.  It is now possible to duplicate the slot from one template (for example, the Noun template you just set up) and then move the duplicated slot to some other Category (e.g., Adj or Quant).  (You will want to rename it.)  When duplicating the slot, all the senses of the affixes are duplicated, and after the slot is moved to the new Category, those new senses reflect the grammatical info for that slot in that template.  This can save a lot of time in getting templates populated.<\/p>\n<h2>Test your setup<\/h2>\n<ol>\n<li>If you are setting up the parser, hopefully you have a text that includes examples of nouns with all of the noun class markers.  Try running the automatic parser on that text and verify that everything parses successfully.  Verify that any ambiguities are valid (e.g., a prefix that is a homograph).<\/li>\n<li>Depending on your goals, there may also be value in creating cases for \u201cdisallowed forms\u201d.  For instance, add a Class 1\/2 noun to your text, but put prefixes for classes 3 and 4 on it, or other classes that don\u2019t belong.  Run the parser and verify that these words fail.  In your text, it is helpful to add the word \u201cDisallow:\u201d (or something similar) next to them, to remind yourself (and others who would look at your project) that these words are supposed to fail.  (If you put \u201cDisallow:\u201d into an analysis writing system, then FLEx won\u2019t try to parse it when you run the parser.)<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Modeling Bantu Features in FLEx for Parsing In Bantu languages, as well as other language families, there is an extensive system of noun class marking that affects agreement, both within words and across word boundaries. In FLEx, there are ways to model this information that is helpful for producing dictionaries and for doing automated morphological [&hellip;]<\/p>\n","protected":false},"author":34,"featured_media":0,"parent":18,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"hide_sidebar":false,"hide_h1":false,"footnotes":""},"class_list":["post-5354","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/pages\/5354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/comments?post=5354"}],"version-history":[{"count":13,"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/pages\/5354\/revisions"}],"predecessor-version":[{"id":5367,"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/pages\/5354\/revisions\/5367"}],"up":[{"embeddable":true,"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/pages\/18"}],"wp:attachment":[{"href":"https:\/\/software.sil.org\/fieldworks\/wp-json\/wp\/v2\/media?parent=5354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}