{"id":31427434,"url":"https://github.com/maimemo/SSP-MMC","last_synced_at":"2025-09-30T07:03:02.088Z","repository":{"id":79676083,"uuid":"448610646","full_name":"maimemo/SSP-MMC","owner":"maimemo","description":"A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling","archived":false,"fork":false,"pushed_at":"2025-08-01T05:42:33.000Z","size":66,"stargazers_count":179,"open_issues_count":0,"forks_count":18,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-09-19T01:54:10.436Z","etag":null,"topics":["optimal-control","research-paper","spaced-repetition","spaced-repetition-algorithm"],"latest_commit_sha":null,"homepage":"https://www.maimemo.com/paper/","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/maimemo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-16T16:33:41.000Z","updated_at":"2025-09-18T18:06:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"efcfb464-58f6-4214-837d-b84b2df28b82","html_url":"https://github.com/maimemo/SSP-MMC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maimemo/SSP-MMC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maimemo%2FSSP-MMC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maimemo%2FSSP-MMC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maimemo%2FSSP-MMC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maimemo%2FSSP-MMC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maimemo","download_url":"https://codeload.github.com/maimemo/SSP-MMC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maimemo%2FSSP-MMC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277644033,"owners_count":25852787,"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","status":"online","status_checked_at":"2025-09-30T02:00:09.208Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["optimal-control","research-paper","spaced-repetition","spaced-repetition-algorithm"],"created_at":"2025-09-30T07:01:04.111Z","updated_at":"2025-09-30T07:03:02.083Z","avatar_url":"https://github.com/maimemo.png","language":"Python","funding_links":[],"categories":["Related"],"sub_categories":["Algorithm"],"readme":"# SSP-MMC\n\nCopyright (c) 2022 [MaiMemo](https://www.maimemo.com/), Inc. MIT License.\n\nStochastic-Shortest-Path-Minimize-Memorization-Cost (SSP-MMC) is a spaced repetition scheduling algorithm used to help learners remember more words in MaiMemo, a language learning application in China.\n\nThis repository contains a public release of the data and code used for several experiments in the following paper (which introduces SSP-MMC):\n\n\u003e Junyao Ye, Jingyong Su, and Yilong Cao. 2022. A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling. In Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining. ACM, 4381–4390.\n\nYou can access this paper at: https://www.maimemo.com/paper/\n\nWhen using this data set and/or software, please cite this publication. A BibTeX record is:\n\n```\n@inproceedings{10.1145/3534678.3539081,\nauthor = {Ye, Junyao and Su, Jingyong and Cao, Yilong},\ntitle = {A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling},\nyear = {2022},\npublisher = {ACM},\ndoi = {10.1145/3534678.3539081},\npages = {4381–4390},\nnumpages = {10}\n}\n```\n\n# Software\n\nThe file `data_preprocessing.py` is used to preprocess data for the DHP model.\n\nThe file `cal_model_param.py` contains the DHP model and HLR model.\n\nThe file `model/utils.py` saves the parameters of the DHP model for training and simulation.\n\nThe file `algo/main.cpp` contains a Cpp implementation of SSP-MMC, which aims at finding the optimal policy.\n\nThe file `simulator.py` provides an environment for comparing different scheduling algorithms.\n\n## Workflow\n\n1. Run `data_preprocessing.py` -\u003e `halflife_for_fit.tsv`\n2. Run `cal_model_param.py` -\u003e `intercept_` and `coef_` for the DHP model\n3. Save the parameters to the function `cal_recall_halflife` and ` cal_forget_halflife` in  `model/utils.py` and the function `cal_next_recall_halflife` in `algo/main.cpp`\n4. Run `algo/main.cpp` -\u003e optimal policy in `algo/result/`\n5. Run `simulator.py` to compare the SSP-MMC with several baselines.\n\n## Data Set and Format\n\nThe dataset is available on [Dataverse](https://doi.org/10.7910/DVN/VAGUL0) (1.6 GB). This is a 7zipped TSV file containing our experiments' 220 million MaiMemo student memory behavior logs.\n\nThe columns are as follows:\n\n- `u` - student user ID who reviewed the word (anonymized)\n- `w` - spelling of the word \n\n- `i` - total times the user has reviewed the word\n- `d` - difficulty of the word\n- `t_history` - interval sequence of the historic reviews\n- `r_history` - recall sequence of the historic reviews\n- `delta_t` - time elapsed from the last review\n- `r` - result of the review\n- `p_recall` - probability of recall\n- `total_cnt` - number of users who did the same memory behavior\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaimemo%2FSSP-MMC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaimemo%2FSSP-MMC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaimemo%2FSSP-MMC/lists"}