Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add challenges for characters and their pronunciation #1143

Open
adnan360 opened this issue Mar 3, 2021 · 10 comments
Open

Add challenges for characters and their pronunciation #1143

adnan360 opened this issue Mar 3, 2021 · 10 comments

Comments

@adnan360
Copy link
Contributor

adnan360 commented Mar 3, 2021

Is your feature request related to a problem? Please describe.

Sometimes seeing letters on screens is not enough to learn how to write them on paper. Writing is an important part of learning a language and without such guidelines, learning is not complete. Right now there's no way to show how to write a letter.

Actually the idea came from @kantor and I'm just opening an issue for it:

I don't know the Bengali script, so there's no way for me to know how to pronounce or read the words that I see. LibreLingo should add some way to teach the characters in Bengali script, and how to combine those characters together to form words/sentences.

And possibly there should be challenges to test what they've learned.

Describe the solution you'd like
@kantor describes it better:

...One of the main idea that I have for solving this is adding another section along with Words and Phrases. It would be something like Characters. And it would generate challenges similar to the ones for words, but it would be only about characters and their pronunciation

Previous quote talks about "teaching" and this one about "challenges". So there's 2 aspects to it.

I have prepared a letter handwriting animation code to aid with the teaching part. Maybe it can help in the process or not (feel free to discuss).

Describe alternatives you've considered
I've thought about video recording a handwriting gesture. But it can't be done by everyone or won't be of same quality and it would need more bandwidth to serve.

Additional context
Well, since we're talking about challenges here, how would we collect a correct answer? Through drawing? If so, we'd need OCR or something like that to validate input. Or is there other simple ways? Feel free to discuss possibilities.

@kantord
Copy link
Owner

kantord commented Mar 4, 2021

Well, since we're talking about challenges here, how would we collect a correct answer? Through drawing? If so, we'd need OCR or something like that to validate input. Or is there other simple ways? Feel free to discuss possibilities.

As a first, super-simple idea I can imagine simply a version of the listening challenges. You just have to listen to an audio and select out of a list, which character you heard. In the case of Bengali, maybe this could be a combination of 2 characters, so you'd basically hear a syllable and choose with character combination it belongs to.

The reverse of that could also be possible, basically seeing a character and choosing which sound matches it. This reverse one could show the hand-writing animation, for example.

@stale
Copy link

stale bot commented Aug 1, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix This will not be worked on label Aug 1, 2021
@kantord kantord removed the wontfix This will not be worked on label Aug 1, 2021
@kantord kantord pinned this issue Aug 2, 2021
@kantord
Copy link
Owner

kantord commented Aug 2, 2021

I'm gonna pin this, it should not be terribly hard to solve so maybe someone is interested in implementing it

@stale
Copy link

stale bot commented Dec 31, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix This will not be worked on label Dec 31, 2021
@stale stale bot closed this as completed Jan 9, 2022
@kantord kantord reopened this Mar 4, 2022
@jowodo
Copy link

jowodo commented Dec 22, 2022

I would be interested in giving this issue a shot, but I have no experience with nodejs or sveite, but Linux+Apache+PHP is my stack at the moment. So a lot of things will be new.

I'm currently learning the arabic script on duolingo. I think the problem to solve is quite similar. The challenges to learn the script include:

  1. seeing target script letter/syllable/bogus word/real world and hearing it - choose from 1 out of 3 latin representations
  2. only hearing letter/syllable/bogus word/real word - choose from 1 out of 4 latin representations
  3. seeing latin representation - choose 1 out of 4 target script representation (when choosing the audio is played)
  4. tap the matching pairs with left 5 target scripts (when choosing the audio is played) and right 5 respective latin representations

I think these challenges make sense and their order too. Matching pairs could also be introduced for words in general. The current challenges for words and phrases can be seen at docs/courses/skill.md. There are cards, short input, listening, options and chips challenges. The 1. letter challenge is similar to options challenge and 2. letter challenge looks similar to cards challenge

Naming

I found the code for the challenges under apps/web/src/components but they seem to to be partly named differently than in the challenges doc. I propose:

  1. matching names in docs and src
  2. add location of src to docs (and locations of docs to src)
  3. put source files for a challenge type in a folder named after the challenge (even if only a sigle file; for consistency)

There is also the question on how to name the new challenges.

I will inspect the files in apps/web/src/components, try to understand which files correspond to which challenge and try to create a new challenge for characters.

@jowodo
Copy link

jowodo commented Dec 25, 2022

As I imagine it, a minimal character skill.yaml could look like this:

Skill:
   Name: Alphabet   
   Id: alphabet000
   Thumbnails:
     - abc1
 
New Characters:
   - Character: α
     Transliteration: a

Which files must I change in order to get options challenges for such a character class?

  • add Character class in apps/librelingo_types/librelingo_types/data_types.py
  • add Character class to Skill class in apps/librelingo_types/librelingo_types/data_types.py
  • import Character class in /apps/librelingo_yaml_loader/librelingo_yaml_loader/yaml_loader.py
  • add _convert_character() and _convert_characters() in apps/librelingo_yaml_loader/librelingo_yaml_loader/yaml_loader.py

Where is defined which class uses which challenges as in the docs?

@kantord kantord removed the wontfix This will not be worked on label May 17, 2023
@Skivling
Copy link

Transliteration definition would be great for typo detection if a macron or diacretic is missing but it's the same base letter, e.g. 'a' when it's 'ā'.

@kantord
Copy link
Owner

kantord commented Jul 27, 2024

Transliteration definition would be great for typo detection if a macron or diacretic is missing but it's the same base letter, e.g. 'a' when it's 'ā'.

for this, some kind or normalization could be used, I don't know if it can be modeled in such a simple way though. I mean for some languages it might be simple (just remove accents) where in others it might have complicated rules that involve multiple characters, etc

@Skivling
Copy link

True. This could get complicated in some languages very easily, although I think a basic version for the easy ones is worth implementing first.

@Skivling
Copy link

Draft PR implementing this in the Python scripts ^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants