マソソソマソソソのバリエーションを生成する
ワードサラダとマソリソマソリソが脳内で自然に融合したのできらレボ観ながら書いた。どうぞご利用ください。
例
[puma:~/masososomasososo] ec% perl maso.pl < masocorpus マンソリマリリソ [puma:~/masososomasososo] ec% perl maso.pl < masocorpus マソンソマソンソ
maso.pl
#!/usr/bin/perl use utf8; use encoding 'utf-8'; use strict; use constant { HEAD => 'マ', TOKEN_LEN => 4, }; my $maso = learn(*STDIN); print gen($maso).gen($maso)."\n"; sub learn { my $h = shift; my $model = {}; while (my $line = <$h>) { chomp $line; my @chars = split //, $line; for my $i (0..$#chars-1) { $model->{$chars[$i]}->{$chars[$i+1]} += 1 if ($chars[$i+1] ne HEAD); } } return $model; } sub gen { my $m = shift; my $seed = HEAD; my @str = ($seed); for my $i (0..TOKEN_LEN-2) { my $n = predict($m->{$seed}); push @str, $n; $seed = $n; } return join '', @str; } sub predict { my $h = shift; my @prob; while (my ($c, $r) = each %$h) { push @prob, $c for (1..$r); } die unless @prob; return $prob[int(rand(scalar @prob))] }
masocorpus
マリリンマンソン マソリンマンソン マリリソマリリソ マソリソマソソソ