2017-07-26 9 views
0

私は私と私の名前のリストを持っていて、どのような名前のリストからも最も類似した5つの名前を検索しようとしています。 word2vecを適用したり、nltkのText.similar()を使用すると考えました。 でも、これらの名前が正しく機能するかどうかはわかりません。名前間の類似度測定?

どのような類似性の尺度が私のために働くだろう。 提案がありますか? これはどんなプロジェクトでもなく、私は新しいものを学びたいと思っていました。

+2

表面の類似性や意味の類似性はありますか?第1の場合、例えば。 "Steve"と "Steven"は類似していると見なされ、通常は文字列類似性測定を使用します。後者の場合、単語埋め込みを使用すると、 "Trump"と "Putin"という名前が類似していることがわかります(これらの名前は、埋め込みがニューステキストで訓練された場合、同様のコンテキストで表示されるためです)。 – lenz

+0

こんにちは@レンズ表面の類似性は私のために働くでしょう。どのようにそれを行うかについてのアイデア。 –

+0

私はこのライブラリをPythonの 'difflib'で見つけました。それは私の仕事です。何か案が。 –

答えて

4

NLTKを追加したので、あなたはPythonでうまく動作していると思います。
文字列を比較するための10種類のアルゴリズムを含むJellyfishライブラリを確認してください。それらの中には文字だけを比較するものもあれば、文字列がどのように発音されるかを推測し、綴りが異なるが類似している他のフレーズを特定するのに役立つものもあります。
実際のアルゴリズムはすべてCで書かれているので、このライブラリはかなり効率的です!
私はJaro-Winklerの距離が最も有用だと思います。 this paperもチェックしてください。

+1

ああ、私はPeter Christenのこの技術レポートを忘れていました(私が知っていたとしても)。これは、文字列の類似性の導入としてはるかに適しています。 Efremovaらのプロ肯定的なクラスと否定的なクラスの分離可能性についての素晴らしいグラフです。 – lenz

関連する問題