複合語抽出

複合語の抽出というのはid:kt-blackout:20040324でも書いたように、キーワード抽出において重要な意味を持ちます。複合語というのはわりと専門的な用語であったり、日常会話などで出にくい言葉であることが多いので、単純に複合語を抜きだすだけでも面白い結果が出ます。

しかしながら、どうやって複合語を見つければ良いでしょうか。形態素解析によって最小の大きさになった形態素のリストから、今度は複合語を見つけてやる必要があるのです。『複合語の抽出』で検索するといろいろと難しそうな論文や文章が見つかります*1。それらは複雑なアルゴリズムを利用しているようですが、正直良く分かりません。

そこで「何事も試すことが重要」の精神のもと、自分流に試してみました。それが思ったより良い結果になったので実は驚いています。そのアルゴリズムは以下の通り(アルゴリズムというほどのものではありませんが…)

  1. 文章データから名詞を抽出(『名詞-数』と『名詞-非自立』は排除)
  2. 出来たリストから二つずつ組み合わせて数え上げる。つまり『W』『X』『Y』『Z』という4つの語があるとき、『W-X』『X-Y』『Y-Z』という組み合わせになるので、同じ組み合わせがいくつあるかを数え上げる。
  3. 以上

ようは総当たりで数え上げているだけです。最初は『どれくらいダメな結果になるか』を見るつもりで試したのですが、意外と良かったので結果を公開します(同様の解析をid:alpinixさんとid:shi_moさんのログに対しても行いました。それらの結果は http://members.jcom.home.ne.jp/j-klein/text/index.html を参照してください)。

http://members.jcom.home.ne.jp/j-klein/text/jklein/hukugou-list.txt

以下はトップ26位を抜きだしたものです。驚いたのは複合語としての精度の高さと、キーワード抽出としての精度の高さです。例えばこの上位26個のデータのうち明らかな抽出ミスは『人 - 人』と『的 - 内容』のみです*2。さらに上記URLのページを見ると精度の高さに驚きます。しかも出てきた複合語自体を私の日記の内容を示すキーワードとしても問題ありません。名詞の出現回数を見るよりも、これらの複合語を見る方が断然良いように思えます。

     96 本 - 読了               23 個人 - 的          
     72 脆弱 - 性               22 ソース - コード            
     50 お - 勧め               22 セキュリティ - ホール 
     48 オーバー - フロー       21 可能 - 性          
     44 暗号 - 化               20 整理 - 法          
     34 ユーザ - 名             20 従業 - 員          
     29 基本 - 的               20 一般 - 的          
     28 文字 - コード           20 ファイア - ウォール   
     28 的 - 内容               18 コード - 変換              
     28 プロ - キシ             16 設定 - ファイル            
     27 解析 - 結果             16 オープン - ソース     
     26 管理 - 者               15 人 - 人                    
     25 バッファ - オーバー     15 鍵 - 配送          

複合語リストと名詞リストの組み合わせからキーワード抽出を行なうようにすれば、面白くなるかもしれません。さぁ、実験、実験。

*1:おもしろそうな論文の多くは情報処理学会の会員しか読めなかったりします。最近本気で会員になりたいと思うのですが…

*2:『バッファ - オーバー』という語はありませんが、これは『バッファ - オーバー - フロー』という三つの語の複合語になるため、抽出ミスとはしません。