CasualConc でのコンテクストタグは、書き言葉コーパスのチャプター、セクション、ムーブなどの区切りや、話し言葉コーパスの場面、発話 (話者) などをマーキングした XML タイプのタグを想定しています。
例えば、学術論文コーパスであれば、intro、method、result、discussion などのセクションが <intro>...</intro> のように、XML タイプのタグでマーキングされていたり、話し言葉コーパスであれば、<u who="John" gender="male">...</u> などのように、発話が属性情報などと共に XML タイプのタグでマーキングされているようなテキストで、タグのラベルや属性を利用して、該当部分のみを分析・集計に利用したり、該当部分を分析・集計から排除したりするための機能です。
コンテクストタグを利用したセクションテキストの抽出など、このページで説明している機能は、ファイルモードでのみ機能します。データベースモードでは、データベース作成時にここでの設定を反映させることはできますが、データベースからのテキストの読み込みは別の処理で行なっているため、コンテクストタグを利用したり、文字列でファイルを選別したりする処理は行えません。
コンテクストタグのオン・オフは、メインウィンドウ左上の C タグボタンで行います。ボタンが押された状態になっていると、薄く色づきます。
タグの設定は、タグ設定ボタンをクリックして表示される、タグ設定パネルで行います。
タグ設定パネルが表示されたら、タグ処理するにチェックを入れて設定を行います。
処理タイプ:正規表現 (Regex) を利用した処理と XML で XPath を利用した処理が選択できます。
プレビューに適用:ファイルビューでファイルの中身をプレビューする際にもコンテクストタグ設定が適用されます。
指定タグまで無視 (Regex のみ):ファイルのテキストの先頭から指定した文字列までを削除してからタグ設定の処理を行います。これは、ファイルにファイル情報などがヘッダとして存在している場合を想定しています。例えば <info>...</info> でファイルの情報が記録されている場合は、これにチェックを入れて </info> と入力すると、ファイルの先頭から </info> までのテキストが削除され、その後にコンテクストタグの処理を行った上で検索・集計が行われます。
指定したタグを正規表現を利用して処理するモードです。ここでの設定を読み込んだファイルに適用するには、処理するにチェックを入れます。
タグリストにタグを追加するには、右下の追加ボタンをクリックします。
R:これにチェックを入れるとタグの指定が正規表現で行えます。
使用/無視:タグでマーキングされた部分を使用するか無視するかを選択します。使用を選択すると、その部分が抽出されて検索・集計処理が行われます。無視を選択すると、その部分がテキストから削除されて検索・集計処理が行われます。
タグタイプ:単純なラベルだけのタグ (<*>) もしくは属性付きのタグ (<* **="***"> / <* **='***'>) が選択できます。属性付きのタグは、属性の値を二重引用符か一重引用符のどちらで囲んであるかを指定します。
タグ:リストにタグを追加したら、ダブルクリック指定タグのテキストを入力します。複数のタグを指定する場合は、コンマ (,) で区切って指定できます。例えば、<intro> ... </intro> と <method> ... </method> の部分を指定したい場合は、intro,method と入力します。
属性付きのタグの場合は、タグラベル (*)、属性ラベル (**)、属性の値 (***) を :: で区切って入力します。例えば、<sp gender="male"> ... </sp> の部分を指定する場合は、sp::gender::male と指定します。属性がついていてもタグラベルだけで指定したい場合は <*> を選びます。
絶対位置:これにチェックが入っていると、削除された部分はその部分の長さと同じだけの半角スペースと置換されて処理されます。これによって、ファイルの中で出現する文字列の位置が元々の位置のまま記録されます。チェックが入っていないと、使用を選択している場合は、抽出された部分が改行コード 2 つで結合されたテキスト、無視の場合はその部分が単純に削除されたテキストで検索・集計処理が行われます。
テキスト全体を使いたいけれども XML タイプのタグを削除したい場合や、XML タイプのタグが付いたセクションなどを抽出した後にタグを削除したい場合、_TAG タイプの POS タグが付いたテキストから POS タグを削除して処理したい場合などはここで設定します。
リストにタグを追加するには、右下の追加ボタンをクリックします。
タグタイプ:XML タイプのタグ (<*>) もしくは _TAG タイプのタグ ( _* ) が選べます。後者は、
無視しないタグ:特定のタグを残して処理したい場合は、ここで指定します。複数のタグを指定する場合は、コンマ ( , ) で区切ります。
XPath でタグを指定して処理をします。この機能を使うためには、テキストが完全な XML ファイルである必要はありませんが、テキストとして扱う部分が XML の形式に則ったタグ付けがなされている必要があります。XML 形式に合わないタグなどが存在したり、エスケープされるべき文字が残っていたりする場合は、処理ができない可能性があるため、Regex (正規表現) でのコンテクストタグの扱いを行ってください。
上記のように、検索・集計に使うテキスト部分が XML タグでマークアップされている必要があります。ここでは、<text> ... </text> という形で、コーパスのテキストがマークアップされているとします。
まず、セクションタグラベルに、テキスト部分を示すタグ (text) を入力して分析をクリックします。これで、<text> ... </text> タグの間にあるセクションタグへの XPath が抽出され、XPath のところの選択肢として登録されます。ちなみにこの例で扱う文書は、<text> ... </text> の中に、<abst> ... </abst> で囲まれた要約と <main> ... </main> で囲まれた本文があり、本文はセクションごとに intro, method, finding/result, dis(cussion), concl(usion) というタグでマークアップされています。S の部分は、元の文章の本文中のテキスト <S> で <> がエスケープされていないためタグとして認識されてしまっているということです。
この XPath のリストから、検索・集計に使いたいあるいは無視したいテキストが含まれるセクションを選びます。この例では、セクションタグには属性情報がないので、一番したのテキストのテキストボックス左にある選択肢から、セクションのテキストにフィルターをかけるオプションを選びます。
NA:テキストの情報を使わない
contains:テキストに含まれる
NOT contains:テキストに含まれない
matches:テキストにマッチする (正規表現)
NOT matches:テキストにマッチない (正規表現)
C にチェックを入れると大文字小文字の区別をします。
例えば、contains を選んだ場合、XPath で指定したセクションのテキストが一番下のテキストのところで指定した文字列を含めば、そのセクションのテキストが検索・集計に使われます。例えば、XPath で //text/main/dis を選び、contains でテキストに grammar を指定した場合、<text> ... </text> に含まれる <main> ... </main> というセクションの中の <dis> ... </dis> セクションに grammar という文字列が存在すれば、<dis> ... </dis> でマークアップされたテキストが、検索・集計処理に使われます。
XPath で選んだタグに属性情報があれば、属性名のところの選択肢に属性名のリストが表示されます。この下の例では、//text/u (<text><u who="xxx">...</u></text>) のタグに who という属性情報がありそれを選択したところ、属性値のところに属性値のリストが表示されています。
属性値のオプションは、次のとおりです。
NA:情報を使わない
=:指定した文字列である
!=:指定した文字列ではない
contains:指定した文字列を含む
NOT contains:指定した文字列を含まない
matches:指定した正規表現にマッチする
NOT matches:指定した正規表現にマッチしない
= を選んで、属性値に Joey を入力 (選択) すると、who という属性、ここでは話者が Joey の発話 (u) が選別されて処理されるという意味になります。
すべての情報を入力したら、テーブル右下の追加ボタンをクリックして、リストに追加します。
下の例は、<text> ... </text> のなかの <u> ... </u> でマークアップされた発話部分の話者情報として who で登録されている属性が Joey である発話のうち、発話の中で guys が使われているものだけを検索・集計の対象とするということになります。
実際にこのフィルタを使う場合は、リストの左端のチェックボックスにチェックを入れます。
正規表現で指定した文字列を含む文章、段落、文のみを処理の対象にすることができます。例えば、コーパスの中で、grammar という単語がある段落と vocabulary がある段落のみで頻度集計するようなことが可能になります。
文字列の指定は、いずれも ICU 形式の正規表現で行います。C は大文字小文字の区別、M 改行コードを超えて正規表現をマッチさせるかどうかのオプションです。
指定した文字列を含む ** のみにチェックをいれ、どの範囲にするか (文章・段落・文) を指定します。リストに正規表現を追加するには、追加ボタンをクリックして、挿入された行の正規表現の列をダブルクリックして正規表現を入力します。
文章:ファイルのテキスト部分全体に指定した正規表現にマッチする文字列がある場合、そのファイルのテキスト全体が検索・集計対象に
段落:改行コードで区切られたテキストを段落として、指定した正規表現にマッチする文字列がある段落のみが検索・集計対象に
文:macOS の標準機能を利用して文に分割されたテキストで、指定した正規表現にマッチする文字列がある文のみが検索・集計対象に
指定した文字列を無視するにチェックを入れて、リストに正規表現を追加すると、チェックを入れた正規表現で指定した文字列をテキストから削除して、検索・集計などの処理を行います。