OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-link-grammar / bindings / perl / example.pl

42 lines · pl ref:
#! /usr/bin/env perl
#
# Example usage of the low-level link-grammar perl bindings
# You should not really use this directly; a higher-level wrapper
# would be far more appropriate.
#
# Copyright (c) 2014, Linas Vepstas

use clinkgrammar;

my $ver = clinkgrammar::linkgrammar_get_version();

print "Version $ver\n";

sub prtdiag
{
    my $txt = $_[0];
    my $dict = $_[1];
    my $po = clinkgrammar::parse_options_create();

    my $sent = clinkgrammar::sentence_create($txt, $dict);
    my $num_parses = clinkgrammar::sentence_parse($sent, $po);
    $num_parses = clinkgrammar::sentence_num_valid_linkages($sent);
    print "Found $num_parses valid parses for \"$txt\":\n";

    for (my $i=0; $i<$num_parses; $i++) {
        my $linkage = clinkgrammar::linkage_create($i, $sent, $po);
        my $diagram = clinkgrammar::linkage_print_diagram($linkage, 1, 80);
        print "Parse $i:\n$diagram";
    }
}

# English, Russian and Turkish dictionaries
my $en_dict = clinkgrammar::dictionary_create_lang("en");
prtdiag("This is a test", $en_dict);

my $ru_dict = clinkgrammar::dictionary_create_lang("ru");
prtdiag("это большой тест", $ru_dict);

my $tr_dict = clinkgrammar::dictionary_create_lang("tr");
prtdiag("Onların ne istediğini bilmiyorum", $tr_dict);