fixed addKnowledge
This commit is contained in:
parent
efad832771
commit
d10ab03f97
@ -20,7 +20,9 @@ my $xml = $parser->XMLin($aiml);
|
|||||||
print "xml: " . Dumper($xml) . "\n";
|
print "xml: " . Dumper($xml) . "\n";
|
||||||
|
|
||||||
|
|
||||||
our $knowledge = {};
|
my $knowledge = {};
|
||||||
|
my $star;
|
||||||
|
|
||||||
foreach my $c (@{$xml->{category}}) {
|
foreach my $c (@{$xml->{category}}) {
|
||||||
print "pattern: $c->{pattern}\n";
|
print "pattern: $c->{pattern}\n";
|
||||||
&addKnowledge($knowledge,$c->{pattern},$c->{template});
|
&addKnowledge($knowledge,$c->{pattern},$c->{template});
|
||||||
@ -38,14 +40,15 @@ while(my $input = <STDIN>) {
|
|||||||
sub findAnswer {
|
sub findAnswer {
|
||||||
my ($struct,$input) = @_;
|
my ($struct,$input) = @_;
|
||||||
my ($key,$rest) = split(/\s+/,$input,2);
|
my ($key,$rest) = split(/\s+/,$input,2);
|
||||||
$key = '*' unless($struct->{uc($key)});
|
unless($struct->{uc($key)}) {
|
||||||
|
$star = $key;
|
||||||
|
$key = '*';
|
||||||
|
}
|
||||||
if($rest) {
|
if($rest) {
|
||||||
if($struct->{uc($key)}) {
|
if($struct->{uc($key)}) {
|
||||||
&findAnswer($struct->{uc($key)},$rest);
|
&findAnswer($struct->{uc($key)},$rest);
|
||||||
} elsif($struct->{template}) {
|
} elsif($struct->{template}) {
|
||||||
return(&parseAnswer($struct));
|
return(&parseAnswer($struct));
|
||||||
} elsif($struct->{'*'}) {
|
|
||||||
&findAnswer($struct->{'*'},$rest);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return(&parseAnswer($struct->{uc($key)}));
|
return(&parseAnswer($struct->{uc($key)}));
|
||||||
@ -70,8 +73,11 @@ sub addKnowledge {
|
|||||||
my ($ref,$pattern,$template) = @_;
|
my ($ref,$pattern,$template) = @_;
|
||||||
my ($key,$rest) = split(/\s+/,$pattern,2);
|
my ($key,$rest) = split(/\s+/,$pattern,2);
|
||||||
if($rest) {
|
if($rest) {
|
||||||
|
print "addKnowledge(): $key:$rest ref=" . ref($ref) . "\n";
|
||||||
|
$ref->{uc($key)} = {} unless(exists $ref->{uc($key)});
|
||||||
&addKnowledge($ref->{uc($key)},$rest,$template);
|
&addKnowledge($ref->{uc($key)},$rest,$template);
|
||||||
} else {
|
} else {
|
||||||
|
print "addKnowledge(): $key:$template\n";
|
||||||
$ref->{uc($key)}->{template} = $template;
|
$ref->{uc($key)}->{template} = $template;
|
||||||
}
|
}
|
||||||
return(1);
|
return(1);
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
<pattern>HELLO</pattern>
|
<pattern>HELLO</pattern>
|
||||||
<template>Hi there!</template>
|
<template>Hi there!</template>
|
||||||
</category>
|
</category>
|
||||||
|
<category>
|
||||||
|
<pattern>how are you</pattern>
|
||||||
|
<template>Feelin fine, thank you!</template>
|
||||||
|
</category>
|
||||||
<category>
|
<category>
|
||||||
<pattern>*</pattern>
|
<pattern>*</pattern>
|
||||||
<template>
|
<template>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user