コーパスの加工(毎日新聞)
今回は自然言語処理の研究で行う
「コーパスの処理」
について僕が行った方法などを紹介する。
使ったデータ
研究室で購入している毎日新聞のコーパスを使用した。大体こんなかんじでタイトルや本文ごとにタグが付与されている
\T1\○○山の桜、満開
\T2\ ○月○日、○○山の桜が見ごろを迎える。・・・
\P1\
コーパスでは加工しやすいようにタグ付けや区切り文字を入れている。
これを利用してデータを使える形に加工する。
やり方
今回はT2タグが付いている本文を形態素解析器にかけ、以下の要件を達成する。
(1)形態素を出現頻度の高い順に並び替える
(2)品詞を出現頻度の高い順に並び替える
まずはT2タグが付いている本文を抽出する。
grep “\T2\” <file>
つづいてT2タグを消去する。
sed “s/\T2\//g” <file>
mecab <file>
ない 形容詞,自立,*,*,形容詞・アウオ段,基本形,ない,ナイ,ナイ
高い 形容詞,自立,*,*,形容詞・アウオ段,基本形,高い,タカイ,タカイ
高い 形容詞,自立,*,*,形容詞・アウオ段,基本形,高い,タカイ,タカイ
形態素と品詞情報はタブで区切られているため(1)を行うにはこのように書くとよい。
cut –f 1 <file>
(2)を行うには
cut –f 2 <file>|cut –d “,” –f 1
最後に出現頻度順に並び替える処理を行う。ここではsortとuniqを使って並び替えを行うが、ここで「なぜsortを2度行うか」について注意したい。uniqは連続で重複した行のみを削除するため、「うに→いか→うに」のような並びの場合「うに」は別の単語だと判断され削除されない。そのため事前にsortで並び替えておく必要がある。
sort <file>|uniq –c|sort –r –n
以上の処理で(1),(2)を達成することが出来た。最後にパイプ処理を行うことですべての作業を1行にまとめることが出来るが、メモリの関係で処理が終わらない可能性大なのであまりおすすめしない。いちおうのっけとく。
(1)grep “\T2\” <file>| sed “s/\T2\//g”|mecab|cut –f 1| sort |uniq –c|sort –r -n (2)grep “\T2\” <file>| sed “s/\T2\//g”|mecab| cut –f 2 <file>|cut –d “,” –f 1| sort |uniq –c|sort –r -n