OCX Standard v0.5 (Draft)
最終更新日: 2025-12-23 小木曽
目次
- 1. 目的と位置づけ
- 2. 基本原則
- 3. 名前空間と接頭辞運用
- 4. 文書構造
- 5. TEI 語彙サブセット
- 6. 文境界
- 7. ルビ(フリガナ)
- 8. 注記(解析対象外)
- 9. 解析制御
- 10. 踊り字(odoriji)
- 11. 割書(warigaki)
- 12. 会話(speech)
- 13. 解析入力生成規則(要約)
- 14. 適合性(Conformance)
- 15. 互換性と拡張
- 付録 A: 用語
- 付録 B: 実装者向けメモ
1. 目的と位置づけ
OCX (Open CHJ XML) は、日本語テキストを中心とする人文系資料を対象に、次を同時に満たすことを目的とした XML 規格です。
- 形態素解析・構文解析などの言語解析に適したテキスト表現
- 文字オフセット(character offsets)に基づく解析結果管理
- 原文表記(踊り字・割書・ルビ等)の保持
OCX Standard は、OCX mini(最小マークアップ)を包含しつつ、TEI 語彙の一部を制限付きで利用し、OCX 独自語彙で解析制御を明示します。
本規格は TEI 文書そのものではありません(TEI の一部を借用しつつ、解析用途に最適化します)。
2. 基本原則
- 本文に含まれる文字は、原則としてすべて解析対象とします。
- 解析対象外とする範囲は、
ocx:skipによって明示します。 - 原文表記(踊り字・ルビなど)の情報は、解析用文字列と分離して保持します。
- XML 要素の交差を避け、実装可能性を優先します。
- 名前空間は OCX / TEI ともに接頭辞付きで記述し、OCX 要素は常に
ocx:接頭辞で識別できるようにします。
3. 名前空間と接頭辞運用
3.1 名前空間宣言
xmlns:ocx="https://openchj.github.io/ns/ocx"
xmlns:tei="http://www.tei-c.org/ns/0.5"
3.2 接頭辞の運用方針(重要)
- OCX 独自語彙(
ocx:*)は 常に接頭辞付きで記述します。 - OCX 文書が XHTML 等の文書に埋め込まれる場合、埋め込み先文書(例:XHTML 本文)の要素は 接頭辞なし(デフォルト名前空間)で記述して構いません。
- ただし、その場合でも OCX 要素は必ず
ocx:接頭辞を付与します。
この方針により、(a) OCX 要素をテキスト処理で機械的に見分けやすくし、(b) 埋め込み先(XHTML 等)の既存ツールチェーンとの親和性を保ちます。
4. 文書構造
4.1 ルート要素 ocx:doc
<ocx:doc textID="…" corpusName="…" xmlns:ocx="https://openchj.github.io/ns/ocx">
…
</ocx:doc>
| 属性 | 必須 | 内容 |
|---|---|---|
textID |
○ | テキスト識別子 |
corpusName |
○ | コーパス名 |
4.2 最小例(標準)
<ocx:doc textID="作品ID" corpusName="コーパス名"
xmlns:ocx="https://openchj.github.io/ns/ocx"
xmlns:tei="http://www.tei-c.org/ns/0.5">
<tei:body>
<tei:p>
<tei:s>これは文です。</tei:s>
<tei:s>これは二文目です。</tei:s>
</tei:p>
</tei:body>
</ocx:doc>
5. TEI 語彙サブセット
OCX Standard で使用を許可する TEI 要素は以下に限定します。
tei:front,tei:title,tei:bodytei:div,tei:p,tei:stei:pb,tei:lb,tei:gtei:quotetei:sp,tei:speaker
5.1 制約
tei:noteは使用しません(注記はocx:commentを使用し、本文に注釈が入り込むのを避ける)。tei:rubyは使用しません(ルビはocx:rを使用し、本文に振り仮名が入り込むのを避ける)。tei:quoteは ブロック引用として用い、tei:sの内部には置きません。tei:spは会話(発話範囲)を表すために用います。tei:speakerは 原文に明示的な話者表示がある場合のみ用います。- 話者識別(原文にない補助情報)は
tei:sp@whoを推奨します。
6. 文境界
6.1 正規形(推奨): tei:s
文は原則 tei:s で括ります。
<tei:s>……。</tei:s>
6.2 オプション: ocx:eos(文境界表示)
OCX mini 由来の ocx:eos(空要素)を、文境界表示のオプションとして許可します。
……。<ocx:eos/>
制約(必須)
ocx:eosはtei:sの内部に置いてはなりません。
推奨
- 同一段落(
tei:p)内でtei:sとocx:eosを混在させない(段落単位で方式を統一)。
7. ルビ(フリガナ)
7.1 ocx:r
<ocx:r rt="よみ">表記</ocx:r>
- 要素内容(文字列): 解析対象(表記)
@rt: 読み(解析対象外)
8. 注記(解析対象外)
8.1 ocx:comment(空要素)
<ocx:comment text="注記内容"/>
- 注記は本文文字列に混ぜません。
- 解析入力生成時には除外されます。
9. 解析制御
OCX Standard は、形態素解析の制御を 2種類の範囲タグで表します。
9.1 ocx:proc(解析範囲の特殊処理)
<ocx:proc dic="Kindai-bungo" norm="kata2hira">…</ocx:proc>
| 属性 | 必須 | 内容 |
|---|---|---|
dic |
任意 | 形態素解析に用いる辞書を指定します。(例: Kindai-bungo, Kansai) |
norm |
任意 | 正規化規則を適用します。(v0.5: kata2hira) |
処理順
normを適用(指定がある場合)dic指定(なければ既定辞書)で通常解析
dic 制限語彙(v0.5)
Kindai-bungo近代文語UniDicで解析Chuko-wabun中古和文UniDicで解析Kansai関西方言UniDicで解析
norm 制限語彙(v0.5)
kata2hiraカタカナをひらがなに置き換えてから解析
9.2 ocx:skip(解析対象外範囲)
<ocx:skip tokenize="single" pos="uri">https://example.org</ocx:skip>
| 属性 | 必須 | 内容 |
|---|---|---|
tokenize |
○ | single / space |
pos |
○ | 制限語彙(下記) |
pos 制限語彙(v0.5)
kanbun(漢文)foreign(外国語)uri(URL・メールアドレス等)code(プログラムコード)other(その他)
tokenize の意味:
single: 範囲全体を 1 短単位として扱うspace: 空白で分割して短単位を生成する(各短単位に同一posを付与)
10. 踊り字(odoriji)
10.1 ocx:odoriji
踊り字(ゝゞヽヾ々〳〵 等)を、対応する文字へ展開した上で、原表記を保持します。
こ<ocx:odoriji orig="ゝ">こ</ocx:odoriji>ろ
人<ocx:odoriji orig="々">人</ocx:odoriji>
| 属性 | 必須 | 内容 |
|---|---|---|
orig |
○ | 原表記の踊り字記号(制限語彙) |
orig 制限語彙(v0.5):
ゝ ゞ ヽ ヾ 々 〳〵 〱 〲
解析入力生成では、ocx:odoriji の 要素内容のみを出力し、@orig は保持情報(解析対象外)とします。
11. 割書(warigaki)
11.1 ocx:warigaki(構造要素)
割書を表す構造要素です。v0.5 では属性を持ちません。
<ocx:warigaki>割書本文</ocx:warigaki>
11.2 解析制御(推奨): ocx:skip を外側に付与
割書の解析上の扱いを変える場合、外側に ocx:skip を付与します(ocx:skip が親、ocx:warigaki が子)。
<ocx:skip tokenize="single" pos="other">
<ocx:warigaki>(割書)</ocx:warigaki>
</ocx:skip>
11.3 割書内改行: ocx:wbr(空要素)
原文で割書の内部に改行がある場合、tei:lb ではなく ocx:wbr を用います。
<ocx:warigaki>第一行<ocx:wbr/>第二行</ocx:warigaki>
ocx:wbrはocx:warigaki内のみで使用します。- 解析入力生成では
ocx:wbrは除去されます。
12. 会話(speech)
12.1 tei:sp(発話範囲)
会話の範囲(台詞・発話)を TEI の tei:sp で表します。
- 話者識別のため
tei:sp@whoを推奨します。 - 原文に話者名が明示されている場合のみ
tei:speakerを用います。 tei:speakerの文字列は解析入力生成時に除外します。
例(話者識別のみ):
<tei:sp who="A">
<tei:s>あの泥坊が羨しい。</tei:s>
</tei:sp>
例(原文に話者表示がある場合):
<tei:sp who="A">
<tei:speaker>男</tei:speaker>
<tei:s>あの泥坊が羨しい。</tei:s>
</tei:sp>
13. 解析用テキスト生成規則(要約)
tei:sの終端 → 文境界ocx:eos→ 改行(LF 相当)ocx:r→ 要素内容のみ出力(@rtは除外)ocx:comment→ 除去ocx:odoriji→ 要素内容のみ出力(@origは除外)ocx:proc→norm適用 →dic指定解析ocx:skip→tokenize規則で擬似トークン化しposを付与ocx:wbr→ 除去
14. 適合性(Conformance)
14.1 OCX Standard 準拠文書
OCX Standard 準拠と主張する文書は、少なくとも次を満たす必要があります。
ocx:docルート、必須属性textID,corpusName- OCX 要素は常に
ocx:接頭辞付きで記述 ocx:skipの@tokenizeはsingle|spaceのいずれかocx:skipの@posは v0.5 制限語彙のいずれかocx:odoriji@origは制限語彙のいずれかocx:wbrはocx:warigaki内にのみ出現ocx:eosはtei:s内に出現しないtei:speakerは原文にある場合のみ使用(補助的な話者名付与には使用しない)
15. 互換性と拡張
pos値の追加dic値の追加norm規則の追加- TEI サブセットの拡張
はいずれも後方互換性を保つ形で追加します。
付録 A: 用語
- 擬似トークン化: 形態素解析器にかけず、ルールで短単位化する処理(
ocx:skip)。 - 文字オフセット: 文字列上の位置(開始・終了)で注釈や解析結果を対応付ける方法。
付録 B: 実装者向けメモ
B.1 スキーマ
本仕様に対応するスキーマは、将来次の形で同梱することを想定します。
- ODD(TEI カスタマイゼーション)
- XSD(検証用)
B.2 埋め込み(XHTML 等)
OCX 要素は ocx: 接頭辞で記述し、埋め込み先文書(XHTML 等)は接頭辞なし(デフォルト名前空間)で記述して構いません。
例(概念):
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ocx="https://openchj.github.io/ns/ocx">
<body>
<ocx:doc textID="…" corpusName="…">
…
</ocx:doc>
</body>
</html>