ODD編集Tips:その1

要素の属性を特定のものだけに制限する TEIのデフォルトでは、要素は多くの属性クラス(att.global、att.datableなど)を継承しており、多数の属性が使用可能です。特定の属性のみを許可したい場合は、以下のように設定します。 例: persNameでxml:idとcorrespのみを許可 < e / l < < e e c / a / l m l < < < < < < < c t < < a e e a ! m m m m m m l t a / a / t m n s - e e e e e e a L t < < a t < < a t e t s - m m m m m m s i t d d / t t d d / t L n S e b b b b b b s s D e a < d t D e a < d t i t p s 属 e e e e e e e t e s t d a D e s t d a D s S e 性 r r r r r r s > f c a a t e f c a a t e t p c m ク O O O O O O > > t t a f > t t a f > e o ラ f f f f f f i 要 y a t > i 関 y a t > c i d ス d 素 p R y d 連 p R y > d e を k k k k k k e の e e p e す e e p e = 削 e e e e e e n 一 > f e n る > f e n " 除 y y y y y y t 意 > t 人 > t c ( = = = = = = = な n = 物 k = h モ " " " " " " " 識 a " 情 e " a デ a a a a a a x 別 m c 報 y p n ル t t t t t t m 子 e o へ = e g ク t t t t t t l < = r の " r e ラ . . . . . . : / " r リ t s " ス g c d e p t i d I e ン e N > は l m a d e y d e D s ク i a 維 o c t i r p " s " p < d m 持 b " a t s e c / " / a e ) a b L o d m > > d t " l m l i n " o m e a " o e k a d o s . m d " e l m e d c p o m e " " o = e > o d o = m d " = i e d " o m m e a " n = e d d o o = d a t " = e e d d " d d e c " l = e e d " d r h d e " = = e " " a e t d " " l u / n l e e d d e s u > g e " l e e t a s e t / e l l e g a " e > t e e " e g > " e t t / = e / " e e > " = > / " " o " > / / p o > > t p " t > " > ポイント <classes mode="change">を使用: mode="replace"で空にすると、モデルクラスも削除され要素自体が使えなくなる 属性クラスを個別に削除 : <memberOf key="att.xxx" mode="delete"/>で不要な属性クラスを削除 必要な属性を追加 : <attDef ident="xxx" mode="add">で許可したい属性を定義 注意点 要素がどの属性クラスに属しているかは、TEI Guidelinesで確認できる att.globalを削除するとxml:id、xml:langなども使えなくなるため、必要に応じて個別に追加する 要素に属性を追加する 既存の属性クラスを維持したまま、新しい属性を追加する場合: ...

2026年1月27日 · 4 分 · Nakamura

TEI ODDによるIIIF対応ファクシミリ記述の制約設計

はじめに TEI(Text Encoding Initiative)でデジタル画像のメタデータを記述する際、facsimile要素を使用します。特にIIIF(International Image Interoperability Framework)対応のデジタルアーカイブでは、マニフェストやキャンバス、Image APIへの参照を適切に記述することが重要です。 本記事では、ODD(One Document Does it all)を使用して、ファクシミリ記述に必要な制約をスキーマとして定義する方法を紹介します。 準拠するガイドライン 本ODDは、日本語TEIガイドラインで紹介されている「IIIF画像とのリンク」仕様をベースにしています: IIIF画像とのリンク(2024年度版)- TEI-EAJ このガイドラインに準拠したデータを作成することで、TEI Viewer for EAJでの画像表示が可能になります。TEI Viewerは、TEIテキストとIIIF画像を連携して表示できるビューアであり、facsimile要素の情報を利用してテキストと画像の対応付けを行います。 設計目標 以下の要件を満たすスキーマを設計しました: 必須情報の明確化 : 画像の座標情報や識別子など、最低限必要な情報を必須属性として定義 IIIF対応 : マニフェスト、キャンバス、Image APIへの参照をオプショナルに記述可能 再利用性 : 独立したODDファイルとして、複数プロジェクトで共有可能 ビューア互換性 : TEI Viewer for EAJでの表示に必要な情報を確実に記録 最小限の記述例 < f / a f c a s < c i s / s m u s i i r u m l f < r i e a g f l c r a e s e a c > a p e m u h > e l i A x c s = = " s " 0 a h " m t e t u A p l s s y = : = " / " h / 0 t e " t x p a l s m r : p x / l = / e " e . 5 x o 6 a r 0 m g 0 p / " l i e i l . i r o f y r / = g m " / a 4 i n 0 m i 0 a f 0 g e " e s / t x 0 . m 0 j l 1 s : . o i t n d i " = f > " " p / 1 > " > 完全な記述例(IIIF参照を含む) < f / a f c a s < c i s / s m u s i i r u m l f < r i e a g f l c r a e s e a c > a p e m u s h > e l a i A x m c s = e = " A u s " 0 s r a h " = l m t " = e t u h " A p l t h s s y t t = : = p t " / " s p h / 0 : s t e " / : t x / / p a l e / s m r x e : p x a x / l = m a / e " p m e . 5 l p x o 6 e l a r 0 . e m g 0 o . p / " r o l i g r e i l / g . i r c o f y a i r / = n m g m " v a / a 4 a g i n 0 s e m i 0 / / a f 0 p 0 g e " 1 0 e s " 1 t . 0 . x t 0 j m i 1 s l f . o : t n i f i " d u f > = l " " l p 1 f " u > l l / 0 / d e f a u l t . j p g " ODD定義の解説 1. facsimile要素 < e / l < < < < e e d c c / a / l m e l o < c t < a e e s a n e o t a / t m n c s t l n L t < < a t e t > s e e t i t d d / t L n S フ e n m e s D e a < d t i t p ァ s t e n t e s t d a D s S e ク > n t f c a a t e t p c シ m t > m > t t a f > e ミ o R o i I y a t > c i リ d e d d I p R y > d 画 e f e e I e e p e 像 = = n F > f e n 情 " k " t マ > t 報 r e r = ニ k = 。 e y e " フ e " I p = p s ェ y f I l " l a ス = a I a s a m ト " c F c u c e へ t s マ e r e A の e i ニ " f " s 参 i m フ / a > " 照 d i ェ > c U a l ス e m R t e ト " o L a " へ d < . の m e / p m 参 i = d o o 照 n " e i d を O r s n e 含 c e c t = む c p > e " 。 u l r c < r a " h / s c / a d = e > n e " " g s 1 e c " u " > s > m a a g x e O = c " c o u p r t s " = > " u n b o u n d e d " / > ポイント : ...

2025年12月10日 · 12 分 · Nakamura

TEI ODDファイルのカスタマイゼーション:NDL古典籍OCRの事例

はじめに TEI (Text Encoding Initiative) は、人文学研究におけるテキストのデジタル化と共有のための国際標準です。本記事では、NDL古典籍OCR-Liteアプリケーションの出力形式に合わせてTEI ODDファイルをカスタマイズした過程を紹介します。 ODD (One Document Does it all) は、TEIスキーマをカスタマイズするための仕組みで、必要な要素と属性だけを含む独自のスキーマを定義できます。 背景:NDL古典籍OCR-Liteアプリケーションの開発 NDL古典籍OCR-Liteの出力結果をTEI/XMLで出力するアプリケーションを作成しています。このアプリケーションは、日本の古典籍をOCR処理し、その結果を標準的なTEI形式で出力することを目的としています。 出力されるTEI XMLには以下の情報を含めることにしました: テキスト情報 : OCRで認識した文字列 レイアウト情報 : 各行の座標情報(バウンディングボックス) 画像参照 : IIIF (International Image Interoperability Framework) 対応の画像URL メタデータ : 文書タイトル、処理情報など このアプリケーションで使用するスキーマをODDで記述してみました。以下、そのカスタマイゼーション過程を紹介します。 カスタマイゼーションのアプローチ 1. 初期アプローチ:標準モジュールの利用 最初は、TEIの標準モジュールを利用してODDを作成しました: < s / c < < < < < s h m m m m m c e o o o o o h m d d d d d e a u u u u u m S l l l l l a p e e e e e S e R R R R R p c e e e e e e f f f f f c i > d k k k k k e e e e e e n y y y y y t = = = = = = " " " " " " t h c t t n e e o e r d i a r x a l " d e t n _ / e " s s k > r t c o " i r r t n u " e i c c n n l t i _ c u u n o l d r c c u e e l r d = " u " e " d = p i e s " n = t t t c " a e i l f r i t u a t H l d c = e e e s " a = i T d n " m E e a T i I r m E l " e I e f p i r t s r l e e u e e s x r f D p t f i e a x s r b c = c e o e " s d t t p y z e i S " i t t n _ l m e " e t " > S / t l > m b t p p b u b g l r i a c p a h t i i c o " n / S > t m t s o u r c e D e s c " / > include属性の重要性 moduleRef要素のinclude属性は、モジュールから特定の要素のみを選択的に含める重要な機能です: ...

2025年9月5日 · 18 分 · Nakamura

NDL古典籍OCR-lite Next.js版の開発

概要 @yuta1984 さんが「WebAssemblyを使用したNDL古典籍OCR-liteのWeb移植版」を開発されました。 https://github.com/yuta1984/ndlkotenocr-lite-web 今回は、上記のリポジトリを参考にさせていただき、Next.js版を作成しました。 https://nkol.vercel.app/ja/ 加えて、以下の点を追加しています。 IIIFマニフェストファイルの入力フォーム TEI/XMLファイルのダウンロード機能 出力フォーマットに関するODDファイルの作成 使い方 サンプルとして、九州大学附属図書館の源氏物語を利用させていただきます。 https://catalog.lib.kyushu-u.ac.jp/image/manifest/1/820/411193.json マニフェストファイルを入力し、「読み込む」ボタンを押すと、以下のように、画像の一覧が表示されます。 なお、内部的には、@iiif/parserを利用し、v2とv3、どちらのマニフェストファイルにも対応するようにしています。 その後、処理の実行ボタンを押すと、画像ごとにOCR結果のテキストが表示されます。 実行完了後、画面下部に結果のダウンロードボタンが表示されます。 ODDファイルの作成 TEI/XMLでのエクスポートにあたり、どのようなタグや形式が想定されているのか、という質問をいただくことがありました。 そこで、このフォーマットの共有にあたり、ODD(One Document Does it all)ファイルを作成しました。 このODDファイルの作成については、以下の記事も参考にしてください。 さらに、TEIGarageのAPIを利用し、RNGファイルやHTMLファイルを作成しています。この変換については、以下の記事を参考にしてください。 不完全な部分もありますが、このような方法を採ることで、TEIのエコシステムを活用しながら、スキーマを公開・共有することができそうです。 これまでに作成したツールと今後開発予定のツール これまでの開発 NDL古典籍OCR-liteについては、これまでにいくつかのツールを開発してきました。 まず、Gradio Appを作成しました。こちらは公式に提供されている「デスクトップアプリケーション」で代替可能なものでしたが、スマホやタブレットで撮影した画像に対してOCRをかけるといった用途では有用性があると考えられます。 次に、以下の記事で紹介したように、同じくGradioを用いたウェブアプリですが、IIIFマニフェストファイルを入力とし、TEI/XMLファイルを出力とするアプリを作成しました。IIIFとTEIを接続している点で有用性はありましたが、Hugging Faceの無料枠でアプリを公開しているため、多くの人が同時に使用できる環境ではないという課題がありました。 これらの課題に対して、@yuta1984 さんが作成されたウェブ版を参考に、IIIFとTEIの接続機能を維持しながら、ユーザの端末側でOCR処理を実行する環境を今回構築しました。これにより、複数人が同時に処理を実行できるようになりました。 今後の展望 人手でOCRをかける際には、公式のデスクトップアプリケーションを使用するか、@yuta1984 さんのウェブアプリ、あるいは今回開発したNext.js版のウェブアプリを使用することで、多くのニーズに対応できると考えています。 今後の取り組みとして、API等を介して大量の画像に対して一括でOCR処理を行う場合には、複数のサーバで並列にOCR処理を実行することで効率化を図ることができます。例えば、2000枚を超える画像から構成されるIIIFマニフェストファイルを対象とする際には、並列でOCR処理を行うことが、順次実行するよりも効果的です。 このような処理を実現するため、以下の記事で紹介しているように、Azure Container Appsを使用したスケーラブルなOCR処理システムの構築を進めています。 まだ不完全な点や考慮すべき点は多いものの、サーバレスな環境でOCRを提供することで、大規模な画像に対するOCR処理の実現を目指しています。 まとめ NDL古典籍OCR-liteの活用にあたり、参考になりましたら幸いです。

2025年9月1日 · 1 分 · Nakamura

RELAX NGとSchematronを組み合わせたTEI XMLスキーマの実装ガイド

! 人手で検証を行った後、AIが記事を執筆しました。 はじめに TEI(Text Encoding Initiative)XMLを編集する際、要素や属性の構造検証だけでなく、より複雑なビジネスルールの検証が必要になることがあります。本記事では、RELAX NG(RNG)とSchematronを組み合わせて、構造検証と内容検証の両方を実現する方法を、実際のプロジェクトで直面した課題を例に解説します。 解決したい課題 日本の古典文学テキストをTEI XMLで校訂する際、以下のような要求がありました: ID参照の動的検証 : corresp属性で参照するIDが、実際に文書内のwitness要素に存在することを検証したい Oxygen XML Editorでの補完機能 : 編集時にIDの候補を自動表示したい 複数ID参照のサポート : スペース区切りで複数のIDを指定可能にしたい 特定要素のみ参照を許可 : witness要素のIDのみを参照可能とし、person要素のIDが含まれる場合はエラーにしたい なぜRNG + Schematronなのか? RELAX NGの得意分野 要素・属性の構造定義 データ型の指定 基本的な内容モデルの定義 Schematronの得意分野 XPathベースの複雑な検証ルール 文書内の相互参照チェック カスタムエラーメッセージの提供 この2つを組み合わせることで、構造と内容の両面から厳密な検証が可能になります。 実装例 1. 基本的なRNGスキーマ構造 < < ? g / x r < < < < < g m a ! s ! s / ! r l m - c - t < s - a m - h - a r t - m v a : r e a m e r S n こ t f r R a r c s こ > t N r s x x x d n h に n > G > i m m m a s e p S a に o l l l t = m r c m よ n n n n a " a e h e る = s s s t h t f e = 構 " = : : y t r i m " 造 1 " a s p t o x a T 定 . h = c e p n = t E 義 0 t " h L : 名 " r I " t h = i / 前 t o " p t " b / 空 e n / e : t h r w 間 i ル > n / p t a w 宣 " ー c : t r w 言 ル r / p y . u を d e / : = t r 埋 i l r / " e i め n a e / h i = 込 g x l p t - " む = n a u t c h " g x r p . t U . n l : t T o g . r p F r . / g : - g c w / / 8 r l w n / " n g c w s w ? s . . / w > n o w 1 w s s r 3 . . t / g . 0 t r c o " e u d r > i c m s g - t p d / c u a l 2 . r t / 0 o e i s 0 r / b c 1 g 1 i h / / . l e X n 0 i m M s " t a L / y t S 1 / r c . a o h 0 n n e " n " m / o a > t - a d t a i t o a n t s y / p 1 e . s 0 " " 2. ID定義とanyURI型の活用 Oxygen XML Editorで自動補完を実現するために、anyURI型を使用します: ...

2025年8月9日 · 17 分 · Nakamura

生成AIを用いてプロジェクトに特化したrngファイルを作成する

概要 TEI/XMLファイルを編集する際、検証に使用するrngファイルを変更することで、使用するタグや属性を限定することができます。これにより、作業者が使用するタグに混乱しない、作成されるTEI/XMLのばらつきが軽減する、といった利点が考えられます。 rngファイルを編集する方法として、以下の記事で紹介したように、Romaを使用する方法が一般的です。 この方法はトップダウン的に使用するタグや属性を限定していく方法ですが、今回は、すでに作成済みのTEI/XMLから、生成AIを用いて、ボトムアップ的にrngファイルを作成してみます。 対象データ 校異源氏物語テキストDBで公開されている以下のXMLファイルを対象とします。 https://kouigenjimonogatari.github.io/tei/01.xml このファイルでは、以下のtei_all.rngを使用しています。 http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng そのため、以下のように、挿入可能な多くのタグがサジェストされることがわかります。 生成AIによるrngファイルの作成 以下のようなプロンプトにより、対象とするXMLファイルのタグの使用状況などに応じて、rngファイルを作成します。 # # - - # - # 1 2 3 4 # - - # 1 2 # # # . . . . # # . . X 作 作 フ 不 必 M 目 業 業 提 ァ 要 制 要 須 期 カ 簡 L 的 効 者 供 イ 望 * * * * 約 な 属 待 ス 潔 フ 率 が す ル 現 最 入 コ ・ 要 性 す タ な ァ 向 タ る 名 在 小 力 メ 方 素 を る ム 使 イ 上 グ フ : の 限 補 ン 針 は 明 成 R 用 ル の 選 ァ X か 完 ト 除 確 果 N ガ 用 た 択 イ 0 M つ ・ 付 外 に 物 G イ カ め に ル 1 L 必 バ き ( 定 フ ド ス 、 迷 . フ 要 リ * 例 義 ァ タ 使 わ x ァ 十 デ * : イ ム 用 ず m イ 分 ー で ○ ル R す 、 l ル な シ 、 ○ ( N る 一 を 要 ョ 各 、 . G 要 貫 分 素 ン 要 × r ス 素 し 析 セ * 素 × n キ ・ た * ッ * の は g ー 属 構 * ト が 用 使 ) マ 性 造 し * 効 途 用 作 を で 、 * 果 を し 成 限 編 実 で 的 明 な 依 定 集 際 R に 記 い 頼 し で に N 働 ) た き 使 G く R る 用 ス よ N 環 さ キ う G 境 れ ー 設 ス を て マ 計 キ 構 い を ー 築 る 作 マ 要 成 を 素 作 ・ 成 属 性 を 特 定 結果、以下のrngファイルが作成されました。 ...

2025年8月1日 · 30 分 · Nakamura

Romaを使ってタグの属性に使用可能な値を限定する

概要 Romaを使ってタグの属性に使用可能な値を限定する方法に関する備忘録です。 背景 以下の記事で、タグに使用可能な属性を限定する方法を記載しました。 例えば、persNameタグには、key属性とtype属性のみを使用可能にする、といった具合です。 本記事では、さらに特定の属性で使用可能な値を限定します。例えば、type属性には、「右傍注」または「左傍注」のいずれかを設定する、といった具合です。 Romaでの設定 以下の記事を参考に、タグの属性の設定を行います。 ここでは、persNameタグにtype属性を設定済みとします。そして、以下のように、鉛筆アイコンをクリックします。 以下のように、属性に関する情報を編集するためのページに遷移します。ここで、「値」という項目において、「右傍注」「左傍注」といった値を登録します。合わせて、必要に応じて「説明」文も追加します。 Oxygen XML Editorでの表示例 rngファイルとしてダウンロードし、それをTEI/XMLからロードすることにより、Oxygen XML Editorでは以下のように表示されました。 LEAF Writerでの表示例 LEAF Writerでは、以下のように、セレクトボックスで選択肢が提示されました。 まとめ TEI/XMLの導入あたり、参考になりましたら幸いです。

2024年10月28日 · 1 分 · Nakamura

Romaを使ってプロジェクトに応じたタグに使用する属性を限定する

概要 Romaを使ってプロジェクトに応じたタグに使用する属性を限定する方法に関する備忘録です。 背景 以下の記事で、Romaを使ってプロジェクトに応じたタグを限定する方法を記載しました。 今回はこの延長で、各タグで使用する属性のカスタマイズを行います。 ユースケース ここでは、一例として、persNameで使用可能な属性を限定してみます。 デフォルト(tei_all.rng)をOxygen XML Editorで用いた際、以下のように、persNameタグで使用可能な属性として、多くの選択肢が提示されていることがわかります。 一方、本記事で説明するカスタマイズしたrngファイルを使用した場合、以下のように、5つの属性のみが利用可能となっていることがわかります。 このようにプロジェクト毎に使用可能なタグや属性を限定することで、入力者の負担軽減や、Validationの効率化が期待できます。 手順 以下の記事を参考に、Romaで新規にODDファイルを作成するか、既存のODDファイルを登録した状態から開始します。 そして、今回対象とするpersNameにチェックが入っていることを確認します。 次に、上記のpersNameのリンクをクリックすると、以下の画面に遷移します。 そして、属性をクリックします。このページにおいて、使用する属性を限定することができます。 以下では、少しわかりにくいですが、key属性は使用するものとして残しており、xml:lang属性は使用しないものとして除外している例です。 その他、新規の属性の作成や、 既存のものからインポート(用語が正しいか自身がありません)することもできました。 このカスタマイズ内容を保存できるように、ダウンロード > 「ODDとしてカスタマイズ」により、oddファイルをダウンロードしておきます。また、「RELAX NGスキーマ」などを選択して、実際にTEI/XMLで使用するファイルをダウンロードします。 詳細は以下を参考にしてください。 参考:説明文のカスタマイズ Roma RELAX NG スキーマ < d e / e l d f < e e i e m / f n l e e i e e < < < n < < < < < < l n m a r p t / r r r r r e e e n e : e a p e e e e e m m > a n d f t x < h a f f f f f p e m t o t m s a / t t n e c n e l c s s t n n n n n y t = n u a r n h x x < c e a a a a a / > " a m m n s : m m s n h r m m m m m > t m e e : r l l c o : n e e e e e e e n = x r u n n h r > = = = = = i = t " m n l s s : t u " " " " " _ " a t l g e : = a e l t t t t t p p t e n = x " s x e e e e e e e e i i s " x i h s t > i i i i i r r o _ = h m = t e u _ _ _ _ _ s s n m " t l " t r a a a a a a N N a h t n h p t l t t t t t a a x c t p s t : t t t t t m m m r t : : t / t s b c . . . . . e e l o p / s p / e y u o c g g g g " " n . : c : w s s t n a l l l l > > s p r h / w t t t n o o o o : h / e = / w = e t e o b b b b a r p l " w . " m h n n a a a a = a u a h w t s s i t i l l l l " s r x t w e t s . c . . . . h e l n t . i r o < a a a l a t S . g p w - i r < / l t t i n t e o . : 3 c n s s . t t n a p q c o / . . g c c c a r r k l : " l r o o - a h h t i i i y / c g p r r l l : : t b b n t . u g g e e n a r u u g i r n r / / n n a s i t t . c e r s l 2 n g d m s b e e a . l g . 0 s t a e e u . . t a a s o 0 / h r / r t x n t t x d t c 1 1 ( s > t e m " r t n s r l / . > . l / i r g d u c X 0 n t k i > b i . l c . I " o o e d u b o / t o n r y " t u r s u r c c m w " e t g c r g l o a h . e / h e u n l i c . n e d d t i c o a s m 1 s e e z h r n / a . d " x e r a c t 0 l t - t e " o r " / = s h s / m o s " p e p > p n i c t a " a " d h e c d / t = e i e a > i " m : ( t b t a * . e i e t [ ) l i r @ r i _ o c ) e t h n a p y i " l g r / _ e t e a d n s n n d 0 e n s a " n o - r > t t p ] e a e " @ d t r > c i s a b o N l y n a e s m n t / e d h 1 - a e . c r 0 a c " l i o > e n n ( n d t p d i e e a c n r r a t s - t o c e o n h s f a e l c o t k n h n - e i a p s m e o e r r e ) s l N m e 日 a o m 本 m r e 語 e e n に - t よ c る o b カ n e ス s l タ t o マ r n イ a g ズ i s で n , す t 。 - r [ u 1 l 4 e . - 2 2 . 3 1 " . > P e r s o n a l N a m e s ] < / a : d o c u m e n t a t i o n > LEAF Writer ...

2024年10月28日 · 5 分 · Nakamura

RELAX NGとSchematron

概要 oXygen XML EditorでTEI/XMLを作成すると、以下のようなテンプレートが作成されます。 < < < < ? ? ? s T / x x x c E < < T m m m h I t / t / E l l l e e t e t I - - m x i e x e > v m m a m H < i t < x e o o t l e f / H > b / t r d d y n a i f e o b > s e e p s d l < < < i a d < o i l l e = e e t / p / s / l d y p d o n " r D i t u p o s e e > > y n h h s h > e t < i b < u u < o D r S > = r r = t s l t t l p b r p u e > o " e e " t c e i l i > l c > r s m 1 f f h p > S t e c P i e I c c e . = = t : t l S a u c D n e > 0 " " t / m e t t b a e f D t " h h p / t > m i l t s o e e t t : w > T t o i i c r s x e t t / w i > n c o > m c t n p p / w t S a n a > c : : p . l t t S t h o / u t e m i t i e d / r e < t o m o r i w w l i / > n t n e n w w . - t > . g w w o c i I a < = . . c . t n b / " t t l o l f o p U e e c r e o u > T i i . g > r t F - - o / m - c c r n a t 8 . . g s t h " o o / / i e ? r r d 1 o > g g s . n s / / d 0 < o r r l " / u e e / > p r l l s > c e e c e a a h < s s e / e e m p / / a > x x t m m r l l / n t t " e e ? i i > / / c c u u s s t t o o m m / / s s c c h h e e m m a a / / r r e e l l a a x x n n g g / / t t e e i i _ _ a a l l l l . . r r n n g g " " t t y y p p e e = = " " a a p p p p l l i i c c a a t t i i o o n n / / x x m m l l " " s c h e m a t y p e n s = " h t t p : / / r e l a x n g . o r g / n s / s t r u c t u r e / 1 . 0 " ? > この時、以下の違いが気になりましたので、GPT4への問い合わせ結果を共有します。 ...

2024年5月16日 · 7 分 · Nakamura

Romaを使ってプロジェクトに応じたタグを限定し、解説を作成する

概要 以下の記事で、Romaの使い方を説明しました。 今回は、手元にあるTEI/XMLを対象として、TEI ODD (One Document Does-it-all)や解説(HTMLやPDF)の作成に関する一連の流れを説明します。 なお、ODD (One Document Does it all) と RNG (RelaxNG) の違いについて、GPT-4による回答結果を末尾に掲載しています。こちらも参考にしてください。 使用するタグの一覧を取得する まず、プロジェクトで使用するタグの一覧を取得します。 今回、手元にあるTEI/XMLを対象として、使用されているタグの一覧を取得するライブラリおよびチュートリアル用のノートブックを作成しました。 ライブラリ https://nakamura196.github.io/gdb-utils/ チュートリアル用のノートブック https://colab.research.google.com/github/nakamura196/000_tools/blob/main/TEIでタグの使用頻度を分析するチュートリアル.ipynb 例えば、上記のノートブックを実行すると、以下のような結果が得られます。以下は、対象としたTEI/XMLファイル中に含まれるタグとその頻度を取得し、その結果をタグの名前について昇順で取得したものです。 index Tag Count 0 TEI 1 18 addrLine 1 17 address 1 50 app 8 5 author 2 58 back 1 36 bibl 1 47 body 1 56 closer 1 44 correspAction 2 43 correspDesc 1 20 country 1 33 date 6 26 dimensions 1 19 district 1 54 div 1 37 editor 1 40 editorialDecl 1 39 encodingDesc 1 25 extent 2 2 fileDesc 1 29 handDesc 1 30 handNote 1 27 height 1 31 history 1 21 idno 2 16 institution 1 55 lb 13 51 lem 8 59 listPerson 1 12 listWit 1 45 location 1 14 msDesc 1 15 msIdentifier 1 23 objectDesc 1 48 opener 1 32 origin 1 … Romaでタグを限定したODDファイルを作成する 上記で取得したタグに限定したODDファイルを、Romaというツールを用いて作成します。 ...

2023年11月3日 · 8 分 · Nakamura

RELAX NGスキーマを操作するライブラリjingtrangを試す:rngファイルの作成編

概要 以下の記事で、jingtrangおよびrngファイルを用いたxmlファイルの検証を行いました。 このjingtrangライブラリでは、xmlファイルからrngファイルを作成できるということで、試してみます。 Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す:作成編.ipynb rngファイルを作成する rngファイルを作成する元ファイルとして、以下を用意しました。 < r o o t > < t i t l e > a a a < / t i t l e > < / r o o t > 上記のファイルに対して、以下を実行します。 p y t r a n g b a s e . x m l b a s e . r n g 結果、以下のファイルが作成されました。 ...

2023年1月18日 · 4 分 · Nakamura

RELAX NGスキーマを操作するライブラリjingtrangを試す:検証編

概要 あるスキーマに従ったXMLファイルを作成する機会があったのですが、そのスキーマに合致したXMLファイルを作成できているか、確認する必要がありました。 上記の要件に対して、RELAX NGスキーマを操作するライブラリjingtrangを使ってみましたので、その備忘録です。 https://pypi.org/project/jingtrang/ Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す.ipynb Validationを試す # p # w # w i g g ラ p r e v e イ n t a t ブ i g l ラ n フ h i h リ s ァ t d t の t イ t a t イ a ル p t p ン l の s i s ス l ダ : o : ト ウ / n / ー j ン / 対 / ル i ロ r 象 k n ー a の o g ド w X u t ( . M i r t g L g a e i フ e n i t ァ n g _ h イ j a u ル i l b の m l u 用 o を s 意 n 使 e ( o 用 r 校 g ) c 異 a o 源 t n 氏 a t 物 r e 語 i n テ . t キ g . ス i c ト t o の h m ダ u / ウ b n ン . a ロ i k ー o a ド / m ) t u e r i a / 1 0 9 1 6 . / x t m e l s t 2 0 2 1 / m a i n / t e i _ a l l . r n g OKな例 以下のように実行すると、何も出力されませんでした。 ...

2023年1月18日 · 3 分 · Nakamura