Learning secondary language (L2) sentences and their meaning (e.g., English, L1) using a progressive presentation technique.
- Progressive Sentences: Combining the Benefits of Word and Sentence Learning, MobileHCI'25 Adjunct
- Camera Ready PDF
@inproceedings{janaka_progressive_2025,
author = {Janaka, Nuwan and Zhao, Shengdong and Ram, Ashwin and Sun, Ruoxin and Tan Jing Wen, Sherisse and Li, Danae and Hsu, David},
title = {{Progressive} {Sentences}: {Combining} the {Benefits} of {Word} and {Sentence} {Learning},
year = {2025},
month = sep,
doi = {10.1145/3737821.3749564},
booktitle = {Adjunct Proceedings of the 27th International Conference on Mobile Human-Computer Interaction},
series = {MobileHCI '25 Adjunct},
}
- (private) Project folder: here
- Documentation: here
- Version info
- Make sure Python3 (>=3.10) is installed ( e.g., Miniconda )
- Make sure npm
and node is installed
- Tested with Node.js v20.* (LTS)
-
Install required libraries
- wuggy using
pip install wuggy - pandas using
pip install pandas - OpenAI TTS
using
pip install openai - fastapi using
pip install fastapi uvicorn - pygit2 using
pip install pygit2
- wuggy using
-
[Optional] Install the following for the analysis
- scipy using
pip install scipy - statsmodels using
pip install statsmodels - pingouin using
pip install pingouin - seaborn using
pip install seaborn - matplotlib using
pip install matplotlib
- scipy using
-
[Optional] Create the required credential files inside
credentialfolder (if you want to use OpenAI audio generation)- Create a file
credential/openai_credential.jsonwith OpenAI credentials such as{"openai_api_key": "KEY"}
- Create a file
-
Install the libraries for the frontend
cd frontendnpm installnpm run format
-
Running the sentence learning
- Run by
python main.py- Then open the hosted URL (e.g., http://localhost:5173/) in a browser
- Run by
-
Generating L2 words
- Run the L2 word generation via
python generate_words.pyafter addingtext/L1-words.csv- Results will be in
output/L1-L2-words.csv - If there are issues with
numpy, downgrade it usingpip install numpy==1.*
- Results will be in
- Run the L2 word generation via
-
Generating L2 sentences
- Run the L2 sentence generation via
python generate_sentences.pyafter addingtext/L1-sentences.csvandtext/L1-L2-mapping.csv- Results will be in
output/L1-L2-sentences.csv
- Results will be in
- Run the L2 sentence generation via
-
Generating audio (for L2/L1 words/sentences)
- Run the L2 audio generation via
python generate_audio.pyafter addingtext/L2-sentences.csv- Results will be in
output/audio/directory
- Results will be in
- Run the L2 audio generation via
-
Analyze results
- Run the marking via
python mark_answers.pyafter addinguser_data/participants_answers.csv- If the script can not detect the correct one, you need to add marks by inputting correct values by commas
- Results will be in
output/participants_answers_marks.csvoroutput/participants_marks_summary.csv
- To analyze marks, run
python analyze_marks.py(assuming marks are atoutput/participants_marks_summary.csv) - To analyze ratings, use
python analyze_ratings.pyafter addinguser_data/participants_ratings.csv - To convert the long format data to wide format (e.g., JASP), use
python convert_csv_to_anova_wide.py
- Run the marking via
-
Generate L1 sentences from groups
- Update the
generate_mix_sentences.pywith correct groups, and the nouns/verbs/adjectives based on groups - Generate the sentences using
python generate_mix_sentences.py - To verifythat the generated sentences have a mix of groups,
- Copy the sentences to
text/L1-sentences.csv - Generate L2 sentences using
python generate_sentences.py - Copy the generate L2 sentences to
text/L2-sentences.csv - Run
python analyze_sentences.pyto get the results
- Copy the sentences to
- Update the
-
Verify all multimedia files (images, audio) are available
- Run the analysis via
python analyze_multimedia_files.py,which verifies all the mentioned multimedia files inbackend/data/Sentence_elements.csvare available
- Run the analysis via