Python的哈希函数在类似数据之间给出了很大的差异

时间:2016-07-02 15:10:44

标签: python hash

考虑以下哈希:

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

我知道为什么由于hash函数的实现而导致两个如此相似的对象之间出现如此大的差异。 是否还有其他散列算法能够为几乎相似的物体(如“蚂蚁”和“蚂蚁”)提供近似的结果?

基本上我想散列字符串,以便将它们用作svm中的功能。

1 个答案:

答案 0 :(得分: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'