一段短句去重代码

弄google 热榜,重复问题实在是太严重了。。。
比如:http://www.google.cn/rebang/clip?bid=12000000&length=8&num=15

 

写了一段代码,用于去重:

'''
输入字符串数组,return 去重后的数组
implement in 1 hour..
'''
def duplicate_detection(list):
    dict = []
    for str in list:
        for char in str:
            if char not in dict:
                dict.append(char)
    def exist(str ,char): 
        if str.find(char) != -1:
            return 1
        return 0
    vec_cache = {}
    '''把str转换为向量'''
    def str2vec(str):
        if str not in vec_cache:
            vec_cache[str] = [exist(str, char) for char in dict]
            #print str, '->', vec_cache[str]
        return vec_cache[str]
    
    def cos(str1, str2):
        v1 = str2vec(str1)
        v2 = str2vec(str2)
        rst = 0
        for i in range(0, len(v1)):
            rst += v1[i] * v2[i]
        return rst#相同字符的个数
    threshold = 3
    rst = []
    for str in list :
        if all(cos(str,tmp)< threshold for tmp in rst):
            rst.append(str)
    return rst

def main():
    print duplicate_detection([
            'abc',
            'abcd',
            'def'
            ])
    list = u'''
邓丽欣6分钟视频
邓丽欣视频下载
邓丽欣6分钟
邓丽欣六分钟
都市猎人
林秀琴 失业
林秀琴失业
邓丽欣图片
邓丽欣
邓丽欣下载
邓丽欣 下载
一后三王
'''.split('\n')
    for rst in duplicate_detection(list):
        print rst
if __name__ == "__main__":
    main() 


输出:

邓丽欣6分钟视频
都市猎人
林秀琴 失业
一后三王
 

效果不错噢


google 为啥自己不做去重呢。。。。。

你可能感兴趣的:(算法,cache,Google)