概要

二つのテキスト間の差分を抽出するプログラムを作成しました。以下のGoogle Colabからご利用いただけます。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/校異情報の生成.ipynb

有名なサービスとして「difff」がありますが、今回はPythonを用いて実装しています。

https://difff.jp/

テキスト間の差分の算出には、difflib.SequenceMatcherを使用しています。

https://docs.python.org/ja/3/library/difflib.html

使い方

出力方式として、HTMLファイルとTEIファイルの2種類を選ぶことができます。

HTML

HTMLファイルの出力結果例は以下です。

XML

XMLファイルの出力例は以下です。

<<<??T/xxETmmIEll<<I-xt/t/>vmmeteteoliexerdnH<it<xsesef/H>b/til=aifeob>o"dliadonhhee<<<ldy<d=rtrDt/p/s/ee>p/y"et>eituposDr>p>1fpstibuuoe>>.=:cl<tl<br<us<<0"/>etliplcl/rca//l<//"h/Siec>ieilc>paabaaatwttSaPcDsieppp/pppetwmlttuaet<<sD<<p<<p>p<<p<<pnpwtemibtsWwwtexlr>lr><lr>lr>cs.>>toliciiiWsmededlxededo:tT>nio>ttticlmgmgbmmgmgd/eiScn>nnt>:/li/ittaSee>iwwww>:wwwwnr-lmttssdiiiiiiiiigacetimss=ttttdtttt=w.<>ot"=========".o/n>xxa"""""""""ugrt<mm1####a####tigi/ll"tttt3ttttft/tp::>1212"1212-hnl>ii"""">""""8usedd>>>>>>//"b/>==>>?u1""<<<>s.ttl/<<<<e012bl/r//r"""/erldlrc>>>>md<eged<o>gam>mgan>p>>>ptppenxxtmm.<llc/::ow<iimi/dd/tw==lni""detaaasn24sse""j>s>>ps8>/tei-example/main/tei_all.rng"schematypens="http://relaxng.org/ns/structure/1.0"type="application/xml"?>

工夫した点として、TEI(Text Encoding Initiative)で定められているappタグを用いて出力します。そのため、appタグに対応したツールで可視化を行うことができます。

例えば、以下の「TEI Critical Apparatus Toolbox」を使用してみます。

http://teicat.huma-num.fr/witnesses.php

Google ColabでダウンロードされるXMLファイルを上記のリンク先にアップロードすることにより、以下のような可視化結果を得ることができます。

まとめ

二つのテキスト間の差分を取り扱う際の参考になれば幸いです。