asterics / AsTeRICS-Grid

Free and simple to use app for augmentative and alternative communication (AAC) with offline support, flexible input methods and media access
https://grid.asterics.eu/
GNU Affero General Public License v3.0
50 stars 17 forks source link

Proposing a simple means to cover various word forms from a button action #254

Closed jamjolu closed 3 months ago

jamjolu commented 1 year ago

I closed my own issue, #252 by accident (my own Github ignorance.) It is just as well as the suggestion by Klues led me to this proposal instead. I propose a button action that would permit users to toggle through various word forms for verbs, nouns, and adjective/adverbs. As Klues proposed a new tab in the button editing box called "grammar" into which one could record various verb conjugations and inflections, singular/plural noun forms, adjectival or adverbial alternatives etc.. I propose a more generic "word forms" tab that would be independent of grammar. Examples: be am is are being was were been box boxes hot hotter hottest

It could also function as a way to toggle through members of a related set: (positive, comparative, superlative) - good better best (sibling names) - John Mary Bob Mike

The Word Forms tab would would allow user's to record the set of word alternatives. The element action would index over the set of alternatives based on the last entry in the Collection element and replace the last element if an alternative exists. A button element with more than one word form could have a small + on it (similar to the small box for links) to denote the existence of word alternatives.

Please check out #252 for a more complete discussion. Thanks, jl

klues commented 1 year ago

I think it should be possible to reopen an issue, if you've closed it, but don't worry.

Thanks for the new proposal. I like it, since it's very generic and can be used in very flexible ways. Therefore it's fitting with the general idea of AsTeRICS Grid to be as flexible as possible for many use cases.

I think of the following extensions of your proposal:

jamjolu commented 1 year ago

Hi Benjamin,

Yes, going through the exercise of creating a grid set made me realize how challenging it is to create one that was both grammatically complete and efficient as far as minimizing user interactions. Other speech devices use language models that include some features for accessing variations on words in some cases by anticipating what comes next (which I do in some cases), in other cases by providing a way to alter word endings - a special button to add -ing, or similar to a word (for which there is no current action in AG). But, I think the generic word-forms approach offers utility and efficiency. Right now in my grid set, I find that I frequently have to navigate to the verb branch that has the correct conjugation via the Home page which adds at least 3 extra button pushes just to get to the correct verb form. Currently, on my home page, if you select I, You, He, She, etc, navigation takes you to the verb branch that suits the pronoun in the present tense. So, "I said.." requires that I return to the Home page, select the button for verb variations, then select the past tense verb branch, and search grids for the "said" element. I actually think that for students, selecting the correct (or desired) tense or conjugation from the root verb element grid would be instructive, and reduce the navigation load and grid count.

As for using a pop up, I like the idea of the user being able to see all the options from which they can choose, rather than indexing through a list.

Thanks for considering this,

jl

On Mon, Mar 27, 2023 at 4:22 AM Benjamin Klaus @.***> wrote:

I think it should be possible to reopen an issue, if you've closed it, but don't worry.

Thanks for the new proposal. I like it, since it's very generic and can be used in very flexible ways. Therefore it's fitting with the general idea of AsTeRICS Grid to be as flexible as possible for many use cases.

I think of the following extensions of your proposal:

-

we could provide an optional possibility to add something like tags or a label to word forms. So it could be used in a generic way (like for sibling names) or for something like verb conjugations, where each word form could have a label like this:

  • "am" 1.PS

    • "are" 2.PS
    • "is" 3.PS ...

    Then we could add an action "change word form to" to any element and e.g. add it to an element containing "I" with "change word form to 1.PS" changing all words of the grid to word form "1.PS" (if existing). In that way some kind of grammar could be modelled within the configuration without having to add explicit grammar rules for a specific language.

  • for verbs we could still use a way to import conjugations (and automatically add the labels) using the API from verbix.com https://api.verbix.com/

  • I think some kind of popup shown by a separate action that shows all existing word forms would also be great. So e.g. "normal tap" = select element with current word form, "long tap" = show popup with all exsting alternatives, making it possible to directly select one. Although we would have to think about how to make this accessible if alternative input options like scanning are used.

— Reply to this email directly, view it on GitHub https://github.com/asterics/AsTeRICS-Grid/issues/254#issuecomment-1484713043, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4D6ZW7MBRFDVAINNV73CLW6FE6DANCNFSM6AAAAAAWHTFJK4 . You are receiving this because you authored the thread.Message ID: @.***>

ms-mialingvo commented 6 months ago

I'm working on a board set that works for different languages. We've already discussed some things, Benjamin, here now some specific examples.

Sign explanation: "xxx" = normal button, speaks xxx zzz = Grammar button, content is not spoken, changes the text of button "xxx" to 'yyy'. Functions summable.

Sentence: You (plural, feminine) aren't doctors.

English: click "You" click 2nd person plural changes all verbs to 2nd person plural, including "be" to 'are' click 'are' click "not" => are + not merge in the speaking bar to aren't click plural (nominative) changes all words to plural, including "doctor" to 'doctors' click 'doctors'.

German: click "Ihr" click 2nd person plural , changes "be" to 'seid' click 'seid' click feminine (nominative, singular) (+ click plural (nominative) but it's the same form in German) changes "kein" to 'keine' click 'keine' click feminine (nominative, singular) + click plural (nominative) changes "Arzt" to 'Ärztinnen' click 'Ärztinnen'

French: click "Vous" click "non" click 2nd person plural changes "être" to 'êtes' click 'êtes' => non + êtes merges to n'êtes in the speaking bar click "pas" click "des" click plural (nominative) changes "docteur" to 'docteurs' click 'docteurs'

Turkish: click "doktor" click "değil (not)" click 2nd person plural changes "olmak (to be)" to... '-siniz'(?) click '-siniz' => değil + -siniz merge to değilsiniz in the speaking bar

(?) Means that I'm not sure which if any changed word the button "olmak" should show after clicking the grammar button, because the wordform depends on the previous word and while you've told me it would be possible to make word changes in the speaking bar according to the previous word (like with are + not => aren't), I could imagine that making already the button show a specific word depending on the word in the speaking bar would be additionally tricky to code? Like after clicking "are" the "not"-button automatically changing to "n't"? As an example for the ending differences in Turkish: "You are doctors" would be click "doktor" click 2nd person plural changes "olmak (to be) to '-siniz'(?) click '-siniz' => doktor + -siniz merge in the speaking bar to the correct form 'doktorsunuz'

klues commented 6 months ago

click "You" click 2nd person plural changes all verbs to 2nd person plural, including "be" to 'are'

That's the basic form how actions could change word forms which I have in mind. However it would also be possible to attach the action to change to 2nd person plural to the "You" button, so that there is no need to click an extra button for that. But it also will be possible with the extra button.

click "not" => are + not merge in the speaking bar to aren't

I think that will be possible if the not button also is a button which changes the word form, like 2nd person plural before. So it will change all word forms (where existing) to the form labelled with NEGATION. And therefore it could also change words in the collection bar to this NEGATION form, which has to be added within the original button for "is/are/aren't". However in this case we'll need a system where it's possible to add multiple labels to word forms like this:

So then the first button 2nd person plural selects the first word form with label 2.P ("are") and the not button will then additionally select NEGATION, so that in total it will select 2.P + NEGATION = "aren't".

To consider here:

click 'êtes' => non + êtes merges to n'êtes in the speaking bar

This is different from "are" to "aren't" in the example before since "non" was first. I think in this case the user would have to select "êtes" first and afterwards click not in order to apply the NEGATION. Or another possibility is that the non button doesn't write something to the bar and just changes "êtes" to "n'êtes" in the grid, which then can be selected.

click 2nd person plural changes "olmak (to be)" to... '-siniz'(?) click '-siniz' => değil + -siniz merge to değilsiniz in the speaking bar

I think I don't fully understand this example. However I think "değilsiniz" probably should be a word form of "olmak", also with the tags 2.P (or 2.PPLURAL if plural is different) and NEGATION. Then the same as for the previous example applies, either "olmak" could be written first and then can be changed using not and 2nd person plural or the other way around (first change the form within the grid, then add it to the bar). I think like in the french example "değil (not)" shouldn't be written to the bar before, since it shouldn't be existing as a separate word in the final sentence, but it's determining the word form of "olmak (to be)".

ms-mialingvo commented 6 months ago

That's the basic form how actions could change word forms which I have in mind. However it would also be possible to attach the action to change to 2nd person plural to the "You" button, so that there is no need to click an extra button for that. But it also will be possible with the extra button.

So then it would show "You" and "are" in the bar? One thing that speaks against that is that "are" might be need to be used without "you" previously, like in questions (Are you tired?) but if this could also be possible, that's good to know.

  • for me it's not entirely clear when to "collect" tags like in the example before, so first 2.P and then NEGATION and when to not collect / start with a new collection of tags. E.g. if you do:

    • click 2nd person plural changes all verbs to 2nd person plural, including "be" to 'are'
    • click 'are'
    • click feminine - changes all adjectives (spanish) to feminine form
    • here it's the question how the program knows, that in this case we don't want to collect the tags 2.P and FEMININE and apply it to the selected word are. But maybe it's ok to try to apply it and simply discard it, if the tag FEMININE is not available on the word are.

I'd assume that if the user clicks a "wrong" combination (like 2nd person plural + feminine for an English verb) then it doesn't matter if other fields change. As long as everything resets once a "normal word"-button is clicked.

  • a button which writes "not" to the bar and the one which selects the NEGATION form probably will have to be 2 different buttons. Otherwise it will be difficult to know when to add "not" to the bar and when to change the last word to NEGATION form. Maybe it's possible to only add "not" if the last word in the bar wasn't changed - but this is something which needs more evaluation.

click 'êtes' => non + êtes merges to n'êtes in the speaking bar

This is different from "are" to "aren't" in the example before since "non" was first. I think in this case the user would have to select "êtes" first and afterwards click not in order to apply the NEGATION. Or another possibility is that the non button doesn't write something to the bar and just changes "êtes" to "n'êtes" in the grid, which then can be selected.

Okay, so I guess then some kind of conditional programming "if last word in bar is xxx, replace it with xyy after clicking this button" is not possible or difficult to program?

click 2nd person plural changes "olmak (to be)" to... '-siniz'(?) click '-siniz' => değil + -siniz merge to değilsiniz in the speaking bar

I think I don't fully understand this example. However I think "değilsiniz" probably should be a word form of "olmak", also with the tags 2.P (or 2.PPLURAL if plural is different) and NEGATION. Then the same as for the previous example applies, either "olmak" could be written first and then can be changed using not and 2nd person plural or the other way around (first change the form within the grid, then add it to the bar). I think like in the french example "değil (not)" shouldn't be written to the bar before, since it shouldn't be existing as a separate word in the final sentence, but it's determining the word form of "olmak (to be)".

It would be an advanced version of the previously mentioned question. "1.) change this (verb)-button to 2.P after selecting the grammar-button for 2.P 2.) if last word in bar is xxx, replace it with x2z after clicking this now conjugated (verb-)button" respectively "1.) change this (verb)-button to 1.P after selecting the grammar-button for 1.P 2.) if last word in bar is xxx, replace it with x1w after clicking this now conjugated (verb-)button"

The suggestions you've made would also work and I can think of other options too, but purely from the view of how the word would be produced and formed verbally, in the case of Turkish left-to-right, that would be the optimal solution so I want to check if that's possible and if not.

jamjolu commented 6 months ago

Hi everyone,

I am inclined to think that the introduction of technical jargon and other grammatical understanding requirements to access language excludes communicators who lack those learned skills, but who might otherwise be able to hear when a correct word form "sounds right."

When I constructed Quick Say 20, I did try to anticipate correct verb forms by simply linking to likely grids as in: I --> am (what about the possibility of "will", "was" ?) You --> are ( what about the possibility of "will", "were" ? ) She, it --> is ( what about the possibility of "will", "was" ? ) This doesn't always work, but the communicator can always go to the home page and drill down to the correct word form - at the expense of extra button pushes. Then there is the possibility of some sort of natural language processing that offers predictions for the next word - this seems like a modern approach, but may not work well offline. A simple approach, as I suggested before, is not grammar based, but offers the communicator choices, and can be used in instances to cover verb tenses, singular/plural, fast/faster/fastest, etc.

It would work like this:

  1. The page designer would add a "word list" action to a grid element. The action would permit the creation of an ordered list of word alternatives. The word list action would be denoted by a small + in the upper left corner of the element to cue the communicator that there are alternative word forms.
  2. The user would click an element like for the word "fast". The user could then click the same element to get "faster" to replace "fast", and a third click yields "fastest." An additional click on that element would cycle back to "fast." The wordlist iterating would cease as soon as any other element is selected.

Users could rely on their innate grammatical sense to arrive at what sounds right to them.

The main drawback for my simple approach would be potentially many clicks needed to arrive at the desired word form. Another drawback would be that the word list action may preclude auto-linking back to a home page, or previous page - if that is desired.

Anyway, I am glad you all are thinking about this and I look forward to trying out any of your ideas.

Thanks, Jim Luther

So, I am advocating the

On Mon, Mar 27, 2023 at 4:22 AM Benjamin Klaus @.***> wrote:

I think it should be possible to reopen an issue, if you've closed it, but don't worry.

Thanks for the new proposal. I like it, since it's very generic and can be used in very flexible ways. Therefore it's fitting with the general idea of AsTeRICS Grid to be as flexible as possible for many use cases.

I think of the following extensions of your proposal:

-

we could provide an optional possibility to add something like tags or a label to word forms. So it could be used in a generic way (like for sibling names) or for something like verb conjugations, where each word form could have a label like this:

  • "am" 1.PS

    • "are" 2.PS
    • "is" 3.PS ...

    Then we could add an action "change word form to" to any element and e.g. add it to an element containing "I" with "change word form to 1.PS" changing all words of the grid to word form "1.PS" (if existing). In that way some kind of grammar could be modelled within the configuration without having to add explicit grammar rules for a specific language.

  • for verbs we could still use a way to import conjugations (and automatically add the labels) using the API from verbix.com https://api.verbix.com/

  • I think some kind of popup shown by a separate action that shows all existing word forms would also be great. So e.g. "normal tap" = select element with current word form, "long tap" = show popup with all exsting alternatives, making it possible to directly select one. Although we would have to think about how to make this accessible if alternative input options like scanning are used.

— Reply to this email directly, view it on GitHub https://github.com/asterics/AsTeRICS-Grid/issues/254#issuecomment-1484713043, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4D6ZW7MBRFDVAINNV73CLW6FE6DANCNFSM6AAAAAAWHTFJK4 . You are receiving this because you authored the thread.Message ID: @.***>

klues commented 6 months ago

So then it would show "You" and "are" in the bar? One thing that speaks against that is that "are" might be need to be used without "you" previously, like in questions (Are you tired?) but if this could also be possible, that's good to know.

I think all of this should be possible:

So the user should be as flexible as possible to create a solution that fits best for a use case.

As long as everything resets once a "normal word"-button is clicked.

Yes, that's where I'm not completely sure, when to reset the collection of tags in the background. But yes, probably if any element without an "change word form"-action is selected. Maybe also if the collected tags like 2.P and FEMININE aren't existing for any element.

Okay, so I guess then some kind of conditional programming "if last word in bar is xxx, replace it with xyy after clicking this button" is not possible or difficult to program?

Nearly everything you can imagine is possible to program ;) However for me the goal is to create a system that's as easy and at the same time as flexible as possible. So if the goal to change "êtes" to "n'êtes" is reachable using the existing idea (like I've described it) - I think it's not good to add additional logic, which will probably confuse many users.

The suggestions you've made would also work and I can think of other options too, but purely from the view of how the word would be produced and formed verbally, in the case of Turkish left-to-right, that would be the optimal solution

click "doktor" click "değil (not)" click 2nd person plural changes "olmak (to be)" to... '-siniz'(?) click '-siniz' => değil + -siniz merge to değilsiniz in the speaking bar

So if it's about the order of clicking, I think this should be possible with the proposed system:

In this example "değilsiniz" is stored and defined as a word form of "olmak" with tags 2.PP and NEGATION which is intuitive and understandable. If I would have to define any rule like "değil" + "olmak" + "2.PP" = "değilsiniz" it wouldn't be so clear where to define this and therefore probably more confusing for the user.

klues commented 6 months ago

Thanks @jamjolu for your thoughts!

I think your ideas could also be integrated or be a special form of the approach with tags I'm discussing with @msantos-87.

I --> am (what about the possibility of "will", "was" ?)

Here it could be possible to define word forms of and elment with the base form "be" like this:

Then there could be an action like change to 1.P on the element "I", so clicking on on it adds "I" to the bar and at the same time changes "be" to the first word form including 1.P = "am" in the grid. Then at the "be" ("am") button there could be another action defined like go to next word form , so clicking on "am" adds "am" to the bar and at the same time changes "am" to "was". The user then could click "was" in order replace "am" with "was" in the bar, or leave it as it is, if "am" is the desired form.

A simple special form of the approach would be to define word forms of an element without any tags so, e.g.:

As before an action like go to next word form on this element would make it possible to choose one of the siblings.

The page designer would add a "word list" action to a grid element.

Yes, I think both should be in the same tab for "word forms" in the "edit element" dialog. There you could define word forms with tags to be able to do more sophisticated things like discussed before or only a list of words without tags for the simple use case, like for the siblings.

klues commented 6 months ago

A question that arises for me: "How to manage the tags for word forms"? Some possibilities:

  1. Tags are completely free to define, nothing default
  2. There are default tags for the most important concepts like 1.P, 2.P, ... NEGATION, PLURAL, ... - maybe with the possibility to extend these default tags with own ones.
  3. Next to single tags, there also could be default (or defineable) groups of tags, like (1.P, PLURAL), (1.P, PLURAL, NEGATION), (1.P, PLURAL, NEGATION, PAST), ...
  4. Maybe it even makes sense to make it possible to define which groups of tags make sense for which word form, like:
    • VERB -> (1.P, PLURAL), (1.P, PLURAL, NEGATION), (1.P, PLURAL, NEGATION, PAST), ...
    • NOUN -> (SINGULAR), (PLURAL), (SINGUAR, ACCUSATIVE), ...
    • ADJECTIVE -> (MASCULINE), (FEMININE)
    • so while defining word forms in the edit dialog, one could select VERB and get all predefined groups of tags, which then only have to be filled with the correct values ("are", "aren't", "weren't", ...). For verbs these forms could automatically be retrieved from the verbix API.
jamjolu commented 6 months ago

Yes, I think what you are proposing would work well for generic word forms. I wonder if adding a "next word form" element could be added to the Global Grid to cycle through options, if there are any? And, would that be preferable?

Anyway, I am open to trying anything.

By the way, I just put together an audio book search and play page based on a collaboration between Project Gutenberg (public domain literature in English) and Microsoft AI where the folks at Microsoft converted 4840 texts to audio books. The PG+M Project page is a simple flat list of the 4840 books in alphabetical order- no search, no embedded player. https://marhamilresearch4.blob.core.windows.net/gutenberg-public/Website/index.html#Listen They do have links to where the books can be searched such as at the Internet Archive and other podcast aggregators, but nothing that can be customized for users who have accessibility challenges.

My page offers search by author or title and a booklist feature so the user can save books they wish to listen to. The playpoint for each book is also saved so user can play the audio book from where they last paused. I leveraged a prior web app I made to provide supports for multiple access methods, various TTS voices, various foreground/background color themes, etc. There are a few bugs related to a YouTube player that can cause the page to hang (usually refreshing the page clears the errors). Also, currently the page voice defaults to English, but on iPads I get all kinds of non-English TTS voices causing comical pronounciation issues. https://jamjolu.neocities.org/gutenberg/gutenberg_AWP https://jamjolu.neocities.org/gutenberg/gutenberg_AWP I have spent too much time on the above page, but I do hope to iron out the wrinkles sometime, and to put together a YouTube demo/how-to.

Thanks, jl

On Tue, Jan 2, 2024 at 7:14 AM Benjamin Klaus @.***> wrote:

Thanks @jamjolu https://github.com/jamjolu for your thoughts!

I think your ideas could also be integrated or be a special form of the approach with tags I'm discussing with @msantos-87 https://github.com/msantos-87.

I --> am (what about the possibility of "will", "was" ?)

Here it could be possible to define word forms of and elment with the base form "be" like this:

  • 1.P, INFINITIVE: "am"
  • 1.P, PAST: "was"
  • 1.P, FUTURE: "will be"

Then there could be an action like change to 1.P on the element "I", so clicking on on it adds "I" to the bar and at the same time changes "be" to the first word form including 1.P = "am" in the grid. Then at the "be" ("am") button there could be another action defined like go to next word form , so clicking on "am" adds "am" to the bar and at the same time changes "am" to "was". The user then could click "was" in order replace "am" with "was" in the bar, or leave it as it is, if "am" is the desired form.

A simple special form of the approach would be to define word forms of an element without any tags so, e.g.:

  • base form (label): "sibling"
  • other forms: "max", "anna", "peter"

As before an action like go to next word form on this element would make it possible to choose one of the siblings.

The page designer would add a "word list" action to a grid element.

Yes, I think both should be in the same tab for "word forms" in the "edit element" dialog. There you could define word forms with tags to be able to do more sophisticated things like discussed before or only a list of words without tags for the simple use case, like for the siblings.

— Reply to this email directly, view it on GitHub https://github.com/asterics/AsTeRICS-Grid/issues/254#issuecomment-1873953420, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4D6ZVJYXIF6KFKRAONN5DYMP2ZFAVCNFSM6AAAAAAWHTFJK6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZTHE2TGNBSGA . You are receiving this because you were mentioned.Message ID: @.***>

klues commented 6 months ago

I wonder if adding a "next word form" element could be added to the Global Grid to cycle through options, if there are any? And, would that be preferable?

I think it should be possible. However then it probably would only cycle through the forms for the last element added to the bar and not all elements with word forms in the grid?!

By the way, I just put together an audio book search and play page based on a collaboration between Project Gutenberg (public domain literature in English)

Great idea. I've planned an integration of podcasts to AG, which would be quite similar in terms of listening to long audio files. However I've not thought about it in detail and further discussions about it should be done in a separate issue.

klues commented 6 months ago

I have more questions about the word form implementation. I've to decide how to save the data internally and this has implications on the usability. So we have to decide if:

  1. word forms (tags) are independent for every language, so for the same element in one language there could be a word form with tags (1.P + NEGATION) and for another language (PLURAL, FEMININE). This example doesn't make sense of course, but maybe in some cases it makes sense?!
  2. tags for word forms are equal for all languages, so if there is a word form (1.P + NEGATION) for instance for "German", this combination of tags is also available in all other languages where word forms for this element are defined. However if a word form doesn't make sense for a specific language, the value could simply be empty.

What do you think? I think (2) makes more sense. Then it would be only needed to define all possible tag combinations like (1.P + NEGATION), (2.P + NEGATION), (3.P + NEGATION), ... once and then fill the values for all languages. If there is a special case for a language, then you could simply add a new tag combination and fill the value only for this language. A set of possible tag combinations additionally could be linked to specific word types, which would reduce the work of setting up word forms, see my previous question.

So technically speaking the data format would be something like this:

let wordforms = [
    {
        tags: ["BASE"],
        value: {
            "DE": "sein",
            "EN": "be"
        }
    },
    {
        tags: ["1P"],
        value:  {
            "DE": "bin",
            "EN": "am"
        }
    },
    {
        tags: ["2P"],
        value:  {
            "DE": "bist",
            "EN": "are"
        }
    },
    {
        tags: ["1P", "NEGATION"],
        value:  {
            "DE": "bin nicht",
            "EN": "am not"
        }
    },
    {
        tags: ["2P", "NEGATION"],
        value:  {
            "DE": "bist nicht",
            "EN": "aren't"
        }
    }
    // ...
]

And this would be an example, were some tags are only for available for specific languages:

let wordforms = [
    {
        tags: ["BASE"],
        value: {
            "EN": "red",
            "ES": "rojo"
        }
    },
    {
        tags: ["FEMININE"],
        value: {
            "ES": "roja"
        }
    },
    {
        tags: ["MASCULINE"],
        value: {
            "ES": "rojo"
        }
    }
]

So if the current content language is "EN" and the action change to MASCULINE is performed, the word form would simply stay at the base form "red".

For the "sibling usecase" I think it will be something like this:

let wordforms = [
    {
        value: {
            "DEFAULT": "Benjamin",
        }
    },
    {
        value: {
            "DEFAULT": "Jim"
        }
    },
    {
        value: {
            "DEFAULT": "Matthew",
            "DE": "Matthias",
            "EN": "Matthew",
            "ES": "Mateo",
            "IT": "Matteo"
        }
    }
]

So Benjamin and Jim would be displayed for all languages and the third one would be different accross languages (but default to Matthew for all non-defined languages). Here we wouldn't necessarily have any tags, since it's just a list of words.

ms-mialingvo commented 6 months ago

I think that will be possible if the not button also is a button which changes the word form, like 2nd person plural before. So it will change all word forms (where existing) to the form labelled with NEGATION. And therefore it could also change words in the collection bar to this NEGATION form, which has to be added within the original button for "is/are/aren't". However in this case we'll need a system where it's possible to add multiple labels to word forms like this:

1.P -> am 2.P -> are 3.P -> is 1.P, NEGATION -> "am not" 2.P, NEGATION -> "aren't" 3.P, NEGATION -> "isn't" So then the first button 2nd person plural selects the first word form with label 2.P ("are") and the not button will then additionally select NEGATION, so that in total it will select 2.P + NEGATION = "aren't".

I just realised that I'm not sure if I understood this correctly. 1.P changes the button "be" to "am" Click on "am" adds it to the collection bar Click on NEGATION changes the "am" in the collection bar to "am not" Like that? Because if that's the way you meant it, that's the same I meant to achieve with the if-then suggestion. And that would just change the last word? So one could write "I am small, you aren't small"?

A question that arises for me: "How to manage the tags for word forms"? Some possibilities:

I'd go with 2 (default tags for the most important concepts like 1.P, 2.P, ... NEGATION, PLURAL, ... with the possibility to extend these default tags with own ones) but while trying it to keep it as language-neutral as possible. Which could be done by using abbreviations, so not SINGULAR but SG, PLURAL but PL, ACCUSATIVE but ACC etc. Also yes to groups of tags, though not sure default combinations would be needed. 4 just as long as this is an optional thing and all tags are available when no word form is chosen, because what is an adjective in one language is a noun in another etc. Or like word can be used both as noun and as verb.

I have more questions about the word form implementation. I've to decide how to save the data internally and this has implications on the usability. So we have to decide if:

The most common case will be that a word in one language can use tags that another language doesn't need. E.g. an example with an adjective like "small". For English the tags (comparative, superlative) is all that could be applied to the word. For Spanish the tags (masculine/feminine, singular/plural, comparative, superlative, diminutive) could be applied.

klues commented 6 months ago

1.P changes the button "be" to "am" Click on "am" adds it to the collection bar Click on NEGATION changes the "am" in the collection bar to "am not" Like that? Because if that's the way you meant it, that's the same I meant to achieve with the if-then suggestion.

Yes, exactly, this was my idea. And yes, in this case you can achieve the same thing like with the if-then rules, but with no extra system which has to be there to define these if-then rules - that's why I like it better.

And that would just change the last word? So one could write "I am small, you aren't small"?

Yes. We also could think of some special rules like "if a button changes the last word in the bar, don't add it to the bar, otherwise add it" and "if a word form is added to the bar, where the last word in the bar caused this word form, remove the last word before adding the new one". A practical example:

Other way:

The most common case will be that a word in one language can use tags that another language doesn't need. E.g. an example with an adjective like "small". For English the tags (comparative, superlative) is all that could be applied to the word. For Spanish the tags (masculine/feminine, singular/plural, comparative, superlative, diminutive) could be applied.

OK, so you would think that tags should be completely independent for every language? Maybe with the possibility to add some predefined / user defined sets of tags to a word form for a specific language (I think of verbs, where it will be cumbersome to add all persons / plural for every language again)? Then the question of how to implement / define the change to form XY actions becomes harder. Then probably we would need to be able to define XY separately for every language.

So the word forms would look more like this (just writing it down for me, in order to be able to imagine):

let wordforms = {
    "EN": [
        {
            tags: ["BASE"],
            value: "tall"
        },
        {
            tags: ["COMPARATIVE"],
            value: "taller"
        },
        {
            tags: ["SUPERLATIVE"],
            value: "tallest"
        }
    ],
    "ES": [
        {
            tags: ["BASE"],
            value: "alto"
        },
        {
            tags: ["FEMININE"],
            value: "alta"
        },
        {
            tags: ["MASCULINE"],
            value: "alto"
        },
        {
            tags: ["MASCULINE", "PLURAL"],
            value: "altos"
        },
        {
            tags: ["MASCULINE", "SUPERLATIVE"],
            value: "el mas alto"
        }
    ]
}

And here I think it needs some feature to quickly add sets of tags to a word, in order to prevent duplicated work. So if adding many spanish adjectives, to quickly add serveral word forms with tags: ["BASE"], ["FEMININE"], ["MASCULINE"], ["FEMININE", "PLURAL"], ...

For actions we would need something like this:

let changeWordAction = {
    "EN": {
        changeToTags: ["SUPERLATIVE"]
        // maybe more properties
    },
    "ES": {
        changeToTags: ["MASCULINE", "SUPERLATIVE"]
        // maybe more properties
    }
}
ms-mialingvo commented 6 months ago

Yes, exactly, this was my idea.

Yay, perfect =)

"if a button changes the last word in the bar, don't add it to the bar, otherwise add it"

So that would in the case of "am/is/are not" result in one not having to programm "am not" in the "to be" button, because that would happen automatically? Sure could be useful in some cases / for some languages.

"if a word form is added to the bar, where the last word in the bar caused this word form, remove the last word before adding the new one".

Can't right now think of a case where that would be useful respectively how it isn't already kinda covered with the other options but I haven't finished going through all of the grammar of the languages that I want to translate to.

OK, so you would think that tags should be completely independent for every language? Maybe with the possibility to add some predefined / user defined sets of tags to a word form for a specific language (I think of verbs, where it will be cumbersome to add all persons / plural for every language again)?

I think having a set of predefined tags for all languages of the most common flexions/changes not connected to a word form can be useful. Jim and others would have to say if they deem an additional connection to word forms useful for them, for me I don't need it.

I think the most common tags would be for verbs 1.p.sg. 2.p.sg. 3.p.sg. 1.p.pl. 2.p.pl. 3.p.pl.

then for adjectives comparative, superlative and for nouns maybe all the "common" cases? nominative, accusative, dative, genitive, ablative, locative, instrumental. And indefinite/definite. And for all three word forms masculine/feminine and singular/plural

Then the question of how to implement / define the change to form XY actions becomes harder. Then probably we would need to be able to define XY separately for every language. So the word forms would look more like this (just writing it down for me, in order to be able to imagine):

Not sure if I'm understanding this correctly. Is XY the name of the tag? Because if yes, then in the example it should FEMININO, MASCULINO, SUPERLATIVO. Though for my set, the XY would be the same accross languages, so like... neg. for negation, independently whether you are on the English, German or French version of the set, and I'd document it for people so they understand the tags even if "neg." doesn't mean anything at all in their language. Having XY different accross languages (e.g. accusative in English, Akkusativ in German) might be more user-friendly but could lead to a mess of tag names. I can provide a list of all the tags I will use once I finished going through the grammar of the languages.

But yeah, I'm not sure if I've understood that correctly.

klues commented 6 months ago

So that would in the case of "am/is/are not" result in one not having to programm "am not" in the "to be" button, because that would happen automatically?

Can't right now think of a case where that would be useful

Please look at my two practical examples in my comment right below these rules to see where I think these rules could make sense.

Not sure if I'm understanding this correctly. Is XY the name of the tag?

No, it's the tag to which the word forms should be changed to. I also think that I wouldn't translate tag names, so NEGATION or 1.PERS or whatever is the same for everyone in every language. My question was related to this, imagine:

  1. there is the word form "alta" with tag FEMININE for Spanish
  2. there no word form with tag FEMININE for this same word for English
  3. User presses "she / ella" -> changes word forms to "FEMININE" -> in this case this only makes sense for Spanish, so my question is, if for the action change to FEMININE we'll have to define that this is only performed, if the current language is Spanish. But maybe it's not needed. I think probably I'll just start to implement something, which then can be tested - maybe it was enough theoretical thinking for now ;)
klues commented 6 months ago

My first draft for the UI defining word forms:

grafik

On the top possibilities to add new word forms and import / export them from / to some spreadsheet software. In the table the possibilities to edit, remove and rearrange them:

grafik

Rendering of the tags within the table should be the same like in the selection element, but as said, it's the first draft. Feel free to give feedback.

ms-mialingvo commented 6 months ago

I just shouldn't multitask while writing a post here ;) Re-writing my previous post.

My first draft for the UI defining word forms:

It's looking good for me, very intuitive and user-friendly. :)

ms-mialingvo commented 6 months ago

Also, something that just crossed my mind: Since you wrote that it could be possible to import conjugations (and automatically add the labels) using the API from verbix.com... If tables with all the necessary flexions for non-verbs exist for all needed languages and they are somewhere online, would it be possible to import them in one go via API too? After applying whatever-necessary programming to it, of course, I'm struggling to understand how APIs work...

Also, will the imported conjugations be visible in the word forms overview or will only the word forms that people specifically create be visible there?

klues commented 5 months ago

If tables with all the necessary flexions for non-verbs exist for all needed languages and they are somewhere online, would it be possible to import them in one go via API too?

There are services which really provice an API, which is meant to be used programmatically by other applications (like Verbix). So you can do a request to a specified enpoint like https://api.verbix.com/finder/json/<apikey>/<version>/<language>/<verb> and get a machine-readable result (e.g. in JSON format).

There are many other services, which also provide the data, but no API, e.g. Reverso. Now of course it is also possible to programmatically retrieve data from a website like this, however it's more effort and probably also often violates the copyright/terms of use of the sevice.

I saw that you have to apply to get access to the Verbix API, which I've done now.

There are also other projects like these which provide ways to use data from an open source, which has no API (like Wiktionary):

If tables with all the necessary flexions for non-verbs exist for all needed languages and they are somewhere online, would it be possible to import them in one go via API too? After applying whatever-necessary programming to it, of course, I'm struggling to understand how APIs work...

Yes, if we find good APIs, which is the hard part. I've also found paid ones like ultralingua.com, but the quality of the result wasn't very convincing for my tests.

Also, will the imported conjugations be visible in the word forms overview or will only the word forms that people specifically create be visible there?

All should be visible in the table, shouldn't matter if it's added manually or via spreadsheet import or an API.

ms-mialingvo commented 5 months ago

If tables with all the necessary flexions for non-verbs exist for all needed languages and they are somewhere online, would it be possible to import them in one go via API too? After applying whatever-necessary programming to it, of course, I'm struggling to understand how APIs work...

To clarify where I want to go to with this question: For the word forms that are not available through verbix - or if verbix wouldn't work then for all necessary forms - I will be producing them myself. Originally in excel but that can then be transformed to whatever other format needed. So, once this data is created, I'd be totally fine with making it publicly available for everyone under CC, like it could be uploaded to the domain of my project or even directly to asterics.eu or to github. What I want to know as I don't understand the programming part of it, is if it would be possible to transform/program the data in a way that would make it available for automatic use in AsTeRICS Grid for everyone, like you're planning with verbix? Maybe even in a way where anyone who wants to add more words or more languages would be free to contribute and it would then again be automatically available for AsTeRICS Grid? (If I'm understanding the screenshot correctly, with the import option you've created one would have to import the data for each word separatedly, not all at once?)

All should be visible in the table, shouldn't matter if it's added manually or via spreadsheet import or an API.

Great! :) If possible it would then be great to have some way to either filter it or to have subsections for different languages or something else like that. From the screenshot at the moment it looks like all word forms for all languages would be listed one after the other, not just the language you're currently in, and when you have a boardset that is translated to 5 languages, even if you just have 12 verb forms (present, past) for each it would be already 60 words and it would quickly get hard to keep an overview.

klues commented 5 months ago

So, once this data is created, I'd be totally fine with making it publicly available for everyone under CC, like it could be uploaded to the domain of my project or even directly to asterics.eu or to github.

That's great and very much fits with our idea of open ressources for AAC 👍

What I want to know as I don't understand the programming part of it, is if it would be possible to transform/program the data in a way that would make it available for automatic use in AsTeRICS Grid for everyone, like you're planning with verbix?

Yes, it would be definitely possible, however of course some more work to do. At the moment I would just try to create the data in machine-readable way, then it can be transformed to whatever needed for an API easily. I can imagine creating such an API on my own in the future or maybe also @arasaac-dga could imagine to do it?!

The easiest way would be just to upload it on github (probably best within an own repository) and if the structure is good, then github also could be used as an API, like ian-hamlin/verb-data already did it. At this repo it's already possible to use the github API like https://raw.githubusercontent.com/ian-hamlin/verb-data/master/json/spanish/content/e/echar.json and directly use this within AsTeRICS Grid. This repo could also be forked (copied) and then more language/words could be added.

But as said, the first step is to create the data in a machine readable way. I would propose this format within a spreadsheet: LANG BASE TAGS VALUE
DE sein 1.PERS bin
DE sein 2.PERS bist
DE sein 3.PERS ist
DE sein 1.PERS, PLURAL sind
DE sein 2.PERS, PLURAL seid
DE sein 3.PERS, PLURAL sind

Then it's easy to filter the words within the spreadsheet and also to import/export them to/from AsTeRICS Grid or any format that's needed for an API. It would be also possible to try to write a program that automatically extracts word forms data from these Wiktionary tables: https://de.wiktionary.org/wiki/Flexion:sein - it would be OK, since these ressources are already CC licensed.

ms-mialingvo commented 5 months ago

But as said, the first step is to create the data in a machine readable way. I would propose this format within a spreadsheet:

Perfect :)

klues commented 5 months ago

I have moved forward in implementing and I have a question. Look at this example:

chrome_9jXm11lVwL

What happens in the background:

  1. click "You" -> action add tag 2.PERS -> "be" changes to "are"
  2. click "are" -> added to bar, at the same time clears collection of tags in the background, since it's an element not doing any word form changes
  3. click NEGATION -> tags 2.PERS and NEGATION are accumulated for "are" in the bar -> changes to "aren't" in the bar. This accumulation of the tags is only done for this one word in the bar, the general collection of tags was cleared in the last step, so there is only the NEGATION tag and the "be" element shows the first form with NEGATION, which is "am not"
  4. click "He" -> action add tag 3.PERS -> collection of tags in the background is NEGATION and 3.PERS -> "be" shows "isn't"

My question: how now one could write "you aren't he is" instead of "you aren't he isn't" using our system? I think we need some extra button/action "reset word forms" for cases like this. Or do you have a different idea?

With this clicking order everything would be fine:

  1. click "You" -> added to bar
  2. click NEGATION -> "be" shows "aren't"
  3. click "aren't" -> collection of tags clears in background
  4. click "He"
  5. click "is" -> bar shows "you aren't he is"

So the problem is only for the case where the word in the bar is changed afterwards.

ms-mialingvo commented 5 months ago

Would it be possible to clear the tags whenever a grammar button is clicked that changes a word in the speaking bar? (Provided that "2.Pers" and "negation" are different kinds of grammar buttons in that if one were to click first "you" then "be" and afterwards "2.pers." it would not change the "be" in the bar to "are"?) Or better, would it be possible to tell it to apply the negation only to the bar and not the rest of the board?

klues commented 5 months ago

Theoretically anything which is a consistent rule is possible to program. However I wonder what's most intuitive and understandable.

I wonder what's the benefit if it's possible to change word forms within the bar and within the grid at the same time or if it would be better to globally choose between one of both approaches:

  1. Only change word forms within the bar, so for writing "You aren't, he is":
    • You -> be -> 2.PERS -> NEGATION (changes "be" to "aren't" in bar) -> He -> be -> 3.PERS (changes "be" to "is" in bar)
  2. Only change word forms within the grid elements, so for writing "You aren't, he is":
    • You -> 2.PERS -> NEGATION -> be (which is changed to "aren't" in the element) -> He -> 3.PERS -> be (which is changed to "is" in the element)

I think approach (2) in general is more intuitive and also has the benefit that "You" could already have the action change to 2.PERS , so in total it would need less clicks. From a learning perspective maybe it doesn't make sense to mix both approaches, for the learner it probably won't be consistent if he/she sometimes has to press the grammar button before and sometimes after the word that has to be changed.

klues commented 5 months ago

Approach (2) additionally has the benefit, that the acoustic feedback is correct.

For (1) the learner hears:

For (2) the learner hears:

So my question is: why not stick only with approach (2), what would be the downside of it?

klues commented 5 months ago

I've released a first test version to: https://grid.asterics.eu/latest/

There are now 4 types of "change word form" actions:

This is my demo for the different options, you can also use it (you have to unzip it): test-grammar_2024-01-12_14-37_asterics-grid-full-backup.zip

Here a screencast of the demo with Change word form in grid elements: chrome_sER85IuPSH

There now is also the possibility to import/export word forms from spreadsheets. Please test and give me your feedback.

jamjolu commented 5 months ago

Ok, It took me some time to figure this out - I learn best by fiddling with things - and I think I understand how it works now. I did notice that in the change everywhere scheme a little strangeness:

  1. I added an -ing element for adding -ing endings by associating the -ing endings to the tag 6.CASE and added that tag to the word forms for the "be" element to produce "being"
  2. If I want to say in the collection element "I am being", I press: I > am > be > -ing and this works fine.
  3. I can also achieve the same result if I press: I > am > -ing > being
  4. To say "I am not being" : I > Negation > am not > be > -ing or I can press: I > Negation > am not > -ing > being
  5. However, If I try: I > am > Negation I get: "I am not" and I get kind of stuck. The label of the element for the base word "be" has changed to "am not" with no obvious way to return to the base value "be". At this point, I try pressing my -ing element and the "am not" element returns to "be". Then I press: be > -ing and instead of "being", I get "am not" with the whole phrase in the collection element reading: "I am not am not"
  6. Then when I tried: I > am > Negation > -ing > -ing the element with the base value "be" toggles between "be" and "am not".
  7. I can can eventually get what I want starting at step 5 by pressing the "erase last collection entry" element in the Global Grid followed by: be

    -ing or -ing > be

I am pretty sure this is not what is intended, but correct me if I am wrong.

Thanks, Jim Luther

On Fri, Jan 12, 2024 at 8:50 AM Benjamin Klaus @.***> wrote:

I've released a first test version to: https://grid.asterics.eu/latest/

There are now 4 types of "change word form" actions:

  • Change word form in grid elements: only changes word forms in grid elements, not in the bar
  • Change word form in collection element: only changes word forms in the bar (only the last element)
  • Change word form everywhere: change word forms in the bar and in elements
  • Change this element to next word form: only iterates through the word forms of this element, like @jamjolu https://github.com/jamjolu suggested

This is my demo for the different options, you can also use it (you have to unzip it): test-grammar_2024-01-12_14-37_asterics-grid-full-backup.zip https://github.com/asterics/AsTeRICS-Grid/files/13919717/test-grammar_2024-01-12_14-37_asterics-grid-full-backup.zip

Here a screencast of the demo with Change word form in grid elements: chrome_sER85IuPSH.gif (view on web) https://github.com/asterics/AsTeRICS-Grid/assets/2537025/de3f4e89-8b4b-49f0-8db8-5b0e13847723

There now is also the possibility to import/export word forms from spreadsheets. Please test and give me your feedback.

— Reply to this email directly, view it on GitHub https://github.com/asterics/AsTeRICS-Grid/issues/254#issuecomment-1889259120, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4D6ZWTI5NJAYHS2DSLYUDYOE5RRAVCNFSM6AAAAAAWHTFJK6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBZGI2TSMJSGA . You are receiving this because you were mentioned.Message ID: @.***>

ms-mialingvo commented 5 months ago

So my question is: why not stick only with approach (2), what would be the downside of it?

It would not work for "I am not" (respectively "I'm not"), the user would have to type a different kind of sequence instead of being able to stick to the same pattern for all conjugations. For this specifical example "I am not" and "you are not" are perfectly correct sentences, so it wouldn't sound fully wrong, it's just like a neat thing that the words are changed in the bar to the coloquial form without the user having to think about it. Or am I missing something?

There are now 4 types of "change word form" actions:

Thanks! :) Time for experimenting.

klues commented 5 months ago
  1. However, If I try: I > am > Negation I get: "I am not" and I get kind of stuck. The label of the element for the base word "be" has changed to "am not" with no obvious way to return to the base value "be".

Yes, that's the problem for the change everywhere action, which changes the last word in the bar and the words within the grid at the same time. What's happening in the background:

  1. "I" -> globally collected tags: 1.PERS
  2. "am" -> clears globally collected tags, now empty.
  3. Negation -> tags for word "am" in the bar are now: 1.PERS, NEGATION, for all other words the globally collected tag is only NEGATION -> nevertheless "am not" in the element, since it's the first word form with NEGATION in the list.
  4. -ing
    • adds GERUND to "am not" in the bar -> there is no form for 1.PERS, NEGATION, GERUND, therefore it's discarded and it stays at 1.PERS, NEGATION
    • adds GERUND to the globally collected tags which are now: NEGATION and GERUND. There is no word form defined for that, so the element in the grid shows "be", which is the base form.

That's what's happening in the background. If you're adding another word form like:

and then try the same thing, I think it's more clear what's happening and what's the problem:

chrome_r8gs1hfKvO

We want that NEGATION is applied to the bar, and not to the grid, but that would be the action "change only in bar", which is already existing. For "change everywhere" that's what we get and what doesn't make sense in some cases.

I can add another action "reset word forms" which clears the currently globally collected tags and fixates the last word in the bar, but this would have to again an additional another button and makes the approach even more complex. In general it's the question how far/complex it should be and if there are users which would need to write "I am not being" using symbols and cannot simply use a keyboard. Aside from that: it's already possible to write "I am not being", however then one has to stick with either "change in bar" or "change in grid elements" and not use "change everywhere".

klues commented 5 months ago

It would not work for "I am not" (respectively "I'm not"), the user would have to type a different kind of sequence instead of being able to stick to the same pattern for all conjugations. For this specifical example "I am not" and "you are not" are perfectly correct sentences, so it wouldn't sound fully wrong, it's just like a neat thing that the words are changed in the bar to the coloquial form without the user having to think about it. Or am I missing something?

Hmm, I think both approaches would in general work, but there are these pros and cons for using actions "change word forms everywhere":

  1. pros:
    • it's possible to create configurations which respect the natural order to selecting elements for different languages. So for English it's possible to select "I" -> "am" -> NEGATION and for Spanish "Yo" -> NEGATION -> "soy", so for both languages it's the more natural order of pressing elements and both result in the correct sentence.
  2. cons:
    • for more complex sentences there could be situations like @jamjolu found and I described in my last comment. So maybe there would be the need of an additional button "reset word forms", which somehow makes things more complex.
    • maybe it's more cofusing for the learner if word forms sometimes change in the grid, sometimes in the bar?!
    • acoustic feedback is sometimes not correct (hearing "I am" while writing "I am not")

I wonder if it maybe would be better to stick with "change word forms only in elements" - there is this single downside of non-intuitive order of clicking, however maybe for the learner it's also an advantage to have to the press the buttons in the same order for every language?!

klues commented 5 months ago

I've found a way of making the "I am not being" sentence easily possible with the "change everywhere" action. I've changed the way how word forms are determined depending on which tags are added:

As a result it's possible to do: I -> am -> NEGATION -> GERUND -> being which results in I am not being

It also makes it possible to do: 1.PERS -> 2.PERS -> 3.PERS -> current form for "be" is "is", since the last one selected 3.PERS defines the current form. So it's possible to somehow search through word forms by clicking several actions in sequence.

One question: Currently clicking the same change wordform action several times toggles the tag, so e.g. clicking NEGATION and then NEGATION again, removes it from the currently collected tags. Do you think this behaviour should be configurable? I think I'll just add an option to the action to configure it.

klues commented 5 months ago

I've just released a new test version to https://grid.asterics.eu/latest/

See this screencast for 2 ways how it's now possible to write I am not being (the "RESET" now doesn't make very much sense since it's possible to reach the goal easier, but maybe there are cases where this action is needed):

chrome_I20Zt7hmbc

Here an updated backup of my test configuration: test-grammar_2024-01-15_14-41_asterics-grid-full-backup.zip

klues commented 5 months ago

I've just changed the format for importing / exporting word forms, now it's:

Reason: with this format it's possible to also import word forms without language or tags.

ms-mialingvo commented 5 months ago

I finally had some time to test things. It's looking good! 👍

I think at the moment is not possible to add / not add an element to the collect element based on the language? Just as a general option for the button? Edit: Thinking about it, having just that option language-specific wouldn't make sense, it would've to be combined with the option of speaking the button. (So, "add this button to the collect element and speak it" in language A, "don't add nor speak this button but use these option from the 'change word forms'" in language B). It would be neat to be able to do that, but if it gets too complicated, I also can work my way around and program things differently.

ms-mialingvo commented 5 months ago

but if it gets too complicated, I also can work my way around and program things differently.

Experimenting with alternatives. The example is: "Where are you?" in English respectively "Whereareyou" ('are you' as an added suffix) in Syrian:

Version 1: English: Click 'where' -> added to collect element click question (option change in grid elements), click 2.p.sg. (option change in grid elements) -> 'to be' in grid changes to 'are you' click 'are you' -> added to collect element. I could do the same programming for Syrian. Disadvantage: that would result in "where areyou" so the suffix wouldn't be added as suffix but it would be a separate word and hence potentially be pronounced wrongly.

Version 2: English: Same Syrian: Not add a label to 'where' just add where tag Click 'where' -> added to collect element but nothing is spoken Click 2.p.sg. (option change in grid elements) -> 'to be' in grid changes to 'whereareyou' Click 'whereareyou' -> added to collect element. Disadvantage: the user can't say 'where' as an only word, respectively there would need to be two buttons for 'where', once to use it as single word for other sentences (e.g. for 'where the house?', there is no 'is' used in this case), once to use it with the word 'to be' and the user would need to understand this cognitively.

Version 3: English: Same Syrian: Click 'where' -> added to collect element click 2.p.sg. (option change in collect element), click to be (option change in collect element) -> changes 'where' to 'whereareyou' in the collect element, but it also adds the 'to be' to the collect element, so this version doesn't work.

Any option I am missing?

Another thing I noticed, is, that it's not possible to combine the 'change word form in...' and 'change this element to next word form'. So, I can't make it possible for a more advanced user to decide whether they want to say 'you are' by either clicking twice on 'to be' or by clicking 2.p.sg. and 'to be'. If I have both options programmed and try to use the grammar buttons version, it shows the correct change to 'you are' in the grid but then shows 'I am' in the collect element as it's the first word form in the list. I could imagine that a combination could be useful for advanced users who then could select the most common forms (e.g. I am, you are, he is) by multiple clicking and more complex forms with the grammar buttons (e.g. 'they have been' through 2.p.pl. present perfect continuous). I also could imagine that not many users would have this skill, though, so if it's not possible to combine, that's also fine.

klues commented 5 months ago

So, "add this button to the collect element and speak it" in language A, "don't add nor speak this button but use these option from the 'change word forms'" in language B

As said, everything is possible to program - however, I think I wouldn't do it, since it's very complicated for both the professional user and the AAC user to understand it. I think the system should be as easy as possible and work the same way in every language.

Version 1: English: Click 'where' -> added to collect element click question (option change in grid elements), click 2.p.sg. (option change in grid elements) -> 'to be' in grid changes to 'are you' click 'are you' -> added to collect element. I could do the same programming for Syrian. Disadvantage: that would result in "where areyou" so the suffix wouldn't be added as suffix but it would be a separate word and hence potentially be pronounced wrongly.

That should be possible to fix via a property use as suffix for the word forms. If activated, the space between the last word and the word form could be omitted (at least for speaking, it will still be 2 separate elements in the bar). I also think that it would be most consistent to have are you as a word form of be with tags QUESTION, 2.PERS.

That's also an open question: which tags should be selectable by default? Currently we have these:

'NEGATION', 'SINGULAR', 'PLURAL', '1.PERS', '2.PERS', '3.PERS', '1.CASE', '2.CASE', '3.CASE', '4.CASE', '5.CASE', '6.CASE', 'FEMININE', 'MASCULINE', 'NEUTRAL', 'COMPARATIVE', 'SUPERLATIVE', 'PRESENT', 'PAST', 'FUTURE', 'INDEFINITE', 'DEFINITE'

Should we add QUESTION? (in general custom tags are also possible)

ms-mialingvo commented 5 months ago

That should be possible to fix via a property use as suffix for the word forms. If activated, the space between the last word and the word form could be omitted (at least for speaking, it will still be 2 separate elements in the bar).

I think for a beginner to understand the sentence visually, having still both icons in the bar even when words are added as suffix would actually be a good thing. If also the written words are separated in the bar, that's disadvantageous for literacy skills, but it would be a compromise.

That's also an open question: which tags should be selectable by default? Currently we have these:

'NEGATION', 'SINGULAR', 'PLURAL', '1.PERS', '2.PERS', '3.PERS', '1.CASE', '2.CASE', '3.CASE', '4.CASE', '5.CASE', '6.CASE', 'FEMININE', 'MASCULINE', 'NEUTRAL', 'COMPARATIVE', 'SUPERLATIVE', 'PRESENT', 'PAST', 'FUTURE', 'INDEFINITE', 'DEFINITE'

I'd be using two more cases, '7.CASE', '8.CASE'. And grammatical moods. So actually what I for testing purposes labelled as QUESTION would be interrogative, then imperative, sujunctive, optative, admirative, conditional, jussive. More grammatical moods exist of course but those are the ones I'd need to start with, I think. Although the question is if it would be needed to actually write it out or to just add options '1.MOOD', '2.MOOD' etc. Probably the second, and then I'd just document for my board set which case and mood I'm using for which label. I'll also be using diminutive, elative, augmentative, nominalization. And 1-3 more tenses. Not sure yet about a 'polite form' button. The overall question is how many tags to add as default as some of them are only needed in a few languages and - except for me - most users I guess will be using the word forms "just" for English, German, Spanish...

ms-mialingvo commented 5 months ago

most users I guess will be using the word forms "just" for English, German, Spanish...

...well, at least for the moment. No clue how much this could take off once I create the multilingual board, how many people would start to join in, doing more translations... :)

klues commented 5 months ago

If also the written words are separated in the bar, that's disadvantageous for literacy skills, but it would be a compromise.

Yes, within our system it won't be possible differently, because then "where" belongs to the first symbol and "are you" to the second one. However, for literacy it would maybe be possible to add a second bar, which only shows the text only and no symbols with "whereareyou".

I'd be using two more cases, '7.CASE', '8.CASE'.

OK, I assume that most people which will fully use the system, will have spreadsheets and import the data from there. In this case it doesn't matter which labels are used, any label can be imported. The question is which are most used and should be available in the UI by default. So maybe I'll keep it as it is, or add 2 more moods, I don't know, but probably not so important.

klues commented 5 months ago

Another thing I noticed, is, that it's not possible to combine the 'change word form in...' and 'change this element to next word form'.

I've fixed this with https://github.com/asterics/AsTeRICS-Grid/commit/c3877b0a277c3f35015395bd50c06ad90eb8f896 - so please test in about 15 minutes at https://grid.asterics.eu/latest/

ms-mialingvo commented 5 months ago

Yes, within our system it won't be possible differently, because then "where" belongs to the first symbol and "are you" to the second one. However, for literacy it would maybe be possible to add a second bar, which only shows the text only and no symbols with "whereareyou".

That could be interesting and helpful. But just if you have any extra time to program this at the end, not a must-have at the moment for me.

OK, I assume that most people which will fully use the system, will have spreadsheets and import the data from there. In this case it doesn't matter which labels are used, any label can be imported.

Oh, right, forgot about that. Yeah, in that case it's fine as it is.

I've fixed this with https://github.com/asterics/AsTeRICS-Grid/commit/c3877b0a277c3f35015395bd50c06ad90eb8f896

Great! :)

ms-mialingvo commented 5 months ago

I've fixed this with c3877b0 - so please test in about 15 minutes at https://grid.asterics.eu/latest/

Hm, grammar is now not working properly. Clicking 1.P.SG. ( without 'change this element to next word form' active, to see the problem more clearly) changes 'to be' to 'I am' in the grid. In English it then doesn't add the element to the collect bar after clicking on it (I don't have 'don't add to collect element' activated.), in German it strangely does. In both cases however I can't then click on 2.P.SG. to say 'you are', it gets stuck on 'I am' until click the trash button. It doesn't help to click on another "normal" word (e.g. I am doctor) for the button to get reset to 'to be' either.

klues commented 5 months ago

Yeah, I've also noticed it - the new "feature" broke something, sorry. I'm investigating it.

klues commented 5 months ago

Should be fixed at "latest". See this backup for a new test-grid "Change in element + next wordform" where both forms are combined: test-grammar_2024-02-05_15-56_asterics-grid-full-backup.zip

ms-mialingvo commented 5 months ago

Thank you! Grammar is working fine now again. :) Only issue remaining is that the fields in the grid don't reset after doing a grammar action when both options are activated. So, 2.P.SG. changes 'to be' in the grid to 'you are', then one can click on it and it's added to the collection bar. The button isn't however reset to 'to be' but shows the next possible word form from the list, which in this case is 'he is'.

klues commented 5 months ago

The button isn't however reset to 'to be' but shows the next possible word form from the list, which in this case is 'he is'.

I thought that this is the intention?! So you think it would be better this way:

  1. click 2.PERS -> to be changes to are
  2. click are -> added to bar, are returns to to be in the element
  3. click to be in order to add it again to the bar?! So the bar contains are to be and the to be element changes to next word form are
  4. click on are changes to be to are in bar, so bar contains are are, are element switches to next word form is ...

Or this way:

  1. click 2.PERS -> to be changes to are
  2. click are -> are is added to bar, are element switches to next word form containing 2.PERS, e.g. aren't
  3. click aren't in order to change are to aren't in the bar, aren't element switches to next word form containing 2.PERS, e.g. are you.

Maybe the second would make most sense?

ms-mialingvo commented 5 months ago

Okay, something that wasn't working earlier is working now. So as an example of use, for "They're not tired but I am" 'They're not' could be created using the grammar buttons and 'I am' by clicking twice on 'to be'. What wasn't working previously as far as I remember is "to be" resetting to base after clicking "tired". So since this works it's fine now. :)

Different topic: Pondering if the 'next wordform' option could be used to solve the following dilemma but currently it's not working: Verb forms creation option 1: 3.p.pl. (not spoken, not added to collect bar, changes 'to be' in the grid) -> «they are» «tired» «Ana» «and» «Tom» 3.p.pl -> «they are» «tired» The "they" gets superfluous.

Verb forms creation option 2: they (spoken, added to the collect bar, changes 'to be' in the grid) -> «are» «tired» «Ana» «and» «Tom» they (spoken, added to the collect bar, changes 'to be' in the grid) -> «are» «tired» Again, the "they" gets superfluous.

Possible solution: they (spoken, added to the collect bar) -> «are» «tired» «Ana» «and» «Tom» they (spoken, added to the collect bar) <- clicking the button again after activating 'next wordform' changes it to " " (nothing) -> «are» «tired» There is an extra icon in the bar and the spoken 'they' might be confusing but afterwards, when clicking the full sentence, it's spoken correctly. (Edit: Although the spoken 'they' could be eliminated by having it as the second click instead of the first.) However at the moment using 'change word forms in grid element' and 'change this element to the next word form' in the same button seems not to work.

Or any other idea for a solution?

klues commented 4 months ago

So since this works it's fine now. :)

Great :)

and 'I am' by clicking twice on 'to be'

So you're using I am as a word form of to be? I'm not sure it if this is the most flexible in the long term, and if forms of to be should really include the persons?!

Regarding Tom and Ana they are tired: I think the best possibility is to add an option to toggle elements within the bar, which I've added now: grafik

So you can do: Tom and Ana -> they (changes be to are) -> they (removes it from collection element) -> are -> tired -> in total Tom and Ana are tired.