[124] | 1 | ;;; |
---|
| 2 | ;;; cabocha wrapper |
---|
| 3 | ;;; |
---|
| 4 | ;;; 2009.3.22 by naoya_t |
---|
| 5 | ;;; |
---|
| 6 | |
---|
| 7 | (use srfi-1) |
---|
| 8 | (use cabocha) |
---|
| 9 | |
---|
| 10 | ;;; lib |
---|
| 11 | (define (vector-range vec from size) |
---|
| 12 | (let1 vec* (make-vector size) |
---|
| 13 | (dotimes (i size) |
---|
| 14 | (vector-set! vec* i (vector-ref vec (+ from i)))) |
---|
| 15 | vec*)) |
---|
| 16 | |
---|
| 17 | ;;; cabocha token/chunk -> sexp |
---|
| 18 | (define (cabocha-token->sexp tok) |
---|
| 19 | `(cabocha-token ,(cabocha-token-normalized-surface tok) |
---|
| 20 | ,(cabocha-token-feature-list tok) |
---|
| 21 | )) |
---|
| 22 | |
---|
| 23 | (define (token-surface token) (second token)) |
---|
| 24 | (define (token-feature token) (third token)) |
---|
| 25 | |
---|
| 26 | (define (cabocha-chunk->sexp i ch tokens) |
---|
| 27 | (let* ([token-pos (cabocha-chunk-token-pos ch)] |
---|
| 28 | [token-size (cabocha-chunk-token-size ch)] |
---|
| 29 | [tokens-in-chunk (vector-range tokens token-pos token-size)] |
---|
| 30 | [token-head-pos (cabocha-chunk-head-pos ch)] |
---|
| 31 | [token-func-pos (cabocha-chunk-func-pos ch)]) |
---|
| 32 | `(cabocha-chunk ,i |
---|
| 33 | ,(cabocha-chunk-link ch) |
---|
| 34 | ,tokens-in-chunk |
---|
| 35 | ,token-head-pos |
---|
| 36 | ,token-func-pos |
---|
| 37 | ,(cabocha-chunk-score ch) |
---|
| 38 | ))) |
---|
| 39 | |
---|
| 40 | #| |
---|
| 41 | (define (cabocha-tree-chunk-list t) |
---|
| 42 | (let loop ([i (- (cabocha-tree-chunk-size t) 1)] [lis '()]) |
---|
| 43 | (if (< i 0) lis |
---|
| 44 | (loop (- i 1) |
---|
| 45 | (cons (cabocha-chunk->sexp i (cabocha-tree-chunk t i)) lis) )))) |
---|
| 46 | |
---|
| 47 | (define (cabocha-tree-token-list t) |
---|
| 48 | (let loop ([i (- (cabocha-tree-token-size t) 1)] [lis '()]) |
---|
| 49 | (if (< i 0) lis |
---|
| 50 | (loop (- i 1) |
---|
| 51 | (cons (cabocha-token->sexp (cabocha-tree-token t i)) lis) )))) |
---|
| 52 | |# |
---|
| 53 | |
---|
| 54 | (define (cabocha-tree-chunks t) ;vec |
---|
| 55 | (let* ([tokens (cabocha-tree-tokens t)] |
---|
| 56 | [chunk-size (cabocha-tree-chunk-size t)] |
---|
| 57 | [vec (make-vector chunk-size)]) |
---|
| 58 | (dotimes (i chunk-size) |
---|
| 59 | (vector-set! vec i (cabocha-chunk->sexp i (cabocha-tree-chunk t i) tokens) )) |
---|
| 60 | vec)) |
---|
| 61 | (define (cabocha-tree-chunk-list t) ;list |
---|
| 62 | (let ([tokens (cabocha-tree-tokens t)] |
---|
| 63 | [chunk-size (cabocha-tree-chunk-size t)]) |
---|
| 64 | (map (lambda (i) (cabocha-chunk->sexp i (cabocha-tree-chunk t i) tokens)) |
---|
| 65 | (iota chunk-size)))) |
---|
| 66 | |
---|
| 67 | (define (cabocha-tree-tokens t) |
---|
| 68 | (let* ([token-size (cabocha-tree-token-size t)] |
---|
| 69 | [vec (make-vector token-size)]) |
---|
| 70 | (dotimes (i token-size) |
---|
| 71 | (vector-set! vec i (cabocha-token->sexp (cabocha-tree-token t i)) )) |
---|
| 72 | vec)) |
---|
| 73 | (define (cabocha-tree-token-list t) |
---|
| 74 | (let1 token-size (cabocha-tree-token-size t) |
---|
| 75 | (map (lambda (i) (cabocha-token->sexp (cabocha-tree-token t i))) |
---|
| 76 | (iota token-size)))) |
---|