いけむランド

はてダからやってきました

ふらぐったーに日本語形態素解析を導入してみた

「俺、たらちゃんなんだ。」とか「俺、たらば蟹が好きなんだ。」とか正規表現にマッチする不思議な発言で釣られることが最近急増してきていたので、思い切ってきちんとフラグっぽい発言になっているかどうかをチェックする処理を実装してみた。


最初は MeCab を使おうと考えていたが、インストールが面倒だったため、WebAPI で使える Yahoo!デベロッパーネットワーク の日本語形態素解析を使うことにした。


使い方は簡単で

  1. Yahoo! JAPAN ID を登録する。
  2. アプリケーション ID を発行してもらう。
  3. 以下のパラメータを指定して POST する。
    1. アプリケーション ID
    2. 解析させたい文字列
    3. オプション

だけである。


例えば「俺、この戦争が終わったら、結婚するんだ」という文字列を解析させると、以下のような XML が返却される。

<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd">
    <ma_result>
        <total_count>12</total_count><filtered_count>12</filtered_count>
        <word_list>
            <word>
                <surface></surface><reading>おれ</reading><pos>名詞</pos>
            </word>
            <word>
                <surface></surface><reading></reading><pos>特殊</pos>
            </word>
            <word>
                <surface>この</surface><reading>この</reading><pos>連体詞</pos>
            </word>
            <word>
                <surface>戦争</surface><reading>せんそう</reading><pos>名詞</pos>
            </word>
            <word>
                <surface></surface><reading></reading><pos>助詞</pos>
            </word>
            <word>
                <surface>終わっ</surface><reading>おわっ</reading><pos>動詞</pos>
            </word>
            <word>
                <surface>たら</surface><reading>たら</reading><pos>助動詞</pos>
            </word>
            <word>
                <surface></surface><reading></reading><pos>特殊</pos>
            </word>
            <word>
                <surface>結婚</surface><reading>けっこん</reading><pos>名詞</pos>
            </word>
            <word>
                <surface>する</surface><reading>する</reading><pos>助動詞</pos>
            </word>
            <word>
                <surface></surface><reading></reading><pos>助詞</pos>
            </word>
            <word>
                <surface></surface><reading></reading><pos>助動詞</pos>
            </word>
        </word_list>
    </ma_result>
</ResultSet>


今回の実装でチェックするようにしたのは以下の 2 点である。

  1. 条件となる「〜たら」
    • 「たら」は「助動詞」である。
  2. 末尾の「〜んだ」
    • 「ん」は「助詞」
    • 「だ」は「助動詞」
    • 「〜」は「動詞」または「助動詞」である。

特に「〜たら」のチェックは「たらば蟹」などの名詞を取り除けるため、誤爆の可能性が大幅に減ると考えられる。


ただし、不評なら止めます。w