training.scm 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. (library (training)
  2. (export display-word
  3. display-solution
  4. train)
  5. (import (except (rnrs base)
  6. vector-map
  7. vector-for-each)
  8. (only (guile)
  9. lambda* λ
  10. ;; control structures
  11. when
  12. ;; output
  13. display
  14. simple-format
  15. ;; strings
  16. string-join)
  17. (alist-utils)
  18. (prefix (io) io:)
  19. (model))
  20. (define display-word
  21. (lambda* (word #:key (confirm #t))
  22. (display
  23. (simple-format
  24. #f "~a"
  25. (string-join (vector->list (alist-refs word '("translation-data" "native")))
  26. ", ")))
  27. (when confirm (io:read-line))))
  28. (define display-solution
  29. (lambda* (word #:key (confirm #t))
  30. (display
  31. (simple-format
  32. #f "phonetic script: ~a\n"
  33. (alist-refs word '("translation-data" "phonetic-script"))))
  34. (display
  35. (simple-format
  36. #f "simplified: ~a\n"
  37. (alist-refs word '("translation-data" "simplified"))))
  38. (display
  39. (simple-format
  40. #f "usage:\n ~a\n"
  41. (string-join (vector->list (alist-refs word '("metadata" "usage-examples")))
  42. "\n ")))
  43. (when confirm (io:read-line))))
  44. (define train
  45. (λ (vocabulary)
  46. (let* ([words (vocabulary-words vocabulary)]
  47. [num-words (vector-length words)])
  48. (let iter ([index° 0])
  49. (cond
  50. [(= index° num-words)
  51. (display (simple-format #f "training finised\n"))]
  52. [else
  53. (let ([word (vector-ref words index°)])
  54. (display-word word)
  55. (display-solution word)
  56. (display (simple-format #f "---\n"))
  57. (iter (+ index° 1)))]))))))