{"id":16904358,"url":"https://github.com/eumiro/lumipallo","last_synced_at":"2025-04-11T14:32:54.154Z","repository":{"id":54992552,"uuid":"320080321","full_name":"eumiro/lumipallo","owner":"eumiro","description":"Snowball effect in language learning","archived":false,"fork":false,"pushed_at":"2023-06-26T18:00:21.000Z","size":24,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-19T10:26:05.585Z","etag":null,"topics":["language-learning","natural-language","sentences","source-language","target-language"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eumiro.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-09T21:10:14.000Z","updated_at":"2024-03-23T12:52:07.000Z","dependencies_parsed_at":"2022-08-14T08:30:41.064Z","dependency_job_id":null,"html_url":"https://github.com/eumiro/lumipallo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eumiro%2Flumipallo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eumiro%2Flumipallo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eumiro%2Flumipallo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eumiro%2Flumipallo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eumiro","download_url":"https://codeload.github.com/eumiro/lumipallo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248419753,"owners_count":21100245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["language-learning","natural-language","sentences","source-language","target-language"],"created_at":"2024-10-13T18:32:58.344Z","updated_at":"2025-04-11T14:32:54.132Z","avatar_url":"https://github.com/eumiro.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: https://github.com/eumiro/lumipallo/workflows/CI/badge.svg\n  :target: https://github.com/eumiro/lumipallo/actions?query=workflow%3ACI\n\n.. image:: https://img.shields.io/pypi/v/lumipallo.svg\n  :target: https://pypi.org/project/lumipallo/\n\n.. image:: https://img.shields.io/pypi/pyversions/lumipallo.svg\n  :target: https://pypi.org/project/lumipallo/\n\n.. image:: https://img.shields.io/github/license/eumiro/lumipallo\n  :target: https://github.com/eumiro/lumipallo/\n\n\nlumipallo: snowball effect in language learning\n===============================================\n\n\n**lumipallo** is the Finnish word for **snowball** (lumi = snow, pallo = ball).\nLearning a foreign language is like a snowball. Start with a tiny amount\nof snow and by rolling add one snowflake after another to get a big snowball.\n\nHow it works\n------------\n\nThe smallest meaningful unit of a language is a sentence consisting of words.\nIf you see a sentence in a foreign language, you understand somewhere\nbetween 0 and 100 percent of those words. If you understand nothing,\nyou'll be overwhelmed by all those new words. If you understand all\nof them, you probably won't learn much. The best learning effect\nis to get a sentence with one or two words that are new or almost new to you.\nOne unknown word in a familiar context is easier to understand\nthan seeing it isolated in a dictionary.\n\nSo where to get the right sentences?\n\n**lumipallo** uses the extensive sentences database from Tatoeba and keeps\ntrack of the words you know. Each time it tries to find a sentence with\nas few and as frequent words as possible and asks you about those\nnew words. It will provide you with a translation, but feel free to\ncheck for the word in a dictionary, compare grammar tables, or just do\nanything with the sentence. Your brain has to deal with stuff in order\nto learn something new.\n\nExample\n-------\n\nLet's say you speak English and want to learn German. Here comes the first\nGerman sentence with an English translation:\n\n    Hallo Tom.\n\n    Hello Tom.\n\nThen it asks for both words: *Hallo* and *Tom*.\n\n*Tom* is a name and *hallo* is *hello*. That was easy.\n\n    Ich heiße Tom.\n\n    My name is Tom.\n\nWe know *Tom* from the first sentence. Now you have to learn two new words:\n*Ich* and *heiße*. *Ich* is *I* and *heiße* is the first person singular\nfor *call themselves*. You understand the context and if you see these\nwords often enough, your brain will recognize them.\n\n    Ich heiße nicht Tom.\n\n    My name is not Tom.\n\nIf in the previous two sentences you confirmed that you understand all words,\nthere is only one new word in this sentence: *nicht*. That's a negating *not*.\n\n    Mein Bruder heißt Tom.\n\n    My brother's name is Tom.\n\nThere are three new words here. *Mein* is *my*, *Bruder* is *brother*,\n*heißt* looks like *heiße*, but since you are speaking about a third\nperson, the form is slightly different.\n\nThe sentence *Mein Bruder heißt nicht Tom.* (*My brother's name is not Tom.*)\nwould not appear now, just because you already know all words\nfrom that sentence, but might appear in a future version of *lumipallo*\njust in order to show you more content.\n\nThat's one important point: knowing a word is not ``False/True``.\nIt's usually somewhere in between, and your brain needs to see a word\noften and in different contexts to understand it fully.\n\n\nPrototype\n---------\n\nThe project is in the alpha stage, features may appear/disappear quickly.\n\nInstall it:\n\n.. code::\n\n    pip install lumipallo\n\nStart it with:\n\n.. code::\n\n    lumipallo\n\nIn this first prototype there is little you can do, but this is just\nto show the principle and get in touch with people interested in trying\nsomething new.\n\nYour source language is English (``eng``),\nyour target language is German (``deu``).\nIt has a list of 13 somehow related sentences with 15 different words\n(different forms of the same word are different words).\nEach session starts from zero and there is no load/save functionality.\n\nIt shows you a sentence in your target language, then in the source language.\nThen it asks for every new word in the sentence.\nAnswer ``y\u003cRETURN\u003e`` if you know the word, ``n\u003cENTER\u003e`` otherwise.\nIt should show new sentences with minimal number of new words\nand these words should be the most popular (within the list of course).\nWhen you “learn“ all 15 words, it's over.\n\nA save/load functionality is the an essential part of the project,\nbecause it is your own database of known words. There should\nbe a possibility to load your own sentences/texts to get even more\ncontent.\n\n\nContributions\n-------------\n\nYes. I'm looking forward to any ideas, questions, shared experiences or\ncode/texts contributions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feumiro%2Flumipallo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feumiro%2Flumipallo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feumiro%2Flumipallo/lists"}