2016-07-02 8 views
1

には、以下のハッシュを考えてみましょう:Pythonのハッシュ関数は、同様のデータとの間に大きな差を与える

>>> hash('ant') 
>>> 6440141934328138723 
>>> hash('ants') 
>>> 1001406009354992019 

私は2つの非常に似たオブジェクトとの間のこのような大きな差がhash関数の実装のために発生している理由を知っています。 ( 'ant'や 'ants'のような)ほぼ類似したオブジェクトに対して近い結果をもたらす他のハッシングアルゴリズムがありますか?

基本的に私はsvmの機能としてそれらを使用するために文字列をハッシュしたかったのです。

+0

使用base64方式ではなく – YOU

+0

も同様で、あなたは同音のようなアルゴリズムを試し発音がを参照する場合。いくつかのpythonパッケージがあります。 –

答えて

0

Pythonのhash()は、そのためのデザイナーではありません、しかし、SVMのためのテキスト機能についてあなたの他の質問に基づいて、私はあなたがこれはすべてをマップすると、あなたの言葉を処理するために起こっているstemming and/or lemmatization

を探しているのだと思います単一の正準/正規化された単語に変換する。

ここで時々ステマではない、本当に文字列英語の単語に幹しますが、関連語をにマップするためにあなたが望むすべてがあるので、それは、あなたの目的のために大丈夫ですNLTK Python library

>>> stemmer = SnowballStemmer('english') 
>>> from nltk.stem.snowball import SnowballStemmer 
>>> stemmer = SnowballStemmer('english') 
>>> stemmer.stem('ant') 
u'ant' 
>>> stemmer.stem('ants') 
u'ant' 
>>> stemmer.stem('great') 
u'great' 
>>> stemmer.stem('greatness') 
u'great' 

との例です同じ表現。

>>> stemmer.stem('awesome') 
u'awesom' 
>>> stemmer.stem('awesomeness') 
u'awesom' 
関連する問題