- Визначення зв’язків між сутностями на основі даних з Wikipedia, Freebase, DBPedia тощо для української мови.
- Визначення суб’єктивних висловлювань в текстах новин (зокрема, новин українською мовою).
- Генерація поезії. Доступні дані: сайти з віршами, словники рим тощо.
- POS-tagging для української мови. Проанотованих корпусів немає, але є граматичний словник та корпуси сирих текстів.
- Перевірка правопису для української мови. Дані можна проанотувати через LanguageTool; також схожий проект є тут.
- Автоматична генерація відповідей на запитання. Дані можна брати з Вікіпедії чи https://ukrainian.stackexchange.com (та інших SE сайтів).
(defun play-game (max-players last-marble) | |
(let ((scores (make-hash-table)) | |
(marbles (deque 0))) | |
(dotimes (marble (1+ last-marble)) | |
(case (mod (1+ marble) 23) | |
(0 (drotate marbles 7) | |
(incf (gethash (rem marble max-players) scores 0) | |
(+ 1 marble (popl marbles)))) | |
(t (drotate marbles -2) | |
(pushl (1+ marble) marbles)))) |
(set-dispatch-macro-character #\# #\M #'read-dimensional-number) | |
(set-dispatch-macro-character #\# #\I #'read-dimensional-number) | |
(defun read-dimensional-number (s c n) | |
(declare (ignore n)) | |
(let* ((prev-case (readtable-case *readtable*)) | |
(val (unwind-protect | |
(progn (setf (readtable-case *readtable*) :preserve) | |
(symbol-name (read s nil))) | |
(setf (readtable-case *readtable*) prev-case))) |
RUTILS is split into two parts: core (package rutils
) and contrib (package rutilsx
). These are aggregate packages that just re-export the symbols that are provided by the specific packages like rutils.anaphora
or rutils.list
. Overall, there are 17 parts of the core, which are described, in more detail, in this tutorial. They include (with some changes and additions) 3 facilities, which are also available from separate libraries: SPLIT-SEQUENCE, ITERATE, and ANAPHORA. Besides, it defines 2 lightweight wrapper data structures: pair
and hash-set
.
There's also the package rtl
that includes the core plus short names for a lot of basic Lisp operations.
Contrib holds "experimental" stuff (in the sense that it's not totally conventional even for me) that, gradually, migrates to core. I won't talk more about it in the tutorial: those who are interested can check on their own or ask questions.
(defclass dwim-graph () ()) | |
(defmethod cl-dot:graph-object-node ((graph (eql 'dwim-graph)) object) | |
(make-instance 'cl-dot:node | |
:attributes (list :label (format nil "~A" object) | |
:shape :circle))) | |
(defmacro dwim-graph ((file &key (directed t)) &body edges) | |
`(progn | |
(eval-when (:compile-toplevel :load-toplevel :execute) |