Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

word-wise diff output HTML 単語単位のdiff

66 views
Skip to first unread message

Yasushi Shinjo

unread,
Nov 1, 2007, 11:06:22 PM11/1/07
to
新城@筑波大学情報です。こんにちは。

単語単位でテキストを比較して出力するプログラムとしては、
wdiff があります。これは、less, lv などと組合わせて使うと文
字端末で結果を表示てくれます。

% wdiff -t file1 file2 | lv -c

これもなかなかよいのですが、HTML で出力してくれるものがあれ
ばいいなあと思いました。つまり、Web ブラウザで表示すると見る
だけならもっと見やすくなると思います。そういうプログラムはな
いでしょうか。

HTML にするので、元の文書は、同じ画面に表示するというよりは、
ハイパーリンクでたどれるのでもいいのでしょう。あるいは、
JavaScript か何かでポップアップするとか。

Microsoft Word の文書の比較も、なかなかのものではあります。

動作環境としては、Unix (Linux, MacOSX含む) で動くものが欲し
いのですが、ネットニュースなので他の環境で動作するプログラム
の話でも歓迎されるでしょう。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

Yoshitaka Ikeda

unread,
Nov 2, 2007, 12:42:58 AM11/2/07
to
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> 新城@筑波大学情報です。こんにちは。


>
> これもなかなかよいのですが、HTML で出力してくれるものがあれ
> ばいいなあと思いました。つまり、Web ブラウザで表示すると見る
> だけならもっと見やすくなると思います。そういうプログラムはな
> いでしょうか。
>
> HTML にするので、元の文書は、同じ画面に表示するというよりは、
> ハイパーリンクでたどれるのでもいいのでしょう。あるいは、


ちょっと、ずれてるかもしれませんが、Wikipediaの
履歴比較がなかなかおもしろいです。
もっとも、あまりインタラクティブではないですが。

> いのですが、ネットニュースなので他の環境で動作するプログラム
> の話でも歓迎されるでしょう。

mediawikiはオープンソースなのでどう実装されているかは、
参考になるかもしれません。


--
I LOVE SNOOPY! でつ
Yoshitaka Ikeda mailto:ik...@4bn.ne.jp
My Honeypot: ho...@4bn.ne.jp <-don't send this address

Yasushi Shinjo

unread,
Nov 2, 2007, 2:56:59 AM11/2/07
to
新城@筑波大学情報です。こんにちは。

単語単位のdiffの話ですが、

In article <86lk9hi...@bsd2.4bn.ne.jp>


Yoshitaka Ikeda <ik...@4bn.ne.jp> writes:
> ちょっと、ずれてるかもしれませんが、Wikipediaの
> 履歴比較がなかなかおもしろいです。
> もっとも、あまりインタラクティブではないですが。

行単位の修正の中で、赤で修正個所が出てくるのはいいですね。
今の目的ではそれほどインタラクティブ性は求めていません。
Wikipedia だと細かい単位の修正が多数あるという感じですね。
今は、もう少し荒い単位の修正が小数ある(1個でもいい)という
のが欲しい所です。

> mediawikiはオープンソースなのでどう実装されているかは、
> 参考になるかもしれません。

今の Wikipedia の Wiki のソースは、オープンソース出はなかっ
たんですね。

とりあえず、思いついたのは、wdiff の出力のエスケープ・シーケ
ンスを解析して、HTML の <span> でタグ付けしていくというもの
です。後は、色を変えたり、visibility: を visible にしたり
hidden にしたりするというものです。

HTML の入力を wdiff に食わせたら、、、まあ今は考えないことに
します。

Yasushi Shinjo

unread,
Nov 2, 2007, 6:35:53 AM11/2/07
to
新城@筑波です。単語単位の比較の話で、ちょっと捕捉。

近所で、こんなものがありました。

Web Diff
http://labs.ceek.jp/diff/diff.cgi

比較したいテキストを、Web のフォームで送ると、結果が表示され
るというものです。完成度はもう少しだけど、センスとしては、い
い感じ。横長の表示は、もう少しなんとかして欲しい。1行が長す
ぎると、画面が大きくなります。あるマニュアルの新旧バージョン
を入れると、2560x1600 のモニタでも入りませんでした。

元々 Web ページの更新を比較するというプログラムでも、単語単
位の diff して使えるかもしれませんね。URL としてファイルが取
れて、コマンドラインから動くものがいいかな。いちいち、比較し
たいファイルを Web に公開するのは、面倒ですから。文書の内容
は、秘密にしたいし。

pegacorn

unread,
Nov 2, 2007, 7:26:59 AM11/2/07
to
こんにちは。

On 11月2日, 午後12:06, y...@is.tsukuba.ac.jp (Yasushi Shinjo) wrote:
> これもなかなかよいのですが、HTML で出力してくれるものがあれ
> ばいいなあと思いました。つまり、Web ブラウザで表示すると見る
> だけならもっと見やすくなると思います。そういうプログラムはな
> いでしょうか。

どこかにあったような気がすると思って探したら、こんなのありました。

DocDiff:
>http://www.kt.rim.or.jp/~hisashim/docdiff/>
DocDiff compares two text files and shows the difference.
It can compare files word by word, char by char, or line by line.
It has several output formats such as HTML, tty, Manued, or user-
defined
markup.
DocDiffは2つのテキストファイルを比較してその違いを表示します。
単語ごと、文字ごと、そして行ごとにファイルを比較できます。
結果を出力する形式は、HTML, tty(文字 端末向けのエスケープシーケンス),
Manued(真鵺道という校正用のマークアップ形式)などが用意されており、
ユーザ定義のタグを使うこともできます。

It supports several encodings and end-of-line characters, including
ASCII,
UTF-8, EUC-JP, Shift_JIS, CR, LF, and CRLF.
次のエンコーディング(文字コード)と行末コード(改行文字)をサポート
しています: ASCII, UTF-8, EUC-JP, Shift_JIS、そしてCR, LF, CRLF.
<<


--
pegacorn

Yasushi Shinjo

unread,
Nov 5, 2007, 1:22:07 AM11/5/07
to
新城@筑波大学情報です。こんにちは。
単語単位の diff で、HTML 出力するものの件です。
In article <1194002819....@e34g2000pro.googlegroups.com>

pegacorn <subscr...@gmail.com> writes:
> どこかにあったような気がすると思って探したら、こんなのありました。
> DocDiff:
> >http://www.kt.rim.or.jp/~hisashim/docdiff/>

これは、なかなかいいですね。情報、ありがとうございます。中身
は、Ruby で書かれていました。

1つ問題としては、行末の単語が、削除されてまた挿入されたと認
識されるものです。

http://www.kt.rim.or.jp/~hisashim/docdiff/readme.ja.html#tips

これは、時々起きるのかと思っていたら、元の文書から改行が抜か
れたものが返って来て、全ての行で発生します。wdiff にはそうい
う問題は出てこないので、差分を比較するエンジンの問題なのかと
思います。

diff のアルゴリズムは、けっこう難しいですよね。

0 new messages