LoginSignup
12
10

More than 5 years have passed since last update.

文字列の編集操作・差分を可視化する

Last updated at Posted at 2018-06-04

背景

レーベンシュタイン距離などの編集距離をメトリクスとして使っている時、どこが異なっているのか分析したいことがありました。
そんな背景から手軽に編集操作・差分を整形・カラー表示できるPythonライブラリを作成しましたので紹介します。

できること

すももも桃も桃のうち
すもももももももものうち

このような修正前・修正後文字列のペアの編集差分を以下のように表示できます。
削除・置換前の文字をで、
挿入・置換後の文字をで、
操作する必要がない文字をで表示しています。

HTML出力

スクリーンショット 2018-06-04 17.31.59.png

Consoleカラー出力

スクリーンショット 2018-06-04 18.01.06.png

インストール

$ pip install visedit
執筆時現在Python3以降にのみ対応。

コード例

コード例(コンソールでのカラー出力)

from visedit import StringEdit

# 修正前の文字列
source_str = "すももも桃も桃のうち"

# 修正後の文字列
target_str = "すもももももももものうち"

se = StringEdit(source_str, target_str)

# コンソール出力する場合
print(se.generate_text())
# 色変更も可能
se = StringEdit(source_str, target_str, text_color_settings={
    "wrong": "YELLOW", # 削除・置換前文字を黄に
    "correct": "GREEN", # 挿入・置換後文字を緑に
    "base": "WHITE", # 操作なし文字を白に
})
print(se.generate_text())

コード例 (IPythonでのHTML出力)


from visedit import StringEdit
from IPython.display import HTML

# 修正前の文字列
source_str = "すももも桃も桃のうち"

# 修正後の文字列
target_str = "すもももももももものうち"

se = StringEdit(source_str, target_str)
HTML(se.generate_html())
# HTMLも色変更も可能
se = StringEdit(source_str, target_str, html_color_settings={
    "wrong": "YELLOW", # 削除・置換前文字を黄に
    "correct": "GREEN", # 挿入・置換後文字を緑に
    "base": "BLACK", # 操作なし文字を黒に
})
HTML(se.generate_html())

色は以下をサポートしています。

BLACK
RED
GREEN
YELLOW
BLUE
PURPLE
CYAN
WHITE

 おわりに

ご意見・ご要望あれば、お気軽にお願いします。

12
10
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10