OverviewFilesCommitsIssuesDocsReleasesPeers

hypercore-kb / opencog-kb / language-learning / mvp / test-parse-success.scm

64 lines · scm ref:
; test-parse-success.scm - Verify parsing works
(use-modules (opencog) (opencog exec) (opencog lg))
(use-modules (opencog persist) (opencog persist-rocks))
(use-modules (opencog matrix) (opencog learn))

; Type aliases
(define (ParseNode name) (Anchor (string-append "parse:" name)))
(define (SentenceNode name) (Anchor (string-append "sentence:" name)))
(module-define! (resolve-module '(opencog lg)) 'ParseNode ParseNode)
(module-define! (resolve-module '(opencog lg)) 'SentenceNode SentenceNode)

(display "=== MST Parsing Success Test ===\n\n")

; Load data
(display "Loading word-pair data...\n")
(define rsn (RocksStorageNode "rocks://data/pairs.rdb"))
(cog-open rsn)

(define ala (make-any-link-api))
(define aca (add-count-api ala))
(define pair-stars (add-pair-stars aca))
(pair-stars 'fetch-pairs)
(format #t "Loaded ~a edges, ~a words\n\n"
        (cog-count-atoms 'Edge)
        (length (cog-get-atoms 'WordNode)))

; Parse a sentence
(display "Parsing 'the cat sat on the mat'...\n\n")
(define result
  (cog-execute!
    (LgParseLink
      (Phrase "the cat sat on the mat")
      (LgDict "dict-pair")
      (Number 5)
      (cog-atomspace)
      rsn)))

; Count results
(define result-list (cog-value->list result))
(format #t "Number of parses: ~a\n\n" (length result-list))

; Show first parse structure
(when (> (length result-list) 0)
  (display "First parse:\n")
  (let* ((first-parse (car result-list))
         (parse-parts (cog-value->list first-parse)))
    (format #t "  Parts: ~a\n" (length parse-parts))

    ; Show the linkage (part 1)
    (when (>= (length parse-parts) 2)
      (display "\n  Linkage:\n")
      (let ((linkage (list-ref parse-parts 1)))
        (for-each
          (lambda (edge)
            (format #t "    ~a\n" edge))
          (cog-value->list linkage))))))

; Count sections created
(define sections (cog-get-atoms 'Section))
(format #t "\nSections created: ~a\n" (length sections))

(cog-close rsn)
(display "\n=== SUCCESS! ===\n")