複合語抽出
複合語の抽出というのはid:kt-blackout:20040324でも書いたように、キーワード抽出において重要な意味を持ちます。複合語というのはわりと専門的な用語であったり、日常会話などで出にくい言葉であることが多いので、単純に複合語を抜きだすだけでも面白い結果が出ます。
しかしながら、どうやって複合語を見つければ良いでしょうか。形態素解析によって最小の大きさになった形態素のリストから、今度は複合語を見つけてやる必要があるのです。『複合語の抽出』で検索するといろいろと難しそうな論文や文章が見つかります*1。それらは複雑なアルゴリズムを利用しているようですが、正直良く分かりません。
そこで「何事も試すことが重要」の精神のもと、自分流に試してみました。それが思ったより良い結果になったので実は驚いています。そのアルゴリズムは以下の通り(アルゴリズムというほどのものではありませんが…)
- 文章データから名詞を抽出(『名詞-数』と『名詞-非自立』は排除)
- 出来たリストから二つずつ組み合わせて数え上げる。つまり『W』『X』『Y』『Z』という4つの語があるとき、『W-X』『X-Y』『Y-Z』という組み合わせになるので、同じ組み合わせがいくつあるかを数え上げる。
- 以上
ようは総当たりで数え上げているだけです。最初は『どれくらいダメな結果になるか』を見るつもりで試したのですが、意外と良かったので結果を公開します(同様の解析を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 鍵 - 配送
複合語リストと名詞リストの組み合わせからキーワード抽出を行なうようにすれば、面白くなるかもしれません。さぁ、実験、実験。