2017-12-20 16 views
0

はじめに、私はPythonにはかなり新しく、主にデータ解析にパンダを使用する方法を知っています。Python - Levenshtein距離に基づいてList AからList Bに最も近い文字列を割り当てます(理想的にはパンダを使用)

私は現在、100の以上のエントリの2つのリスト、"キーワード""グループ"を持っています。

私はレーベンシュタインを使用して、リスト「キーワード」、リスト「グループ」の最も近いエントリの各エントリに割り当てられる出力(パンダで理想的にデータフレーム)を生成したいと思います距離メソッド。

ご協力いただきありがとうございます。

答えて

1
from editdistance import eval as levenshtein 
import pandas as pd 

keywords = ["foo", "foe", "bar", "baz"] 
groups = ["foo", "bar"] 

assigned_groups = [min(groups, key=lambda g: levenshtein(g, k)) 
        for k in keywords] 

df = pd.DataFrame({"Keyword": keywords, "Group": assigned_groups}) 
# Group Keyword 
# 0 foo  foo 
# 1 foo  foe 
# 2 bar  bar 
# 3 bar  baz 

editdistanceを使用します。 pip install editdistanceで取得してください。

このアルゴリズムはO(mn)です。ここで、mはキーワードの長さで、nはグループの長さです。

関連する問題