カレントディレクトリ直下のユーザー辞書をPerlから使えずにおります
macのコンソール上でmecabによる分かち書きを試しています。
macOS Monterey (12.6.3)
bash-3.2
Perl(v5.36.0)
発生している問題・エラー
①
bash-3.2$ echo "シュレディンガーの猫とルシャトリエの原理" | mecab
(出力結果)
シュレディンガー 名詞,一般,,,,,*
の 助詞,連体化,,,,,の,ノ,ノ
猫 名詞,一般,,,,,猫,ネコ,ネコ
と 助詞,並立助詞,,,,,と,ト,ト
ルシャトリエ 名詞,一般,,,,,*
の 助詞,連体化,,,,,の,ノ,ノ
原理 名詞,一般,,,,,原理,ゲンリ,ゲンリ
EOS
②
bash-3.2$ echo "シュレディンガーの猫とルシャトリエの原理" | mecab -u ./user.dic
(出力結果)
シュレディンガー 名詞,一般,,,,,*
の 助詞,連体化,,,,,の,ノ,ノ
猫 名詞,一般,,,,,猫,ネコ,ネコ
と 助詞,並立助詞,,,,,と,ト,ト
ルシャトリエの原理 名詞,一般,,,,,ルシャトリエの原理
EOS
①で分かれていた「ルシャトリエの原理」が、②では1語として扱われましたから、カレントディレクトリ直下のuser.dicは正常に読み込まれている様子です。
③ 以下のPerlプログラムでは
Text::MeCab::Node=SCALAR(0x7f92fa80d278)
というエラーが出ていますが、①と同じ分かち書きがなされています。
#!/usr/bin/perl
use strict;
use warnings;
use Text::MeCab;
my $txt1 = "シュレディンガーの猫とルシャトリエの原理";
sub main{
my $mecab = Text::MeCab->new();
my $node = $mecab->parse($txt1);
print "$node\n";
my $count = -1;
while (defined($node)) {
my $surface = $node->surface // '';
my $feature = $node->feature;
print "$surface\n";
$node = $node->next;
$count++;
}
}
main();
bash-3.2$ perl mecab-test.pl
(出力結果)
Text::MeCab::Node=SCALAR(0x7f92fa80d278)
シュレディンガー
の
猫
と
ルシャトリエ
の
原理
④ 以下のPerlプログラムでは、③のものから辞書の指定のみ変更を施しました。
「my $mecab = Text::MeCab->new(-u './user.dic');」
エラーが出て、カレントディレクトリ直下の辞書を使えていない様子です。この原因がわからず、手をつかねております。
ご経験をお持ちの方々にアドバイスを賜われましたら、幸甚です。
#!/usr/bin/perl
use strict;
use warnings;
use Text::MeCab;
my $txt1 = "シュレディンガーの猫とルシャトリエの原理";
sub main{
my $mecab = Text::MeCab->new(-u './user.dic');
my $node = $mecab->parse($txt1);
print "$node\n";
my $count = -1;
while (defined($node)) {
my $surface = $node->surface // '';
my $feature = $node->feature;
print "$surface\n";
$node = $node->next;
$count++;
}
}
main();
bash-3.2$ perl mecab-test.pl
(出力結果)
Odd number of elements in hash assignment at /usr/local/opt/perl/lib/perl5/site_perl/5.36/darwin-thread-multi-2level/Text/MeCab.pm line 49.
Use of uninitialized value $value in join or string at /usr/local/opt/perl/lib/perl5/site_perl/5.36/darwin-thread-multi-2level/Text/MeCab.pm line 60.
Text::MeCab::Node=SCALAR(0x7fab4700d260)
シュレディンガー
の
猫
と
ルシャトリエ
の
原理