文章データのコンピュータ・コーディング
プログラムとその応用
- 田中 重人(大阪大学人間科学研究科社会学専攻)
- (tsigeto(AT)nik.sal.tohoku.ac.jp)
- 太郎丸 博 (当時大阪大学人間科学部; 現在光華女子大学)
- (taro@koka.ac.jp)
- 1 コーディング概論
- ○ コーディングとコード
- ○ 文字列検索による自動コーディング
- ○ 回避文字列
- 2 Autocode.awk
- ○ 文章ファイル
- ○ ルールファイルの処理
- ○ Autocode.awk の挙動
- 3 応用例
- 文献
- 図表
- autocode.awk スクリプト,awk に関する情報
ここに紹介するのは、文章データのコーディングのためのコンピュータ・プログラムである。
- テキスト・ファイル中の文字列を検索し、該当/非該当のコードを割り当てる
- 文字列の前後につく回避文字列を指定できる
- 複数のフィールドからなるデータ構造をあつかえる
- コードルールの確認・修正のため、該当文字列とその前後を出力する
- 正規表現が使える
- Awk スクリプトなので、UNIX, Macintosh, DOS など、いろんな OS で動く
- 文章の長さの制限がない(ただ機械の性能には依存する)
最初の2点は佐藤 [3] の AUTOCODE とおなじ機能。
3項め以降が今回の改善点だ。
プログラムの仕様と使いかたを概観したあと、実際のデータによる分析例をお目にかける。
○ コーディングとコード
本稿で「コーディング」というのは、
ある文章が特定の「事柄」に言及しているか否かを 1/0 の2値変数であらわす作業のことだ。
こうして割り当てた変数値を「コード」と呼ぶ。
表1は読売新聞「人生案内」のデータ例である。
このデータは掲載年月日, 相談者性別, ... などの10個の欄(fields)からなる。
表1の「相談内容」では、
[親] [健康] などの事柄への言及がある、と考えることができる。
一方、人々の悩みの多くを占めているであろう
[経済] [仕事] [異性] などについては、この相談は言及していない。
――このように、研究者の関心に応じて「事柄」を設定し、
それぞれについての言及の有無を 1/0 の2値変数に割り当てればいい。
○ 文字列検索による自動コーディング
コーディングのいちばん簡単なやりかたは、人間が文章を実際に読んで判断することだ。
だがこのやりかただと、コーディングの手続きがはっきりしない。
各コードが何を測定したものなのかが明確でない。
そして分析手続きが不明確である以上、分析結果の再現性も保証されない。
コンピュータを使った自動コーディングは、この問題の解決をめざして開発された手法だ。
分析者は、コーディングの手続きを「ルールファイル」にあらかじめ書いておく。
こうして指定した手続きにしたがって、コンピュータが文章データにコードを自動的に割り当て、
結果を「コード出力ファイル」に書き出す。
――こういう手法をとることによって、分析の手続きをはっきりと示せるようになった。
さらにこの手法には、多人数の共同作業でもコーディング基準を統一できる、
試行錯誤を通じてコーディングルールを進化させやすいなどの利点もある。
人間が文章を読んでコーディングする場合、
特定の文字列が文章中にあらわれるかどうかを基準としていることが多い。
コンピュータによる自動コーディングでも、基本的な考えかたはおなじだ。
ひとつの「事柄」について何種類かの文字列を用意しておき、それらの文字列群のうちすくなくともひとつが
当該文章中に出てくる場合に、その事柄が言及されたとみなすのである。
ある [コード] について用意した n 個の文字列を、
文字列1,文字列2, ..., 文字列 n のようにあらわすものとすると、このコーディングルールは
つぎのようになる。
[コード]=(「文字列1」 or 「文字列2」 or ... or 「文字列 n」)
ただし「文字列」は文章中にその文字列が見つかったことを示す。
○ 回避文字列
特定の文字列を、特定の事柄について言及したものとみなせるかどうかは、文脈次第である。
「父」という文字列を例にとろう。
この文字列は確かに、[父親] という事柄に言及したものであることが多いだろう。
だがたとえば「秩」という文字につづいて「父」が出てくる場合、この「父」は [父親]
の意味ではなく、たぶん地名の一部である。
また「父」の後に「帰る」という文字列がつづいている場合、言及されているのは小説の表題かもしれない。
このような非該当ケースまでを混同してコードしてしまわないため、
自動コーディングの手続きに制限事項を加える。
検索文字列が文章中に見つかった場合でも、その前または後に特定の文字列がつながっている場合は
無視する、という条件を加えるのだ。
この例外条件となる特定の文字列(群)を「前回避文字列」「後回避文字列」という。
[目次] [図表] [文献]
[1章] [2章] [3章]
以上のような手続きによるコーディング用プログラムとして、
佐藤裕
による AUTOCODE がある(DOSパソコンで稼動)。
これと同等の機能を果たす awk スクリプトにさらに拡張をくわえたものが autocode.awk である。
Autocode.awk を動かすには、
分析対象となる文章データを書き込んだ「文章ファイル」,
コーディングの規則を書き込んだ「ルールファイル」
のふたつのファイルが要る。
Autocode.awk はまずルールファイルからコーディング規則を読み込み、それにしたがって
文章ファイルのデータをコーディングし、結果をコード出力ファイルに書き出す。
○ 文章ファイル
文章ファイルはつぎの規則で書く。
- 空行(なにも書いていない行)を1件ごとのデータの区切り(record separater)とする
- 改行を欄の区切り(field separater)とする
○ ルールファイルの処理
Autocode.awk はルールファイル(図1参照)を1行ずつ読み込み、つぎの規則にしたがって解釈していく。
- “;” 文字から改行まではコメントとみなし、無視する
- 行頭および行末(またはコメントの直前まで)のスペース,タブの連続は無視する
- “#” からはじまる行は、特殊な指示をあらわすものとみなす
- “#infile” ではじまる行は、文章ファイル名
- “#outfile” ではじまる行は、コード出力ファイル名
- “#id” ではじまる行は、ID記入欄の番号
- “#field” は、検索対象欄の番号(複数指定可)
- “[” ではじまる行は、コードの定義
- “<” ではじまる行は、前回避文字列(直前で指示した検索文字列に対応する)
- “>” ではじまる行は、後回避文字列(直前で指示した検索文字列に対応する)
- それ以外の行で、空白でないものは、検索文字列の指示
検索文字列と回避文字列には awk の正規表現が使える。
たとえば “社会.*学”という検索文字列には「社会学」「社会科学」「社会生物学」などが該当する。
また “[ウヴ]ェーバー” や “デュルケ[ーイ]?ム” のような指定ができる。
○ Autocode.awk の挙動
Autocode.awk を起動すると、 図2のようなメッセージが表示されていく。
処理が終わると、コード結果の出力ファイルが書き出されているはずだ。
出力ファイルでは、1行が1件分のコーディング結果をあらわす。
ID と各コードの割り当て結果(1または0)が空白で区切られて並ぶ
(図2の “Output design ...” 参照)。
図2の出力画面の “Matched cases ...” 以下の部分は、
コードと文章との対応関係を確認するためのものだ。
ルールファイルで指定した検索文字列が文章中に見つかるたび、
ID,欄番号,該当コード,文章中の該当部分(角括弧で囲む)とその前後
が画面に表示される。
[目次] [図表] [文献] [1章] [2章] [3章]
当日提示する。
- 読売新聞「人生案内」。
- 佐藤 裕、1992「自由回答のコンピュータコーディング」『第14回数理社会学会大会報告要旨集』。
- 佐藤 裕、1992「自由回答自動コーディングプログラム AUTOCODE Ver.1.21 使用マニュアル」。
- 佐藤 裕、1993「部落問題に関する「表現」の構造」『解放社会学研究』7: 63--86。
- 太郎丸 博、1995「転職による転機と当事者の解釈過程」『年報 人間科学』16: 57--73。
- A. Aho + B. Kernighan + P. Weinberger、1989『プログラミング言語awk』トッパン。
- 志村 拓 + 鷲北 賢 + 西村 克信、1993『Awkを256倍使うための本』アスキー。
- 西村 賢、1995「正規表現の自由」『アスキー』220(19-10): 421--428。
[目次] [図表] [文献] [1章] [2章] [3章]
この論文は、第22回数理社会学会大会報告要旨集に掲載されているものです。
ご意見・ご批判をいただければ幸いです。
なお、論文および図表の全部または一部を著者の許可なく転載・配布することを禁じます。
autocode.awk スクリプト,awk に関する情報
田中 重人 (tsigeto(AT)nik.sal.tohoku.ac.jp)
太郎丸 博 (taro@koka.ac.jp)
Last Updated 2001-08-11.