プロが教えるわが家の防犯対策術!

2つのテキストファイルを比較し、全文字数中、合致する文字数が幾つあり、差異のある文字数が幾つあるかを表示してくれるツールを探しています。
そのようなツールに心当たりのある方はいらっしゃいませんでしょうか?

差異のある行や位置をマークしたり、行数を表示してくれるツールは見つかるのですが・・・
そこからひとつひとつ手で文字数をカウントするのは辛く・・・

質問者からの補足コメント

  • 色々とご回答、アドバイス、ありがとうございました。

    テキスト比較をして、削除された文字数、追加された文字数をカウントしてくれるサイトがあったので、そちらを使ってみようと思います。
    http://lab.hidetake.org/diff/

    皆様、お手数をおかけして申し訳ございませんでした。

      補足日時:2020/01/04 15:14

A 回答 (9件)

そうなると、自分でツールを開発するしかなさそうですね。


形態素解析で分割してから比較するような感じで。

今さら聞けない「自然言語処理(NLP)」とは?
https://ainow.ai/natural_language_processing/
Python, Janomeで日本語の形態素解析、分かち書き(単語分割)
https://note.nkmk.me/python-janome-tutorial/
形態素解析をして日本語の文章を単語区切りにする方法
https://ai-kenkyujo.com/2017/10/02/word/
    • good
    • 1
この回答へのお礼

度々のご回答、アドバイス、ありがとうございます。

やはり自作するしかなさそうですか・・・
期待するものに近いことができそうなライブラリがGoogleにありそうですし、それを使って自作するか、
別途、アドバイスいただいた統計・推定を行う方向で検討してみます。

お手数をお掛けし申し訳ございませんでした。

お礼日時:2020/01/03 20:36

統計学を利用して推定するのもありですね。



① 差異のある行数をカウント
② ①の行から無作為に選ぶ
③ ②で選んだ行ごとの間違い文字をカウント
④ ②で選んだ行ごとの文字数をカウント
③ 全体数を統計学で推定する
    • good
    • 2

こういうやつですか?



文章差分表示(文字単位)
https://crocro.com/tools/item/diff_char.html

2014年度メディアで取り上げられている話題で注目された、オンラインの Diff ツール
その名もdifff
https://freesoft-100.com/review/difff.html

テキスト比較ツール difff《デュフフ》ver.6.1
https://difff.jp/
    • good
    • 2
この回答へのお礼

度々のご回答、ありがとうございます。

これも差異判定の仕方としては、WinMerge同様に想定通りなのですが、
差異のある文字数の表示まではしてくれ無さそうで・・・

申し訳ございません・・・

お礼日時:2020/01/02 14:13

WinMergeで出来そうな気がします。


差分データを作って文字数をWordとかで数えられます。

WinMergeで差分(不一致)データのみ表示させる方法
http://write-remember.com/archives/5180/
    • good
    • 2
この回答へのお礼

ご回答、ありがとうございます。

WinMergeで差異のある行数を把握するところまでは見つけられているのですが、
更にその中で、差異のある文字数(厳密でなくても可)を把握できないかと・・・

お礼日時:2019/12/31 16:32

それですと似ている文章ならば可能ですが、大きく違うものは1文字ずつ比較しなおさないといけないので時間ばかりかかり不可能です。

ずれる範囲を十文字以内とかに限定して良いならば可能かもしれませんが難しいですね。だから無かったのだと思います。
例えば行数が同じ文章を1行単位で比較ならば割と簡単に出来そうですが、改行が殆ど無いとかだとやはり無理ですけどね。
具体的に言うと「あいうえおかきくけこ」と「あいうえお~かきくけこ」(「~」は何万文字)の場合「かきくけこ」で出てくるまで調べ直さないといけないのが明白です。途中に「かきく」なんてものが有ったら「けこ」も同時に調べないといけないとか考えただけでも嫌になります
    • good
    • 1
この回答へのお礼

度々のご回答、ありがとうございます。

やはり無さそうですよね・・・
難しい&差異の定義が難しそうですもんね・・・

お手数をかけして申し訳ございませんでした。

お礼日時:2019/12/31 16:22

> 差異のある文字数が幾つあるか



例えば、
「ABCDEFG」
「ABBCDEFG」
は何文字違う事になるの?

Bが1個多いって数えるなら1か所だし。
上の行を基準に比較するならC~Gの5か所。
下の行が基準ならB~Gの6か所。


「abc
 def」
「ab
 cdef」
の違いを、
3文字目のcと改行コードの1バイト目の0x0d
4文字目の改行コードの1バイト目の0x0dと改行コードの2バイト目の0x0a
5文字目の改行コードの2バイト目の0x0aとc
の3か所だって事でOKなら、コマンドラインのFCコマンドを/bオプションでバイナリ比較すれば、違う個所を一覧してくれるので、FINDコマンドで「:」をカウントとか。
「テキストファイルを比較し、差異のある文字」の回答画像4
    • good
    • 1
この回答へのお礼

ご回答、ありがとうございます。

>例えば、
> 「ABCDEFG」
> 「ABBCDEFG」
>は何文字違う事になるの?

1か所として判定したいです。
判定のイメージは、比較ツール「winmerge」のイメージで出来ればと。

なのでFCコマンドだと、違うって判定が多くなりすぎてしまって・・・
スミマセン・・・

お礼日時:2019/12/30 17:03

もしかしたら誤解していたかもしれません。

順番とかは関係なく存在しているか?していないかの数のカウントで良いのでしょうか?
    • good
    • 1

あまり一般的でない用途なので、そういうプログラムはない可能性が高いですね。


テキストファイルを比較して、一致する文字数と一致しなかった文字数を出力するプログラムは難しくありません。

Perlを使うのなら、まずファイルAを読み込んで、各文字をキーにして連想配列を作ります。
次にファイルBを読み込んで、各文字をキーにして連想配列の存在をチェックして、もしその連想配列が存在すればその文字は両方のファイルに存在する、その連想配列が存在しなければその文字はファイルBにしか存在しない。
読み込むファイルの順序を変えて同様にすれば、ファイルBに存在して、ファイルAに存在しない文字はわかります。
行数にして20行程度のスクリプトです。

もし、Perlスクリプトを走らせられる環境があるなら、書いてもかまいませんが。
    • good
    • 1
この回答へのお礼

ご回答、ありがとうございます。

やはり無さそうですか・・・
プログラムを組むのが得意ではないので、既存のツールがあればと思ったのですが・・・

お礼日時:2019/12/30 16:43

作るのは簡単なんですが、例えば途中で1文字追加した場合、その後全てずれてしまいますよね。

それより前の文字数と以降の文字数(たまたま合った文字は合致の方へカウント)で良いのでしょうか?
また比較ですが文字単位でしょうか?それともバイト単位でしょうか?
    • good
    • 1
この回答へのお礼

ご回答、ありがとうございます。

比較は文字単位を考えています。
途中で文字の挿入があった場合、その後の文字は合っているので、挿入された文字数分をカウントできれば良いかなと。
比較ツール「winmerge」のイメージで、差異文字数カウントができればと。

お礼日時:2019/12/30 16:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!