Home > Archives > 2008年01月 > JavaScriptで簡易形態素解析

JavaScriptで簡易形態素解析

JavaScriptで簡易形態素解析

JavaScriptで簡易形態素解析 - mayokara lab

形態素解析もどきを改良してみた - エブログ

ボキャブラリ解析ツール - モナドの方へ

ちょっと改造してみた。

コード

var parse = function(str){
    if (typeof(str) != "string") {
        return;
    }
    var re = /([一-龠][ぁ-ん]|[一-龠々〆ヵヶ]+|[ぁ-んー~]+|[ァ-ヴー~]+|[0-9A-Za-z]+|[0-9A-Za-z]+|[,.,.、。・…!?!?]+|[()()「」『』【】“”]|[  ]+)/g;
    var re_particle = /((について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|では|は|で|を|[こそあど]?の|が|に|へ|と|て|も)*)(について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|では|は|で|を|[こそあど]?の|が|に|へ|と|て|も)/g;
    var array = str.replace(re_particle, "$1<<>>$3<<>>").split("<<>>");
    var result = [];
    var i = 0, ilength = array.length, token = null;
    var j = 0, jlength = 0;
    for (i=0; i<ilength; i++) {
        token = array[i].match(re);
        if (token) {
            jlength = token.length;
            for (j=0; j<jlength; j++) {
                result.push(token[j]);
            }
        }
    }
    return result;
};

変更点

  • 「漢字1字+ひらがな1字」のパターンを追加
    • 「話だ」のようなミスも増えるけど、「増え|る」のように語幹が切り出せるのは大きいと判断。
  • ひらがな・カタカナ群に「ー」と「~」を追加
  • 句読点の種類を追加
  • 「・」「…」を追加
  • 括弧の種類を追加
  • 括弧を連続指定から除外
    • 「、|『」のように分割させるため。
  • 助詞「でなければ」を削除
  • 助詞「って」を削除
    • 「笑っ|て」のように分割させるため。
  • 助詞「も」を追加
  • 「[こそあど]の」を追加
    • 「こ|の」のように分割されることを防ぐため。
  • 助詞の前でも区切るようにした
  • 助詞扱いの単語が2つ以上並ぶときは最後だけ助詞扱いする(「ボキャブラリ解析」より拝借)

テスト

順にオリジナル版、改造版、MeCab(IPA辞書)。


  1. 「吾輩は猫である。名前はまだ無い。」
    1. 「吾輩|は|猫|で|ある|。|名前|は|まだ|無|い|。」
    2. 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
    3. 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
  2. 「私は、その男の写真を三葉、見たことがある。」
    1. 「私|は|、|その|男|の|写真|を|三葉|、|見|たこと|が|ある|。」
    2. 「私|は|、|その|男|の|写真|を|三葉|、|見た|こと|が|ある|。」
    3. 「私|は|、|その|男|の|写真|を|三|葉|、|見|た|こと|が|ある|。」
  3. 「私の執事をやらないか?」
    1. 「私|の|執事|を|やら|ないか|?」
    2. 「私|の|執事|を|やらないか|?」
    3. 「私|の|執事|を|やら|ない|か|?」
  4. 「サンタクロースをいつまで信じていたかなんてことはたわいもない世間話にもならないくらいのどうでもいいような話だが、それでも俺がいつまでサンタなどという想像上の赤服じーさんを信じていたかと言うとこれは確信を持って言えるが最初から信じてなどいなかった。」
    1. 「サンタクロース|を|いつまで|信|じて|いたか|なんて|こと|は|たわいも|ない|世間話|に|も|ならないくらい|の|どうでも|いいような|話|だが|、|それでも|俺|が|いつまで|サンタ|など|と|いう|想像上|の|赤服|じ|ー|さんを|信|じて|いたか|と|言|うと|これは|確信|を|持|って|言|えるが|最初|から|信|じて|など|いなか|った|。」
    2. 「サンタクロース|を|いつ|まで|信じ|て|いたかなん|て|こと|は|たわい|も|ない|世間話|にも|なら|ないくらい|の|どうで|も|いいような|話だ|が|、|それで|も|俺|が|いつ|まで|サンタ|など|と|いう|想像上|の|赤服|じーさん|を|信じ|て|いたか|と|言う|と|これ|は|確信|を|持っ|て|言え|る|が|最初|から|信じ|て|など|いなかった|。」
    3. 「サンタクロース|を|いつ|まで|信じ|て|い|た|か|なんて|こと|は|たわい|も|ない|世間|話|に|も|なら|ない|くらい|の|どう|でも|いい|よう|な|話|だ|が|、|それでも|俺|が|いつ|まで|サンタ|など|という|想像|上|の|赤|服|じ|ーさんを|信じ|て|い|た|か|と|言う|と|これ|は|確信|を|持っ|て|言える|が|最初|から|信じ|て|など|い|なかっ|た|。」

追記

JSで簡易形態素解析 その2 - mayokara memo

改良版を作りました。

このエントリで示したコードは未定義語(「&」や「+」、半角カナなど)をスキップしてしまう問題があるので、改良版のほうが大分オススメです。

このエントリに示したコードをご利用の際はご注意ください。

Comment: 0

Attention
コメントの受け付けは終了しました。

Trackback: 0

Attention
トラックバックの受け付けは終了しました。

Home > Archives > 2008年01月 > JavaScriptで簡易形態素解析

Feeds
Counter
  • Counter

    since 2008.01.11

Page Top