`
idning
  • 浏览: 138748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一段短句去重代码

阅读更多

弄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 为啥自己不做去重呢。。。。。

分享到:
评论
4 楼 amu_lucifer 2011-01-20  
不是那么简单的划定一条线就能去重的。。要考虑的问题多了去了。。。。
比如分词,等等
'''
邓丽欣6分钟视频
邓丽欣视频下载
邓丽欣6分钟
邓丽欣六分钟
都市猎人
林秀琴 失业
林秀琴失业
邓丽欣图片
邓丽欣
邓丽欣下载
邓丽欣 下载
一后三王
广都会市长装扮猎人
木秀于林,必将做琴
广都会市长装扮猎人
'''

你告诉我为什么最后两个不出来?难道你觉得是重复的?

当然,我这也只是提个建议,LZ的代码简单的过滤一下是可以

光就程序而言,
1,采用list关键字作为参数名?
2,效率不高


example:


class my_set(set):
    def __hash__(self):
        return hash(tuple(self))

def duplicate_detection(li): 
    str_set,res_list = my_set(),[]
    for s in li:
        temp_set = my_set(s)
        if not filter(lambda x:x.__and__(temp_set).__len__()>3,str_set):
            str_set.add(temp_set)
            res_list.append(s)
    return res_list
 
def main():
    list = u'''''
邓丽欣6分钟视频
邓丽欣视频下载
邓丽欣6分钟
邓丽欣六分钟
都市猎人
林秀琴 失业
林秀琴失业
邓丽欣图片
邓丽欣
邓丽欣下载
邓丽欣 下载
一后三王
广都会市长装扮猎人
木秀于林,必将做琴
'''.split('\n') 
    for rst in duplicate_detection(list): 
        print rst.encode("utf8") 
if __name__ == "__main__": 
    main() 




PS,说话言语间有得罪请莫怪。
3 楼 jamiesun 2010-05-13  
要去重复用set最好
2 楼 zwws 2010-04-28  
1. 收集所有的字符到一个列表(A)
2. 遍历项列表, 将"每个项的字符是否在A中存在"的结果以向量格式存至列表(B), 用于计算相同字符出现个数
3. 逐一对比, 将出现三次以下的项插入列表

你看cos的实现就好啦.
1 楼 fengzl 2010-03-12  
介绍下算法,这样看得更明白

相关推荐

    毕业论文去重降重工具

    二是句型转换,改变原句的结构,如将主动句改为被动句,或将长句拆分为短句;三是添加引述和引用,对于必要的引用内容,正确格式化引用可以避免被误判为抄袭。"PP文章伪原创降重助手2.0"会根据这些策略给出具体的...

    中文首拼代码输入法 C++中文输入法 自由中文输入法 多行短句输入法

    【标题】中的“中文首拼代码输入法 C++中文输入法 自由中文输入法 多行短句输入法”指的是一个编程实现的中文输入法系统,它基于C++语言开发,具备首拼音编码功能,同时支持五笔码和拼音的混合输入。这种输入法旨在...

    999英语常用短句(基础版)

    【标签】:"999常用短句" 表明这是一份包含999个常用英语短句的集合,覆盖了日常生活的各种情境,从问候、道别、表达感受、提出请求到谈论天气、购物、旅行等各种话题。 【部分内容】中的短句展示了英语口语中常见的...

    看幽默漫画学日语短句(01-30)

    《看幽默漫画学日语短句(01-30)》是一本独特而有趣的日语学习资源,它结合了幽默漫画与实用的日语短句,旨在帮助学习者在轻松愉快的氛围中掌握日语基础知识。这个压缩包包含了一个名为“看幽默漫画学日语短句(01-...

    代码常用的VBA短句带注释.doc

    3. `Application.CommandBars("Standard").Controls(2).BeginGroup = True`: 这行代码将常用工具栏的第二个按钮前插入一个分隔符,以便组织工具栏上的按钮。 4. `.WrapText` 属性:用来控制单元格内容是否自动换行...

    外国人嘴边的短句精选.pdf

    这份文件名《外国人嘴边的短句精选.pdf》旨在为英语学习者提供实用的、高频出现的英语口语短句,并强调了这些短句的实用性,帮助英语初学者练习和提高口语能力。文档内容包括各种日常生活、社交互动、情感表达、评论...

    考试加油鼓励祝福短句

    这段文字汇集了多种鼓励祝福的短句,主要面向即将参加考试的人群,特别是高考考生。在这些短句中,我们可以提炼出以下几点关于考试、学习态度和人生态度的重要知识点: 1. 勤奋与努力:多条短句强调了努力的重要性...

    常用西班牙短句型短句子

    【西班牙语常用短句】 学习西班牙语,掌握一些基本的短句是非常重要的,这不仅可以帮助你在日常交流中表达自己的需求,还能增进与讲西班牙语人士的沟通。以下是一些常用的西班牙语短句及其应用场景: 1. 问候: -...

    基于matlab实现卷积神经网络的汉语短句语音识别项目源码(高分项目)

    基于matlab实现卷积神经网络的汉语短句语音识别项目源码(高分项目),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就...

    228句最常用英文口语短句

    【标题】和【描述】提及的是一个英文口语学习资源,主要涵盖了日常生活和工作中最常用的英文口语短句。这些短句简单实用,适用于各种情境,帮助提高日常交流能力。 【标签】"常用英文口语短句"强调了这个资源的实用...

    400条英语短句+中文翻译

    标题 "400条英语短句+中文翻译" 暗示这是一份学习资源,旨在帮助用户掌握和理解400个常见的英语短句,并提供了对应的中文翻译,以促进英语学习者的语言理解和记忆。这样的材料对于那些希望提高日常英语交流能力,...

    短句独立成段作文训练.doc

    【短句独立成段作文训练】是一种写作技巧,旨在通过简短、独立的句子来增强文章的表现力,使读者能够更清晰地感受到作者所描绘的情境。这种写作手法常见于文学创作,尤其在散文和诗歌中,能有效地抓住读者的注意力,...

    英语短句100句精华

    【英语短句100句精华】是一篇针对英语学习者的资源,特别适合正在准备考研的人群。这些短句涵盖了日常对话、商务交流以及情感表达等多个方面,旨在帮助学习者提高英语口语和实际应用能力。 从提供的部分句子中,...

    【木小禾素材】100句人生格言短句

    【木小禾素材】100句人生格言短句

    看幽默漫画学日语短句

    《看幽默漫画学日语短句》是一款独特的学习资源,旨在通过轻松幽默的漫画形式,帮助学习者掌握日常的日语短句。这种教学方法既有趣又实用,将语言学习与娱乐相结合,使得学习过程不再枯燥乏味。漫画中的场景贴近生活...

    VBA起步——常用带解释的VBA短句

    1. `[A65536].End(xlUp).Row`: 这段代码用于找到A列中最后一个非空单元格的行号,即A列的末行。`xlUp`参数表示向上查找。 2. `[A1].End(xlDown).Row`: 这个短句找出A列第一个非空单元格的行号,从A1开始向下查找。 ...

    日语流行口语极短句888个

    ~~~~~日语流行口语极短句888个~~~~~~~~~~~~

    (代码)常用的VBA短句(带注释).doc

    上述提供的VBA短句是一些常见的实用技巧,用于处理Excel工作簿中的数据、操作界面元素以及设置工作表属性。以下是对这些短句的详细解释: 1. `[A65536].End(xlUp).Row`:找到A列从底部向上第一个有值的行号。这是...

    中文小说短句序列文本复述数据集

    中文小说短句序列文本复述数据集

Global site tag (gtag.js) - Google Analytics