ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
TEIGarageを試す

TEIGarageを試す

概要 TEIGarageは、以下のように説明されています。 https://github.com/TEIC/TEIGarage/ TEIGarage is a webservice and RESTful service to transform, convert and validate various formats, focussing on the TEI format. TEIGarage is based on the proven OxGarage. (機械翻訳)TEIGarageは、TEIフォーマットを中心にさまざまなフォーマットの変換、変換、検証を行うウェブサービスおよびRESTfulサービスです。TEIGarageは、実績のあるOxGarageに基づいています。 試す 以下のページで試すことができます。 https://teigarage.tei-c.org/ 以下で公開されている「TEI Minimal」のoddファイルを対象にします。このファイルは、Romaのプリセットの一つとしても使用されています。 https://tei-c.org/Vault/P5/current/xml/tei/Exemplars/tei_minimal.odd 上記のファイルをダウンロードします。 そして、TEIGarageのサイトにおいて、「Convert from」に「Compiled TEI ODD」、「Convert to」に「xHTML」を選択して、「ファイルを選択」にダウンロードしたoddファイルをアップロードします。 ダウンロードされたHTMLファイルはブラウザ等で確認することができます。 ちなみに、「Show advanced options」をクリックすると、パラメータのほか、変換に使用するURLが表示されます。 URLはエンコードされているため、デコードすると、以下になります。 https://teigarage.tei-c.org/ege-webservice/Conversions/ODDC:text:xml/TEI:text:xml/xhtml:application:xhtml+xml/conversion?properties=truetrueenfalsedefaulttruetrueenfalsedefault propertiesパラメータの中に、以下のxml記述を確認することができます。 <conversions> <conversion index="0"> <property id="oxgarage.getImages">true</property> <property id="oxgarage.getOnlineImages">true</property> <property id="oxgarage.lang">en</property> <property id="oxgarage.textOnly">false</property> <property id="pl.psnc.dl.ege.tei.profileNames">default</property> </conversion> <conversion index="1"> <property id="oxgarage.getImages">true</property> <property id="oxgarage.getOnlineImages">true</property> <property id="oxgarage.lang">en</property> <property id="oxgarage.textOnly">false</property> <property id="pl.psnc.dl.ege.tei.profileNames">default</property> </conversion> </conversions> Open API 以下にアクセスすると、Open APIに基づき、利用可能なオプション等を確認することができます。 ...

(機械翻訳)The TEI Archive

(機械翻訳)The TEI Archive

以下の「The TEI Archive」ページの機械翻訳結果です。 https://tei-c.org/Vault/ テキスト・エンコーディング・イニシアティブ (TEI) TEIアーカイブ 目次 ポキプシー原則 スポンサー団体 1. TEI委員会ドキュメント 1987-1998 TEI諮問委員会 分析解釈委員会 編集論文 メタ言語と構文問題委員会 指導委員会 技術審査委員会 テキスト文書化委員会 テキスト表現委員会 2. ガイドラインの以前のバージョン 3. 番号なしの報告書、記事、発表等 4. 歌、写真、その他のエフェメラ TEI Titeドキュメント 活動を終了したワーキンググループ エレクトロニック・テキスト・エディティングの予備稿(MLA、2006年) 利用可能なすべてのP5リリース このページには、テキスト・エンコーディング・イニシアティブからのアーカイブ資料が含まれています。1988年のポキプシー会議から1999年にTEIコンソーシアムの設立プロセスが始まるまでの初期10年間にわたり、さまざまなサーバーや個人のコレクションから断片的に集められたものですが、その大部分はウェンディ・プロトキンがシカゴで維持していた優れたリストサーブ・アーカイブから派生しています。 ここに保存されている資料が何らかの形で完全であると主張するものではありませんが、TEIの歴史を構成する主要な資料を追跡し、ここに保存する努力をしています。ここで利用できないオリジナルのTEI文書をお持ちの方や、お持ちの方を知っている場合は、ご連絡ください: webmaster AT tei-c DOT org。 1987年から1998年のアーカイブ部分は、TEIのオリジナルのワーキング委員会構造を反映しています。文書はTEI文書番号でリストされており、これはマイケル・スパーグ・マックイーンによって初期に考案された索引方式で、文書を起源(委員会またはワーキンググループを示す2〜3文字のコード)とタイプ(Mは議事録、Wは作業文書、Pは提案等)によってグループ分けします。番号は(通常)各プレフィックス内で時系列に割り当てられます。 現在制作中または現在活動中の文書はここには含まれておらず、TEIホームページからリンクされています。 注: このエリアは以前「TEI Vault」と呼ばれていたため、URLがそうなっています。他の場所でVaultに言及しているのを見かけた場合、それはこのアーカイブスペースを指しています。 TEIホーム | フィードバック

TEI/XMLの可視化例:Leafletを用いた地図表示

TEI/XMLの可視化例:Leafletを用いた地図表示

概要 TEI/XMLファイルの可視化にあたり、可視化例とソースコードを公開するリポジトリを作成しました。 https://github.com/nakamura196/tei_visualize_demo 可視化例は以下のページでご確認いただけます。 https://nakamura196.github.io/tei_visualize_demo/ 今回、MarkerClusterを用いたマーカー表示の例を追加しましたので、紹介します。 前提 Leafletを使って、(MarkerClusterを使用せずに、)マーカーの表示ができていることを前提とします。まだの方は、以下の可視化例、およびソースコードを参考にしてください。 可視化例 https://nakamura196.github.io/tei_visualize_demo/01/ ソースコード https://github.com/nakamura196/tei_visualize_demo/blob/main/docs/01/index.html MarkerClusterを使った実装例 可視化例は以下です。 https://nakamura196.github.io/tei_visualize_demo/02/ ソースコードは以下です。 https://github.com/nakamura196/tei_visualize_demo/blob/main/docs/02/index.html 「TEIを用いた『渋沢栄一伝記資料』テキストデータの再構築と活用」のデータを利用しています。 ライブラリの追加 以下を追記します。 <link rel="stylesheet" href="https://leaflet.github.io/Leaflet.markercluster/dist/MarkerCluster.css" /> <link rel="stylesheet" href="https://leaflet.github.io/Leaflet.markercluster/dist/MarkerCluster.Default.css" /> <script src="https://leaflet.github.io/Leaflet.markercluster/dist/leaflet.markercluster-src.js"></script> L.markerClusterGroupの利用 markersを作成して、個々のmarkerをaddLayerメソッドを使って追加します。最後に、mapにaddLayerメソッドを使って、markersを追加します。 ... // 地図の初期化 var map = L.map("map").setView(center, zoom); ... var markers = L.markerClusterGroup(); for (var i = 0; i < places.length; i++) { var place = places[i]; const geoList = place.getElementsByTagName("geo"); for (const geo of geoList) { var [lat, lon] = geo.textContent.trim().split(" ").map(Number); // 文字列を数値の緯度経度に変換 // マーカーを作成して地図上に追加 var marker = L.marker([lat, lon]); const placeName = place.getElementsByTagName("placeName")[0].textContent; // マーカーにクリック時のポップアップを設定 marker.bindPopup(placeName); markers.addLayer(marker); } } map.addLayer(markers); まとめ TEI/XMLの可視化にあたり、参考になりましたら幸いです。 ...

Next.jsを用いたTEI/XMLファイルの簡易ビューアを作成しました

Next.jsを用いたTEI/XMLファイルの簡易ビューアを作成しました

概要 TEI/XMLファイルの内容を表示する簡易なビューアを作成しました。 https://github.com/utda/tei-viewer 校異源氏物語のTEI/XMLを対象とした表示例は以下です。 https://utda.github.io/tei-viewer/?u=https://kouigenjimonogatari.github.io/tei/01.xml&v=true 使い方 最低限の機能として、IIIFマニフェストファイルが関連付けられている場合には、Miradorビューアが表示されるようにしました。関連付けの方法としては、以下のフォーマットをベースとしています。 https://github.com/TEI-EAJ/jp_guidelines/wiki/IIIF画像とのリンク またpbタグのn属性が与えられている場合は、ページ番号が表示される機能を提供します。さらに日本語への対応として、クエリパラメータにv=trueを与えた場合、縦書きテキストが表示されます。 https://github.com/utda/tei-viewer/blob/main/src/app/components/Ceteicean.tsx その他 フレームワークにはNext.js、TEI/XMLの表示スタイルにはCETEICeanを使用しました。 https://github.com/utda/tei-viewer/blob/main/src/app/CETEIcean.css そのほか、以下の記事を参考に、GitHubリポジトリとZenodoの連携を試行しています。 改善の余地があるかと思いますが、以下のコマンドを使って、新しいリリースを作成しています。 "release": "npm version patch && git push origin --tags && VERSION=$(node -pe \"require('./package.json').version\") && gh release create \"v$VERSION\" --title \"Version $VERSION\"" 今後 pbタグとMiradorビューアの画像表示が対応する機能を追加したいと思います。 まとめ TEI/XMLファイルの可視化にあたり、参考になりましたら幸いです。

デジタル源氏物語における校異源氏物語と現代語訳の対応づけ

デジタル源氏物語における校異源氏物語と現代語訳の対応づけ

概要 「デジタル源氏物語」は『源氏物語』に関する様々な関連データを収集・作成し、それらを結びつけることで、『源氏物語』研究はもちろん、古典籍を利用した教育・研究活動の一助となる環境の提案を目指したサイトです。 https://genji.dl.itc.u-tokyo.ac.jp/ 本サイトが提供する機能の一つとして、「校異源氏物語と現代語訳の対応づけ」があります。以下のように、「校異源氏物語」と青空文庫で公開されている与謝野晶子訳の対応箇所がハイライト表示されます。 この記事では、上記の機能を実現するための手順について説明します。 データ 以下のようなデータを作成します。 https://genji.dl.itc.u-tokyo.ac.jp/data/tei/koui/54.xml 「校異源氏物語」のテキストデータに対して、anchorタグを使って、与謝野晶子訳のファイルとIDのペアを対応付ます。 <text> <body> <p> <lb/> <pb facs="#zone_2055" n="2055"/> <lb/> <seg corresp="https://w3id.org/kouigenjimonogatari/api/items/2055-01.json"> <anchor corresp="https://genji.dl.itc.u-tokyo.ac.jp/api/items/tei/yosano/56.xml#YG5600000300"/> やまにおはしてれいせさせ給やうに経仏なとくやうせさせ給 <anchor corresp="https://genji.dl.itc.u-tokyo.ac.jp/api/items/tei/yosano/56.xml#YG5600000400"/> 又の日はよかはに </seg> <lb/> ... このデータの作成にあたっては、以下のツールを開発して使用しました。 https://github.com/tei-eaj/parallel_text_editor 残念ながら2024-01-07時点では動作しませんが、動作イメージは以下をご確認ください。今後、本ツールの改修を行いたいと思います。 https://youtu.be/hOp_PxYUrZk 上記の作業の結果、以下のようなGoogleドキュメントが作成されます。 https://docs.google.com/document/d/1DxKItyugUIR3YYUxlwH5-SRVA_eTj7Gh_LJ4A0mzCg8/edit?usp=sharing 「校異源氏物語」の各行について、対応する与謝野晶子訳のIDを\[YG(\d+)\]の形で挿入されます。 2055-01 [YG5600000300]やまにおはしてれいせさせ給やうに経仏なとくやうせさせ給[YG5600000400]又の日はよかはに 2055-02 おはしたれはそうつおとろきかしこまりきこえ給[YG5600000500]としころ御いのりなとつけか 2055-03 たらひたまひけれとことにいとしたしきことはなかりけるをこのたひ一品の宮 2055-04 の御心ちのほとにさふらひ給へるにすくれたまへるけん物し給けりとみたまひ 2055-05 てよりこよなうたうとひたまひていますこしふかきちきりくはへ給てけれはお 2055-06 も〱しくおはするとのゝかくわさとおはしましたることゝもてさはきゝこえ 2055-07 給[YG5600000600]御物かたりなとこまやかにしておはすれは御ゆつけなとまいり給[YG5600000700]すこし人 2055-08 〱しつまりぬるに[YG5600000800]をのゝわたりにしり給へるやとりや侍とゝひ給へはしか侍 ... 源氏物語の冊毎のGoogleドキュメントがGoogleドライブに保存されます。 https://drive.google.com/drive/folders/1QgS4z_5vk8AEz95iA3q7j41-U3oDdfpx 処理 Googleドライブからのファイル名とIDの一覧を取得 Googleドライブとの接続 #| export import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError #| export class GoogleDriveClient: def __init__(self, credential_path): # If modifying these scopes, delete the file token.json. SCOPES = [ "https://www.googleapis.com/auth/drive.metadata.readonly" ] creds = None # The file token.json stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists("token.json"): creds = Credentials.from_authorized_user_file("token.json", SCOPES) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( credential_path, SCOPES ) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open("token.json", "w") as token: token.write(creds.to_json()) try: service = build('drive', 'v3', credentials=creds) self.drive_service = service except HttpError as e: print(e) print("Error while creating API client") raise e 一覧の取得 ...

Oxygen XML Editorのイメージマップエディタの使用例

Oxygen XML Editorのイメージマップエディタの使用例

概要 Oxygen XML Editorのイメージマップエディタの使用方法に関する説明です。 動画 https://youtu.be/9dZQ1v0Rky0?si=8EhAZdVsLqgPz2Rf 使用方法 以下のようなTEI/XMLファイルを用意します。<graphic>のurlの値は、当該ファイルからの相対パスや、PC上の絶対パス、およびインターネット上で公開されているURLを指定します。 以下の例では、TEI/XMLファイルと同じフォルダに格納されているdigidepo_3437686_pn_null_9c48d89b-e2ec-4593-8d00-6fbc1d29d1bd.jpgというファイルを参照しています。 <?xml version="1.0" ?> <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> <fileDesc> <titleStmt> <title>Sample</title> </titleStmt> <publicationStmt> <ab/> </publicationStmt> <sourceDesc> <ab/> </sourceDesc> </fileDesc> </teiHeader> <facsimile> <surface> <graphic url="digidepo_3437686_pn_null_9c48d89b-e2ec-4593-8d00-6fbc1d29d1bd.jpg"/> </surface> </facsimile> </TEI> 画面下部の「作者」というボタンをクリックすると、以下のように「イメージマップエディタ」が表示されます。上記の動画を参考に、アノテーションを付与します。 結果、以下のようにzoneタグが自動的に追加されます。 <?xml version="1.0" ?> <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> <fileDesc> <titleStmt> <title>Sample</title> </titleStmt> <publicationStmt> <ab/> </publicationStmt> <sourceDesc> <ab/> </sourceDesc> </fileDesc> </teiHeader> <facsimile> <surface> <graphic url="digidepo_3437686_pn_null_9c48d89b-e2ec-4593-8d00-6fbc1d29d1bd.jpg"/> <zone xml:id="zone_z3p_zll_szb" change="#ch1" lry="3960" lrx="2705" uly="730" ulx="2590"/> <zone xml:id="zone_fmm_xnv_szb" change="#ch2" lry="4038" lrx="1025" uly="700" ulx="850"/> </surface> </facsimile> </TEI> まとめ Oxygen XML Editorの利用に際して、参考になりましたら幸いです。 ...

TEI Publisher: TEI Publisher Demo Collectionの可視化例①

TEI Publisher: TEI Publisher Demo Collectionの可視化例①

概要 TEI Publisherの以下のページでは、さまざまな可視化例が紹介されています。 https://teipublisher.com/exist/apps/tei-publisher/index.html?query=&collection=test&sort=title&field=text&start=1 以降、複数の記事にわたって、上記の可視化例を紹介します。 Letter #6 from Robert Graves to William Graves (at Oundle School) November 15, 1957 概要 https://teipublisher.com/exist/apps/tei-publisher/test/graves6.xml 以下のように、地名や人名の一覧、および地図とともにテキストが表示されます。 以下のように説明されています。 A 20th century manuscript letter from Robert Graves where emphasis has been put on visualizing rich encoding of semantic information in the letter, in particular geographic and prosopographical data. The map is displayed with a pb-leaflet component. 機械翻訳 ロバート・グレイブスによる20世紀の写本書簡。書簡中の意味情報、特に地理的・韻律的データの豊富な符号化を視覚化することに重点が置かれている。地図はpb-leafletコンポーネントで表示される。 データ XMLファイルの特徴です。 teiHeader > profileDesc > abstract abstractタグの内容が上記の検索ページに表示されるようです。 ...

Nuxt3でXMLをフォーマットしてシンタックスハイライト表示する

Nuxt3でXMLをフォーマットしてシンタックスハイライト表示する

概要 以下の画像にあるように、Nuxt3を使ってXML形式のテキストデータを表示する機会がありましたので、その備忘録です。 インストール 以下の2つのライブラリを使用しました。 npm i xml-formatter npm i highlight.js 使い方 Nuxt3のコンポーネントとして、以下のようなファイルを作成しました。xml-formatterでXML形式の文字列をフォーマットし、さらにhighlight.jsを使ってシンタックスハイライトを行っています。 <script setup lang="ts"> import hljs from "highlight.js"; import "highlight.js/styles/xcode.css"; import formatter from "xml-formatter"; interface PropType { xml: string; } const props = withDefaults(defineProps<PropType>(), { xml: "", }); const formattedXML = ref<string>(""); onMounted(() => { // `highlightAuto` 関数が非同期でない場合は、 // `formattedXML` を直接アップデートできます。 // そうでない場合は、適切な非同期処理を行ってください。 formattedXML.value = hljs.highlightAuto(formatXML(props.xml)).value; }); const formatXML = (xmlstring: string) => { return formatter(xmlstring, { indentation: " ", filter: (node) => node.type !== "Comment", }); }; </script> <template> <pre class="pa-4" v-html="formattedXML"></pre> </template> <style> pre { /* 以下のスタイルは適切で、pre要素内のテキストの折り返しを制御しています。 */ white-space: pre-wrap; /* CSS 3 */ white-space: -moz-pre-wrap; /* Mozilla, 1999年から2002年までに対応 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } </style> まとめ TEI/XMLデータの可視化などにおいて、参考になりましたら幸いです。 ...

TEI ODDから変換可能なスキーマについて:RNG、XSD、DTDなど

TEI ODDから変換可能なスキーマについて:RNG、XSD、DTDなど

概要 以下の記事でODDの作成を試しました。 上記ではRomaというツールを使用していますが、作成したODDについて、以下に示す出力フォーマットがあることがわかります。 具体的には、「RELAX NGスキーマ」「RELAX NGコンパクト」「W3Cスキーマ」「文書型定義」「ISO Schematron制約」が挙げられます。 そこで、これらの違いについて、GPT-4に問い合わせてみたので、その結果を共有します。誤った内容も含まれるかもしれませんが、参考になりましたら幸いです。 Relax NG(RNG)とW3C XMLスキーマの違い Relax NG(RNG)とW3C XMLスキーマは、どちらもXML文書の構造と内容を定義するためのスキーマ言語ですが、いくつかの重要な違いがあります: 表記法 : RNG : 2つの構文を提供します。一つはXMLベースのもので、もう一つはよりコンパクトな非XMLの構文です。 W3C XMLスキーマ : XMLベースの構文のみを提供します。 柔軟性と明瞭性 : RNG : RNGは非常に柔軟で、人が読みやすい設計になっています。パターンベースのアプローチを取り、より直感的なモデリングが可能です。 W3C XMLスキーマ : より厳格で形式的なアプローチを取り、型システムが複雑ですが、これにより強力なデータタイピングが可能になります。 データタイピング : RNG : データタイプはDatatype Libraryを介してサポートされていますが、W3C XMLスキーマほど多様ではありません。 W3C XMLスキーマ : 豊富なビルトインデータタイプを提供し、正確なデータ型制約を設定できます。 拡張性 : RNG : 簡潔さと柔軟性により、スキーマ自体を容易に拡張できます。 W3C XMLスキーマ : 拡張性はありますが、より複雑な構造のため、理解と実装が難しくなる場合があります。 普及度 : RNG : シンプルさと強力なモデリング機能にも関わらず、W3C XMLスキーマほど広くは採用されていません。 W3C XMLスキーマ : より一般的に使用されており、多くのXML処理ツールやライブラリで標準的にサポートされています。 これらの違いにも関わらず、どちらの言語もXML文書の構造を定義し、文書の妥当性を検証するという共通の目的を持っています。選択はしばしば個々のプロジェクトのニーズや開発者の好みに依存します。 DTD(Document Type Definition)との関係は? DTD(Document Type Definition)は、XML文書の構造を定義するための一つの仕様で、W3C XMLスキーマやRelax NG(RNG)よりも歴史が古く、制約を記述する方法が限られています。DTDは非常にシンプルで、XMLの初期から使われている標準的な方法ですが、名前空間やデータ型などのより高度な概念をサポートしていません。 W3C XMLスキーマやRNGに比べて、DTDは次のような制約があります: ...

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

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というツールを用いて作成します。 ...

Visual Studio Code(VSCode)でVersioning Machine(VM5.0)を使用する

Visual Studio Code(VSCode)でVersioning Machine(VM5.0)を使用する

概要 Versioning Machine(VM5.0)は、校異情報の可視化を行うアプリケーションです。 http://v-machine.org/ ここでは、Visual Studio Code(VSCode)を用いて、自身が作成したTEI/XMLファイルを本アプリケーションで表示する方法について説明します。 なお、表示対象となるTEI/XMLファイルは、以下のように、<listWit>タグで校異情報が記述されているものです。 <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> <fileDesc> <titleStmt> ... </titleStmt> <publicationStmt> ... </publicationStmt> <sourceDesc> <listWit> <witness xml:id="WA"> <title xml:lang="ja">ヴァイマル版ゲーテ全集(略称WA)</title> <title xml:lang="de">Goethes Werke. herausgegeben im Auftrage der Großherzogin Sophie von Sachsen</title> </witness> <witness xml:id="UTL"> <title xml:lang="ja">東京大学総合図書館所蔵のゲーテ自署付書簡</title> <title xml:lang="de">Der Brief von Goethe an Ludwig Wilhelm Cramer vom 29. Dezember 1822 im Besitz der Universitätsbibliothek Tokio</title> </witness> </listWit> <msDesc sameAs="#UTL"> ... 後述しますが、本記事では以下で公開されている、東京大学総合図書館所蔵のゲーテ自署付書簡のテキストデータを使用します。 https://utda.github.io/goethe/data/xml/goethe.xml ソースコードのダウンロード 以下のページにアクセスします。 http://v-machine.org/download/ そして、以下の「Click here」をクリックします。 Click here to download the latest or earlier versions of the Versioning Machine. ...

CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。

CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。

概要 CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。 https://github.com/TEIC/CETEIcean 以下のissueを参考にさせていただきました。 https://github.com/TEIC/CETEIcean/issues/27 以下で紹介されているスクリプトでは、CETEIceanのv1.8.0では動作しなかったため、CETEIceanのv1.8.0とNuxt3で動作する最小限のリポジトリを作成しました。 デモページ https://nakamura196.github.io/ceteicean-nuxt3 ソースコード https://github.com/nakamura196/ceteicean-nuxt3 主なファイル https://github.com/nakamura196/ceteicean-nuxt3/blob/main/app.vue まとめ 参考になりましたら幸いです。またCETEIceanを開発してくださっている方々に感謝いたします。

TEI Critical Apparatus Toolboxを用いてTEI XMLをLaTeXに変換してみる

TEI Critical Apparatus Toolboxを用いてTEI XMLをLaTeXに変換してみる

概要 TEI Critical Apparatus Toolboxは、a tool for people preparing a natively digital TEI critical editionです。日本語訳の一例は以下です。 ネイティブ デジタル TEI クリティカル エディションを準備する人々のためのツール http://teicat.huma-num.fr/index.php 校異情報を可視化する機能を提供する他、複数の便利な機能を提供しています。 その中で、「TEI から LaTeX および PDF への変換」機能があることを教えていただいたので試してみます。 Print an edition 以下にアクセスします。 http://teicat.huma-num.fr/print.php this dummy edition fileという文字列のリンクをクリックして、以下のサンプルデータをダウンロードします。 http://teicat.huma-num.fr/print-feature-test-file.xml 上記のファイルを本ツールにアップロードします。変換に関する様々なオプションが用意されていますが、デフォルト設定のまま、画面下部の「送信」ボタンをクリックします。 すると、zipファイルがダウンロードされます。myEditionというフォルダが展開され、.log、.pdf、.texの3つのファイルが格納されていることが確認できます。 PDFの例は以下です。 TEXの例は以下です。 注意 2023年4月時点において、上記の機能は日本語を含むxmlファイルではうまく出力できませんでした。この点の改善についても今後検討してみたいと思います。 まとめ TEI/XMLファイルの変換ツール、フローを検討する上で、参考になりましたら幸いです。

TEI/XMLファイルからrespStmtのnameの値を抽出する方法(GPT-4による解説)

TEI/XMLファイルからrespStmtのnameの値を抽出する方法(GPT-4による解説)

TEI/XMLファイルからrespStmtのnameの値を抽出する方法: PythonでBeautifulSoupとElementTreeを使ったアプローチ この記事では、PythonのBeautifulSoupとElementTreeを使って、TEI/XMLファイルからrespStmtのnameの値を抽出する方法を紹介します。 方法1: ElementTreeを使う まず、Pythonの標準ライブラリであるxml.etree.ElementTreeを使って、respStmtのnameの値を抽出します。 import xml.etree.ElementTree as ET # XMLファイルを読み込む tree = ET.parse('your_file.xml') root = tree.getroot() # 名前空間を定義 ns = {'tei': 'http://www.tei-c.org/ns/1.0'} # respStmtのnameの値を抽出 name = root.find('.//tei:respStmt/tei:name', ns) # nameのテキストを表示 if name is not None: print(name.text) else: print("nameタグが見つかりませんでした。") 方法2: BeautifulSoupを使う 次に、BeautifulSoupを使って、respStmtのnameの値を抽出します。まず、beautifulsoup4とlxmlライブラリがインストールされていることを確認してください。インストールされていない場合は、以下のコマンドでインストールできます。 pip install beautifulsoup4 lxml 以下のコードで、BeautifulSoupを使ってrespStmtのnameの値を抽出できます。 from bs4 import BeautifulSoup # XMLファイルを読み込む with open('your_file.xml', 'r', encoding='utf-8') as file: content = file.read() # BeautifulSoupオブジェクトを作成 soup = BeautifulSoup(content, 'lxml-xml') # respStmtのnameの値を抽出 name = soup.find('respStmt').find('name') # nameのテキストを表示 if name: print(name.text) else: print("nameタグが見つかりませんでした。") どちらの方法でも、respStmtのnameの値をPythonで簡単に抽出することができます。あなたのプロジェクトに適した方法を選んでください。

app要素を含むTEI/XMLファイルに対して、編集距離を算出するプログラムを作成しました。

app要素を含むTEI/XMLファイルに対して、編集距離を算出するプログラムを作成しました。

概要 app要素を含むTEI/XMLファイルに対して、編集距離を算出するプログラムを作成しました。 以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/編集距離を算出するプログラム.ipynb XMLファイルをアップロードすると、witness間の類似度を算出します。 例 以下のXMLファイルをアップロードしてみます。 https://tei-eaj.github.io/koui/data/nakamura.xml 結果、以下のようなExcelファイルが得られます。witness間の類似度を一覧できます。 index name1 name2 distance ratio 0 中村式五十音 中村式五十音又様 10 0.85 1 中村式五十音 中村式五十音欠損本 7 0.8947368421052632 2 中村式五十音又様 中村式五十音欠損本 8 0.868421052631579 類似度の算出には、以下を使用しています。 https://pypi.org/project/python-Levenshtein/ まとめ テキストの比較方法については色々と検討の余地がありますが、witness間の定量的な比較の一例として参考になりましたら幸いです。 参考 以下で紹介している「二つのテキスト間の差分を抽出するプログラム」にも本機能を追加しました。

Visual Studio Live Shareを用いてTEI/XMLファイルを共同編集する(xmlでなくても可)

Visual Studio Live Shareを用いてTEI/XMLファイルを共同編集する(xmlでなくても可)

概要 Visual Studio Live Shareはリアルタイムの共同開発を可能にするVSCodeの拡張機能です。 https://visualstudio.microsoft.com/ja/services/live-share/ 今回は本拡張機能を使って、TEI/XMLファイルをリアルタイムに共同編集してみます。 デモ動画 共同編集の様子を動画にしました。 https://youtu.be/DzyuJAtzl90 画面右はローカル環境でVSCodeを使用しているユーザ(nakamura196)、画面左はVisual Studio Live Shareによって招待されたユーザ(Guest User)がオンラインのVSCode(vscode.dev)を用いて編集している例です。 1行目はローカルのユーザ(nakamura196)が編集し、1行目はオンラインの共同編集者(Guest User)が編集しています。以下で紹介したTEI/XMLのプレビュー画面も同期されています。 https://zenn.dev/nakamura196/articles/d2733cc49d1239 使い方 Visual Studio Live Shareの使い方は、以下のページを参考にしてください。とても簡単な操作で、共同編集環境を作成することができます。またユーザ毎に「閲覧のみ」「編集可」といった権限の設定ができるので、いろいろな使い方ができます。 https://learn.microsoft.com/en-us/visualstudio/liveshare/quickstart/share 簡単に使い方を紹介します。 招待する側 Visual Studio Live Shareをインストールし、以下のように、画面左のタブから「Live Share」を選択して、「Share」ボタンを押します。 「Invite participants」を押すと、以下のようなリンクがコピーされます。 https://prod.liveshare.vsengsaas.visualstudio.com/join?7D0781A4301C45E7669D4D32CCE870AEBE2B 招待される側 上記のURLにアクセスします。すると、以下のように、ユーザ設定に関するポップアップが右下に表示されます。匿名ユーザとして参加する、すでにアカウントをお持ちであればログインする、などを行います。 その後、以下のように、ホストの承認を待つステータスになります。 ホストが権限を設定することで、招待されたユーザが閲覧または共同編集できるようになります。 上記のデモでは、オンラインのユーザが拡張機能「TEI Japanese Editor」をインストールすることで、プレビュー画面も表示しています。 気づき 別の記事で以下のようなコメントを書きました。 なお、https://github.dev/ など、web版のVSCodeを使用することで、各ユーザが環境のセットアップを行う必要がなくなり、より簡便に編集環境を用意することができそうです。ただし、2023年1月時点ではScholarly XMLなどの拡張機能がweb版に非対応となっており、現時点でこのような環境を使用することは難しいです。 ただ今回の方法を用いると、ローカル環境のユーザ側ではScholarly XMLによるValidationを行うことができ、招待されたユーザはオンラインのVSCodeを使って簡単にセットアップができる、という形になったので、上記の課題を解決する一つの方法になり得るかもしれません。(もちろん、Scholarly XMLがweb版に対応すると解決しますが。) まとめ 今回はTEI/XMLを対象にしましたが、これに限るものではありません。 Visual Studio Live Shareはとても便利な拡張機能です。TEIの学習の際などにも有用な環境になると思います。 TEI/XMLなどの共同編集にあたり、参考になりましたら幸いです。

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

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を試す # ライブラリのインストール pip install jingtrang # rngファイルのダウンロード(tei_allを使用) wget https://raw.githubusercontent.com/nakamura196/test2021/main/tei_all.rng # validation対象のXMLファイルの用意(校異源氏物語テキストのダウンロード) wget https://kouigenjimonogatari.github.io/tei/01.xml OKな例 以下のように実行すると、何も出力されませんでした。 pyjing tei_all.rng 01.xml NGな例 一方、TEIのスキーマに合致しない以下のようなxmlファイルを用意しました。 <a>bbb</a> その実行結果は以下です。a要素ではなく、TEIまたはteiCorpus要素が必要と出力されました。このように、スキーマに合致するか否かのチェックができました。 pyjing tei_all.rng ng.xml /content/ng.xml:1:4: error: element "a" not allowed here; expected element "TEI" or "teiCorpus" (with xmlns="http://www.tei-c.org/ns/1.0") まとめ 無事に検証を行うことができました。 ただ今回のニーズはTEI/XMLの以外のスキーマに適合するかを検証する必要がありましたので、このrngファイルの作成方法や内容について、別の記事にまとめたいと思います。

WordをTEI/XMLに変換する

WordをTEI/XMLに変換する

概要 WordをTEI/XMLファイルに変換する機会がありました。調べてみたところ、TEIGarage ConversionなどのTEI公式のツールに加えて、以下のTEI Publisherでの変換例が見つかりました。 https://teipublisher.com/exist/apps/tei-publisher/test/test.docx.xml 上記の例では、Wordのスタイル情報を中心に、TEIのタグに変換しているようだったので、この方法を試してみました。なお今回は、TEI Publisherとは独立して使用することを目的として、python-docxライブラリを使用しました。 Wordファイル 以下のようなWordファイルを試作しました。いずれも仮ですが、「tei:persName」や「tei:warichu」といったスタイルを作成し、色などのスタイルを変更しました。スタイルを当てていくことで、簡易な構造化を行う仕組みです。 TEI/XMLへの変換 上記のようなWordファイルを入力として、スタイル情報を中心に、TEI/XMLに変換するスクリプトを作成しました。いずれpipなどを使って共有したいと考えています。 変換したTEI/XMLの例は以下です。まだまだ改善が必要ですが、validなTEI/XMLファイルに変換することができました。 <lb/> <seg> ワードの入力サンプル </seg> <lb/> <lb/> <seg type="dateline"> 日付の行にスタイル「dateLine」を使用してください。先頭に2文字の空白が入ります。 </seg> <lb/> <seg type="personline"> 名前の行にスタイル「personLine」を使用してください。末尾に2文字の空白が入ります。 </seg> <lb/> <seg> <ruby> <rb> 中村 </rb> <rt> なかむら </rt> <rt place="left"> さとる </rt> </ruby> の形で両側ルビを記述します。緑色が左ルビです。 </seg> <lb/> <lb/> <seg> <seg type="red"> 朱書 </seg> はスタイル「 <seg type="red"> red </seg> 」を使用してください。 </seg> <lb/> <lb/> <seg> 文字のサイズについては検討中です。 </seg> <lb/> <lb/> <seg> <persName> 中村覚 </persName> のような人名には、スタイル「 <persName> persName </persName> 」を使用してください。 </seg> <lb/> <lb/> <seg> 割注は <note type="割書"> あああああ <milestone unit="wbr"/> いいい </note> のように入力してください。正しく改行されるまで、全角スペースを入力してください。 <note type="割書"> こんな <milestone unit="wbr"/> スタイル </note> もあります。「こんな」の後に全角スペースを入れています。 </seg> <lb/> <lb/> <seg type="dateline"> 二〇二三年一月十七日 </seg> <lb/> <seg type="personline"> 作成:中村覚 </seg> <lb/> 別途開発中のTEI/XMLビューアで表示した例が以下です。<rt place="left">や朱書などのスタイルがまだ適用できていませんが、人名や割書などは再現することができました。 ...

Romaを用いてカスタマイズしたrngファイルを作成する:使用するTEIタグを限定する

Romaを用いてカスタマイズしたrngファイルを作成する:使用するTEIタグを限定する

概要 本記事では、Romaというウェブアプリケーションを用いて、 TEI ODD (One Document Does-it-all) のカスタマイズを試みます。 https://romabeta.tei-c.org/ TEI ODDについては、以下の公式サイトをご確認ください。勉強不足により、私自身も十分に理解できておりません。 https://wiki.tei-c.org/index.php/ODD ただ一つの用途として、TEIを用いたプロジェクトにおいて、使用する(具体的には、補助や検証を行う?)タグを限定することができます。 これにより、大量に用意されたTEIのタグに悩んでしまう、といった課題を軽減することができそうです。 今回は、以下で紹介した、ExcelからTEI/XMLを作成するフローで使用するタグを想定して、Romaを用いたodd/rngファイルのカスタマイズを行ってみます。 使用するタグ 本ユースケースでは、以下のタグを使用します。 テキスト関連 pb ab lb seg choice orig note reg 画像関連 facsimile surface label zone 上記のタグに限定したodd/rngファイルを作成します。 Romaの使用 Romaにアクセスします。 https://romabeta.tei-c.org/ 「SELECT ODD」において、「TEI Minimal」を選択してみます。 設定画面において、Titleなどを修正します。特に、Language関係の2項目を日本語に設定することをお勧めします。 例えばabタグなど、各プロジェクトで使用するタグのみを選択していきます。 編集が完了したら、「RelaxNG schema」を選択してダウンロードします。 合わせて「Customization as ODD」もダウンロードしておくことをお勧めします。このODDファイルをRomaのトップ画面のフォームからアップロードすることにより、追加の編集ができました。 XMLファイルへの追加 ダウンロードしたtei_excel.rngファイルを、編集対象とするXMLファイルと同じ階層に置いた場合には、以下のように<?xml-model ... ?>を追記します。 <?xml version="1.0" encoding="utf-8"?> <?xml-model href="tei_excel.rng" schematypens="http://relaxng.org/ns/structure/1.0" type="application/xml"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> ... </teiHeader> ... </TEI> 一方、githubなどのサーバにアップロードした場合には、以下のように、URLの形式で指定することもできます。 ...

ExcelからTEI/XMLを作成するフローの一例を作成しました。

ExcelからTEI/XMLを作成するフローの一例を作成しました。

概要 Excelで作成したデータから、TEI/XMLを作成するフローの一例を作成しました。 以下のようなTEI/XMLファイルが出力されます。pbタグを使ったページ区切り、lbタグを使った行IDの指定、choice・orig・regタグを使った複数表記、noteタグを使った注釈、およびIIIF画像との関連づけ、などに対応します。 <?xml version="1.0" encoding="utf-8"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> <fileDesc> <titleStmt> <title/> </titleStmt> <publicationStmt> <ab/> </publicationStmt> <sourceDesc> <ab/> </sourceDesc> </fileDesc> </teiHeader> <text> <body> <pb corresp="#page_22"/> <ab> <lb xml:id="page_22-b-1"/> <seg> いつれの御時にか女御更衣あまたさふらひ <choice> <orig> 給ける <note corresp="#page_22-b-1-20" type="校異"> 給けるーたまふ河 </note> </orig> <reg> たまふ </reg> </choice> なかにいとやむことなきゝは </seg> </ab> </body> </text> <facsimile source="https://dl.ndl.go.jp/api/iiif/3437686/manifest.json"> <surface source="https://dl.ndl.go.jp/api/iiif/3437686/canvas/22" xml:id="page_22"> <label> [22] </label> <zone lrx="1126" lry="1319" ulx="1044" uly="895" xml:id="page_22-b-1-20"/> </surface> <surface source="https://dl.ndl.go.jp/api/iiif/3437686/canvas/23" xml:id="page_23"> <label> [23] </label> </surface> </facsimile> </TEI> 上記のTEI/XMLデータの可視化の一例を以下に示します。画像、テキスト(original)、テキスト(Regularization)、注釈を同一画面上に表示しています。 なお注意点として、今回は校異源氏物語のテキストを用いていますが、校異情報を記述する際にはapp要素のほうが適切です。あくまでフローを説明するためのサンプルデータとしてご理解ください。 Excel 作成するExcelのサンプルデータは以下です。image, text, notesの3つのシートを持ちます。それぞれについて説明します。 ...