2009年12月8日火曜日

簡単テキストマイニング ExcelでKWIC (その3)

このエントリーをはてなブックマークに追加
ExcelでKWICを実現する「簡単テキストマイニング ExcelでKWIC」、「簡単テキストマイニング ExcelでKWIC(その2)」の続きとなります。KWICとは、KeyWord In Context の略で、キーワード前後の文章を抽出する技術です。

Excel KWIC

A B C D E F G
1 キーワード KWIC
2 文字数 20
3 出現位置 2
4
5 出現頻度 1st 2nd Befor KWD KWD After KWD 検索対象文章
6 2 1 51 キーワード前後の文章を抽出する技術です。 KWIC によって文脈を簡単に理解することができま KWICとは、KeyWord In Context の略で、キーワード前後の文章を抽出する技術です。KWICによって文脈を簡単に理解することができます。

前回は、F6セルのキーワードの後ろの文字列を取得するところまででした。今回は、キーワード前の文字列を取得します。

キーワード前も=mid()で文字列を切り出しますが、開始位置がキーワードのn文字分前となります。キーワードが2回目に出現した地点からB2(20文字)前は=C6-B2です。

=mid(G6,C6-$B$2,$B$2) ・・・①

しかし、上記でB2セルに60と入力すると開始位置が0以下(=52-60)でエラー(#VALUE!)となります。指定文字数(B2セル)がキーワード前の文字数よりも大きい場合は、1文字目からキーワード開始位置手前までの文字列を取得する必要があります。

=mid(G6,1,C6-1) ・・・②

このようにキーワード前の文字列が取得文字数よりも多いこと(開始位置-取得文字数>1)を確認してから、①か②を実行する必要があります。Excelでは条件分岐の=if()が利用できます。

=if(C6-$B$2>1,mid(G6,C6-$B$2,$B$2),mid(G6,1,C6-1))

次にB3セルに入力したキーワード出現位置によって開始位置を特定するために「簡単テキストマイニング ExcelでKWIC(その2)」で利用したindex()を同じ要領で利用します。

=if(index(B6:C6,$B$3)-$B$2>1,mid(G6,index(B6:C6,$B$3),$B$2),mid(G6,1,index(B6:C6,$B$3)-1))

これで完成です!

最初にも記載しましたが、今回のExcel KWICでは、文章の中でキーワードが複数回出現する場合の対応が冗長的な方法になってしまっています。今度、囓りかけたVBAを使って作成をしてみようと思いますが、Excelでも簡単にKWICが実現できるということを理解していただければ幸いです。

index()に関しては、利用例を下記に再掲しておきます。
A
B
C
D
E
1
アオリイカ
コウイカ
カミナリイカ
ジンドウイカ
ミミイカ
2
3

=index(A1:E1,2)

とすると、A1:E1までの中で2番目の内容が返ってくるので「コウイカ」となります。

=index(A1:E1,5)

は、ミミイカです。





関連記事


コメントを投稿