考虑以下哈希:
>>> hash('ant')
>>> 6440141934328138723
>>> hash('ants')
>>> 1001406009354992019
我知道为什么由于hash
函数的实现而导致两个如此相似的对象之间出现如此大的差异。
是否还有其他散列算法能够为几乎相似的物体(如“蚂蚁”和“蚂蚁”)提供近似的结果?
基本上我想散列字符串,以便将它们用作svm中的功能。
答案 0 :(得分:0)
Python hash()
不是设计师,但根据您关于SVM文本功能的其他问题,我认为您正在寻找stemming and/or lemmatization
这将处理您的单词,将所有相关单词映射到单个规范/标准化单词。
的示例>>> 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'