👻
二つのテキスト間の差分を抽出するプログラムを作成しました。
概要
二つのテキスト間の差分を抽出するプログラムを作成しました。以下のGoogle Colabからご利用いただけます。
有名なサービスとして「difff」がありますが、今回はPythonを用いて実装しています。
テキスト間の差分の算出には、difflib.SequenceMatcher
を使用しています。
使い方
出力方式として、HTMLファイルとTEIファイルの2種類を選ぶことができます。
HTML
HTMLファイルの出力結果例は以下です。
XML
XMLファイルの出力例は以下です。
<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="https://raw.githubusercontent.com/ldasjp8/tei-example/main/tei_all.rng" schematypens="http://relaxng.org/ns/structure/1.0" type="application/xml"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Title</title>
</titleStmt>
<publicationStmt>
<p>Publication</p>
</publicationStmt>
<sourceDesc>
<listWit>
<witness xml:id="t1">中村式五十音</witness>
<witness xml:id="t2">中村式五十音又様</witness>
</listWit>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<p>あいうえお <lb/>
<app xml:id="a1">
<lem wit="#t1">か</lem>
<rdg wit="#t2">こけ</rdg>
</app>きく <app xml:id="a2">
<lem wit="#t1">けこ</lem>
<rdg wit="#t2">か</rdg>
</app>
<lb/>
さしすせそ <lb/>
た <app xml:id="a3">
<lem wit="#t1">ちぬ</lem>
<rdg wit="#t2">じづ</rdg>
</app>てと <app xml:id="a4">
<lem wit="#t1"/>
<rdg wit="#t2"/>
</app>
</p>
</body>
</text>
</TEI>
工夫した点として、TEI(Text Encoding Initiative)で定められているapp
タグを用いて出力します。そのため、app
タグに対応したツールで可視化を行うことができます。
例えば、以下の「TEI Critical Apparatus Toolbox」を使用してみます。
Google ColabでダウンロードされるXMLファイルを上記のリンク先にアップロードすることにより、以下のような可視化結果を得ることができます。
まとめ
二つのテキスト間の差分を取り扱う際の参考になれば幸いです。
Discussion