update to fsrs-optimizer v5.6.0
Browse files- app.py +14 -3
- requirements.txt +1 -1
app.py
CHANGED
|
@@ -37,6 +37,8 @@ def optimizer(
|
|
| 37 |
revlog_start_date,
|
| 38 |
filter_out_suspended_cards,
|
| 39 |
requestRetention,
|
|
|
|
|
|
|
| 40 |
progress=gr.Progress(track_tqdm=True),
|
| 41 |
):
|
| 42 |
os.chdir(home_path)
|
|
@@ -50,7 +52,7 @@ def optimizer(
|
|
| 50 |
raise ValueError(
|
| 51 |
"File must be an Anki deck/collection file (.apkg or .colpkg) or a csv file."
|
| 52 |
)
|
| 53 |
-
if timezone
|
| 54 |
raise ValueError("Please select a timezone.")
|
| 55 |
now = datetime.now()
|
| 56 |
files = [
|
|
@@ -66,7 +68,7 @@ def optimizer(
|
|
| 66 |
proj_dir = Path(f"projects/{prefix}/{suffix}")
|
| 67 |
proj_dir.mkdir(parents=True, exist_ok=True)
|
| 68 |
os.chdir(proj_dir)
|
| 69 |
-
optimizer = Optimizer()
|
| 70 |
if mode == "anki":
|
| 71 |
optimizer.anki_extract(file.name, filter_out_suspended_cards)
|
| 72 |
else:
|
|
@@ -77,7 +79,7 @@ def optimizer(
|
|
| 77 |
).replace("\n", "\n\n")
|
| 78 |
optimizer.define_model()
|
| 79 |
optimizer.pretrain(verbose=False)
|
| 80 |
-
optimizer.train(verbose=False)
|
| 81 |
print(optimizer.w)
|
| 82 |
w_markdown = get_w_markdown(optimizer.w)
|
| 83 |
optimizer.predict_memory_states()
|
|
@@ -159,6 +161,13 @@ with gr.Blocks() as demo:
|
|
| 159 |
value="2006-10-05",
|
| 160 |
label="Revlog Start Date: Optimize review logs after this date.",
|
| 161 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
with gr.Row():
|
| 163 |
btn_plot = gr.Button("Optimize!")
|
| 164 |
with gr.Row():
|
|
@@ -184,6 +193,8 @@ with gr.Blocks() as demo:
|
|
| 184 |
revlog_start_date,
|
| 185 |
filter_out_suspended_cards,
|
| 186 |
requestRetention,
|
|
|
|
|
|
|
| 187 |
],
|
| 188 |
outputs=[w_output, markdown_output, plot_output, files_output],
|
| 189 |
)
|
|
|
|
| 37 |
revlog_start_date,
|
| 38 |
filter_out_suspended_cards,
|
| 39 |
requestRetention,
|
| 40 |
+
enable_short_term,
|
| 41 |
+
recency_weight,
|
| 42 |
progress=gr.Progress(track_tqdm=True),
|
| 43 |
):
|
| 44 |
os.chdir(home_path)
|
|
|
|
| 52 |
raise ValueError(
|
| 53 |
"File must be an Anki deck/collection file (.apkg or .colpkg) or a csv file."
|
| 54 |
)
|
| 55 |
+
if not timezone:
|
| 56 |
raise ValueError("Please select a timezone.")
|
| 57 |
now = datetime.now()
|
| 58 |
files = [
|
|
|
|
| 68 |
proj_dir = Path(f"projects/{prefix}/{suffix}")
|
| 69 |
proj_dir.mkdir(parents=True, exist_ok=True)
|
| 70 |
os.chdir(proj_dir)
|
| 71 |
+
optimizer = Optimizer(enable_short_term=enable_short_term)
|
| 72 |
if mode == "anki":
|
| 73 |
optimizer.anki_extract(file.name, filter_out_suspended_cards)
|
| 74 |
else:
|
|
|
|
| 79 |
).replace("\n", "\n\n")
|
| 80 |
optimizer.define_model()
|
| 81 |
optimizer.pretrain(verbose=False)
|
| 82 |
+
optimizer.train(verbose=False, recency_weight=recency_weight)
|
| 83 |
print(optimizer.w)
|
| 84 |
w_markdown = get_w_markdown(optimizer.w)
|
| 85 |
optimizer.predict_memory_states()
|
|
|
|
| 161 |
value="2006-10-05",
|
| 162 |
label="Revlog Start Date: Optimize review logs after this date.",
|
| 163 |
)
|
| 164 |
+
enable_short_term = gr.Checkbox(
|
| 165 |
+
value=True,
|
| 166 |
+
label="Enable short-term component in FSRS model",
|
| 167 |
+
)
|
| 168 |
+
recency_weight = gr.Checkbox(
|
| 169 |
+
value=True, label="Enable recency weight in training"
|
| 170 |
+
)
|
| 171 |
with gr.Row():
|
| 172 |
btn_plot = gr.Button("Optimize!")
|
| 173 |
with gr.Row():
|
|
|
|
| 193 |
revlog_start_date,
|
| 194 |
filter_out_suspended_cards,
|
| 195 |
requestRetention,
|
| 196 |
+
enable_short_term,
|
| 197 |
+
recency_weight,
|
| 198 |
],
|
| 199 |
outputs=[w_output, markdown_output, plot_output, files_output],
|
| 200 |
)
|
requirements.txt
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
FSRS-Optimizer==5.
|
|
|
|
| 1 |
+
FSRS-Optimizer==5.6.0
|