Learning secondary langauge (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 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
credential
folder (if you want to use OpenAI audio generation)- Create a file
credential/openai_credential.json
with OpenAI credentials such as{"openai_api_key": "KEY"}
- Create a file
-
Install the libraries for the frontend
cd frontend
npm install
npm 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.py
after 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.py
after addingtext/L1-sentences.csv
andtext/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.py
after 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.py
after 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.csv
oroutput/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.py
after 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.py
with correct groups, and the nouns/verbs/adjectives based on groups - Generate the sentences using
python generate_mix_sentences.py
- To verify the generated sentences have 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.py
to get the results
- Copy the sentences to
- Update the
-
Verify all multimedia files (images, audios) are available
- Run the analysis via
python analyze_multimedia_files.py
which verifies all the mentioned multimedia files inbackend/data/Sentence_elements.csv
are available
- Run the analysis via