Drkcore

29 12 2006 Tweet

MeCab (和布蕪)入れた

オモシロそうなので遊んでみたが、幾つかはまった部分があった(未解決)

[を] 裏で形態素解析器を使い長い文をそのままキーとしてWeb検索する

長い文を検索キーとしてWeb検索をするというハックです。 一年前の検索会議[2005-09-30-3]で紹介しましたが、 今回ゼロから書き直しました。

辞書はutf8な環境でつかえるように

./configure --with-charset=utf8

でインストール

自分の環境で実行すると、フォームの部分だけ文字化けした(謎)

mecab

あと、名詞かどうか判定している部分で

while ($n = $n->{next}) {
    if ($n->{feature} =~ /^\xcc\xbe\xbb\xec/) { # 名詞
        my $w = $n->{surface};
        Encode::from_to($w, 'euc-jp', 'utf-8');
        $word{$w}++;
    }
}

とやっているのだが、なぜ、xccxbexbbxecでマッチさせないといけないのかよくわかってない。というか、Encodingちゃんと理解してないナァ、、、、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;
use MeCab;
use Devel::Peek;
use utf8;

my $m = new MeCab::Tagger ("");
my $word = "今朝は雨の中、U隊長とユッキー様とハナタロウと散歩した。";
my $n = $m->parseToNode($word);

while ($n = $n->{next}) {
    if ($n->{feature} =~ /^\345\220\215\350\251\236/) { # 名詞
#    if ($n->{feature} =~ /^名詞/) { # 名詞
        my $w = $n->{surface};
        print $w,"\n";
    }
}

この場合、use utf8しなければ、/^345220215350251236/でも/^名詞/でもマッチするのに、use utf8すると/^名詞/はマッチしなくなってしまう。

  • フォームが文字化け
  • 正規表現の部分がよくわからなかった。

あとで、ちゃんと調べる。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021