【问题标题】:removing tweets with partial similarity删除部分相似的推文
【发布时间】:2018-10-03 19:06:34
【问题描述】:

我是 python 的新手,也是 stackoverlfow 的新手。我有一个包含三列(ID、Date_Of_creation、Text)的 csv 文件。该文件中有近 25,000 个条目。我必须删除重复的推文(文本列),下面的代码可以很好地删除重复项:

import csv

csvInputFile = open('inputFile.csv', 'r',encoding="utf-8", newline='')
csvOutputFile = open('outputFile.csv', 'w', encoding="utf-8", newline='')

csvReader = csv.reader(csvInputFile)
csvWriter = csv.writer(csvOutputFile)
cleanData = set()

for row in csvReader:
    #print(row[3])
    if row[3] in cleanData: continue
    cleanData.add(row[3])
    csvWriter.writerow(row)

print(cleanData)
csvOutputFile.close()
csvInputFile.close()

此代码将删除所有具有相应 IDS 和创建日期的重复项。 作为分析的第二步,我注意到有一些转推在数据集中没有原始推文。我想保留那些转发。 简单来说,我想从文本列中删除所有重复的内容,无论是推文还是转推。例如:

“他们在这个阶段处理这种情况并不容易:……”

“RT @ReutersLobby:他们在这个阶段处理这种情况并不容易:……”

正如上面的推文和转推显示,“RT @ReutresLobby:”在转推中是额外的。所以上面的代码不会从最终集合中删除这个转推。我想删除所有此类推文的副本,因为重点是推文的文本和创建时间,而不是其他字段。 我试图搜索它,但在论坛上找不到任何相关内容。我希望有人能帮助我解决这个问题..

【问题讨论】:

    标签: python python-3.x csv twitter nlp


    【解决方案1】:

    我认为这是一个非常快速的解决方案:

    import csv
    import re
    
    csvInputFile = open('inputFile.csv', 'r',encoding="utf-8", newline='')
    csvOutputFile = open('outputFile.csv', 'w', encoding="utf-8", newline='')
    
    csvReader = csv.reader(csvInputFile)
    csvWriter = csv.writer(csvOutputFile)
    cleanData = set()
    
    for row in csvReader:
        #print(row[3])
        if row[3] in cleanData or re.sub('^RT @.*: ', '', row[3]) in cleanData:
            continue
        cleanData.add(row[3])
        csvWriter.writerow(row)
    
    print(cleanData)
    csvOutputFile.close()
    csvInputFile.close()
    

    我添加的条件是查看推文在去掉转发前缀后是否已经存在于清理集中。

    【讨论】:

    • 谢谢你的回答。它为 sub 中缺少的位置字符串给出错误:TypeError: sub() missing 1 required positional argument: 'string'
    • 查看帖子的编辑。在我最初的回复中,我确实错过了sub 的第三个参数,它应该是row[3]
    • 是的,我已经通过查看子函数的参数详细信息添加了重要的字符串参数。非常感谢您的回答:)
    • 现在它工作得很好。只是为了学习替代方案,我也在考虑使用“SequenceMatcher(None, string1,string2).ratio()”,因为我相信它也可以工作......
    • 我也在大约 100 条推文上对其进行了测试。我希望它也适用于非常大的数据集。因为有时这些数据集非常难以预测:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多