1

私は単語フレーズを持っているので、下の例のように分類したいと思います。同様の単語フレーズを分類する

例:上記の3つのワードフレーズが一つのカテゴリの下に来るべきで言及したことを理解することは容易である人間のために

adaptive and intelligent educational system 
adaptive and intelligent tutoring system 
adaptive educational system 

簡単な方法はありますか?

現在、私はlevenshtein距離を使用して次のようにアフィニティ伝播クラスタリングアルゴリズムを使用しています。

words = np.asarray(words) #So that indexing with a list will work 
lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in words] for w2 in words]) 

affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed", damping=0.5) 
affprop.fit(lev_similarity) 
for cluster_id in np.unique(affprop.labels_): 
    exemplar = words[affprop.cluster_centers_indices_[cluster_id]] 
    cluster = np.unique(words[np.nonzero(affprop.labels_==cluster_id)]) 
    cluster_str = ", ".join(cluster) 
    print(" - *%s:* %s" % (exemplar, cluster_str)) 

しかし、私は望ましい出力を得られませんでした。したがって、私の望む結果を得るための適切なアプローチを提案してください。

+1

ここをクリックしてください:https://stackoverflow.com/questions/62328/is-there-an-algorithm-that-tells-the-semantic-similarity-of-two-phrases/43213509 – polm23

+0

ありがとう。非常に便利です。 –

答えて

0

Levenshtein距離は文字に作用します。

このような観点から、「教育」と「教授」は可能な限り異なるものです。

意味的類似性によってクラスタ化する場合は、文字レベルの類似性を使用しないでください。

残念ながら、意味の類似性は非常に難しいです。あなたは何とか巨大な知識ベースを使用する必要があります。例えば、「教師」と「教育」が関連していることを知るために、ワールドワイドウェブ全体を使用してください。または、たとえばWordNetなど

+0

あなたは、単一の言葉に基づいて目的に合った方法を*定義する*必要があります。誰かが既にあなたのために数学とコードを書いているとは思わないでください! –

関連する問題