translating human language with computer grammar
DESCRIPTION
TRANSCRIPT
![Page 1: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/1.jpg)
Translatinghuman language
with computer grammar
![Page 2: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/2.jpg)
![Page 3: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/3.jpg)
![Page 4: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/4.jpg)
![Page 5: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/5.jpg)
German — English
![Page 6: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/6.jpg)
__DATA__
Mein Name ist Andreas.
![Page 7: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/7.jpg)
__DATA__
Mein Name ist Andreas. My name is Andrew.
![Page 8: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/8.jpg)
my %dictionary = (
Mein => 'My',
Name => 'name',
ist => 'is',
Andreas => 'Andrew',
);
![Page 9: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/9.jpg)
my %dictionary = (
Mein => 'My',
Name => 'name',
ist => 'is',
Andreas => 'Andrew',
);
$text =~ s{(\w+)}{$dictionary{$1}}ge;
![Page 10: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/10.jpg)
sub Mein {return "My $_[0]"; }
sub Name {return "name $_[0]"; }
sub ist {return "is $_[0]"; }
sub Andreas {return "Andrew $_[0]";}
![Page 11: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/11.jpg)
sub Mein {return "My $_[0]"; }
sub Name {return "name $_[0]"; }
sub ist {return "is $_[0]"; }
sub Andreas {return "Andrew $_[0]";}
say eval $text;
![Page 12: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/12.jpg)
sub translate {
given ($_[0]) {
when ('Der') {return 'the' }
when ('Mein') {return 'my' }
when ('Sein') {return 'his' }
when ('Name') {return 'name' }
when ('ist') {return 'is' }
when ('Andreas') {return 'Andrew'}
}
}
![Page 13: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/13.jpg)
Grammar
![Page 14: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/14.jpg)
Grammarforefer
![Page 15: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/15.jpg)
sentence : word(s) fullstop eofile
![Page 16: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/16.jpg)
sentence : word(s) fullstop eofile
word : /\w+/
fullstop : '.'
eofile : /^\Z/
![Page 17: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/17.jpg)
sentence : word(s) fullstop eofile
word : /\w+/ {
print ::translate($item[1])
}
fullstop : '.'
eofile : /^\Z/
![Page 18: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/18.jpg)
my $text = <DATA>;
$parser =
new Parse::RecDescent ($grammar);
$parser‐>sentence($text);
![Page 19: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/19.jpg)
sentence : statement eofile
statement : subject verb object fullstop
subject : adjective noun
| article noun
| noun
object : noun
noun : 'Name'
| 'Andreas'
adjective : 'Mein'
| 'Sein'
verb : 'ist'
article : 'Die'
| 'Der'
| 'Das'
fullstop : '.'
eofile : /^\Z/
![Page 20: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/20.jpg)
Mein Name ist Andreas.
Sein Name ist Andreas.
Name ist Andreas.
Der Name ist Andreas.
![Page 21: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/21.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas.
Name ist Andreas.
Der Name ist Andreas.
![Page 22: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/22.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas. His name is Andrew.
Name ist Andreas.
Der Name ist Andreas.
![Page 23: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/23.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas. His name is Andrew.
Name ist Andreas. Name is Andrew.
Der Name ist Andreas.
![Page 24: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/24.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas. His name is Andrew.
Name ist Andreas. Name is Andrew.
Der Name ist Andreas. The name is Andrew.
![Page 25: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/25.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas. His name is Andrew.
Name ist Andreas. Name is Andrew.
Der Name ist Andreas. The name is Andrew.
Ich heiße Andreas.
![Page 26: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/26.jpg)
Mein Name ist Andreas. My name is Andrew.
Sein Name ist Andreas. His name is Andrew.
Name ist Andreas. Name is Andrew.
Der Name ist Andreas. The name is Andrew.
Ich heiße Andreas. I am called Andrew.
![Page 27: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/27.jpg)
Perl 5Perl 6RubyPythonPHPJavaC++
Parrot
![Page 28: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/28.jpg)
Perl 5Perl 6RubyPythonPHPJavaC++
Parrot
Perl 5Perl 6RubyPythonPHPJavaC++
![Page 29: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/29.jpg)
Mein Name ist Andreas.
$VAR1 = {
'object' => 'Andreas',
'person' => 3,
'subject' => 'Name',
'possession' => 'Mein',
'action' => 'be'
};
![Page 30: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/30.jpg)
Ich heiße Andreas.
$VAR1 = {
'subject' => 'Andreas',
'object' => 'Andreas',
'person' => 1,
'action' => 'name'
};
![Page 31: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/31.jpg)
say ucfirst (
($::grammar{possession}
? translate($::grammar{possession}) . ' '
: ''
)
. translate($::grammar{subject}) . ' '
. conjugation(
$::grammar{action},
$::grammar{person}
) . ' '
. translate($::grammar{object}) . '.'
);
![Page 32: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/32.jpg)
Mein Name ist Andreas.
Ich heiße Andreas.
![Page 33: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/33.jpg)
Mein Name ist Andreas. My name is Andrew.
Ich heiße Andreas.
![Page 34: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/34.jpg)
Mein Name ist Andreas. My name is Andrew.
Ich heiße Andreas. I am Andrew.
![Page 35: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/35.jpg)
![Page 36: Translating human language with computer grammar](https://reader033.vdocuments.site/reader033/viewer/2022050919/546ce99bb4af9f842c8b5288/html5/thumbnails/36.jpg)
640 pages!