12642b8cc8deda8c511700a540ae0bcd9553e58d
[chise/concord-kanbun.git] / concord-kanbun-dump.el
1 (defun concord-kanbun-corpus-insert-morpheme (morpheme)
2   (let ((entry (concord-object-get morpheme '->entry@morpheme))
3         (word-class (concord-object-get morpheme '->word-class))
4         (canonical-form (concord-object-get
5                          morpheme '->entry@morpheme/canonical))
6         (ja-form (concord-object-get morpheme 'ja-form))
7         (ja-kana (concord-object-get morpheme 'ja-kana))
8         (ja-conj-type (concord-object-get morpheme 'ja-conjugation-type)))
9     (when entry
10       (setq entry (concord-object-get (car entry) '=name)))
11     (when word-class
12       (setq word-class
13             (split-string
14              (concord-object-get (car word-class) '=name)
15              ",")))
16     (setq canonical-form
17           (if canonical-form
18               (concord-object-get (car canonical-form) '=name)
19             entry))
20     (insert
21      (format "%s\t%s,%s,%s,%s,*,*,%s,%s,%s,%s\n"
22              (or entry "*")
23              (or (car word-class) "*")
24              (or (nth 1 word-class) "*")
25              (or (nth 2 word-class) "*")
26              (or (nth 3 word-class) "*")
27              (or canonical-form "*")
28              ja-form ja-kana ja-conj-type))))
29
30 (defun concord-kanbun-dump-file (source dest-dir)
31   (with-temp-buffer
32     (let ((coding-system-for-write 'utf-8-jp-er)
33           (i 1)
34           s-obj morphemes)
35       (while (setq s-obj (concord-decode-object
36                           '=id (intern (format "%s/%s" source i))
37                           'sentence@zh-classical))
38         (when (setq morphemes (concord-object-get s-obj '->morphemes))
39           (dolist (morpheme morphemes)
40             (concord-kanbun-corpus-insert-morpheme morpheme))
41           (insert "EOS\n"))
42         (setq i (1+ i)))
43       (write-region (point-min)(point-max)
44                     (expand-file-name source dest-dir)))))