使用 Python 去重算法对 Excel 文件中新闻内容进行相似度计算并删除

本教程将展示如何使用 Python 脚本,利用 TF-IDF 和 Levenshtein 距离算法对 Excel 文件中新闻内容进行去重,并删除相似度高于 80% 的文本。

代码示例

import pandas as pd
from gensim import corpora, models, similarities
import Levenshtein

# 读取 Excel 文件
df = pd.read_excel('news.xlsx')

# 定义去重函数
def remove_duplicate(df, threshold=0.8):
    # 将文本转换为词袋表示形式
    texts = df['content'].apply(lambda x: x.split())
    dictionary = corpora.Dictionary(texts)
    corpus = [dictionary.doc2bow(text) for text in texts]
    
    # 计算 tf-idf 值
    tfidf = models.TfidfModel(corpus)
    corpus_tfidf = tfidf[corpus]
    
    # 计算相似度矩阵
    index = similarities.MatrixSimilarity(corpus_tfidf)
    sims = index[corpus_tfidf]
    
    # 找到相似度高于阈值的文本对
    duplicates = set()
    for i, sim_row in enumerate(sims):
        for j, sim in enumerate(sim_row):
            if i != j and sim > threshold:
                duplicates.add((i, j))
    
    # 删除相似度高于阈值的文本
    df_filtered = df.copy()
    for i, j in duplicates:
        if i in df_filtered.index and j in df_filtered.index:
            text1 = df_filtered.loc[i, 'content']
            text2 = df_filtered.loc[j, 'content']
            # 使用 Levenshtein 距离计算文本相似度
            similarity = Levenshtein.ratio(text1, text2)
            if similarity > threshold:
                df_filtered = df_filtered.drop(j)
    
    return df_filtered

# 应用去重函数
df_filtered = remove_duplicate(df)

# 将结果保存为新的 Excel 文件
df_filtered.to_excel('news_filtered.xlsx', index=False)

代码解释

  1. 读取 Excel 文件: 使用 pandas 库读取名为 'news.xlsx' 的 Excel 文件。
  2. 定义去重函数: remove_duplicate 函数接受 DataFrame 和阈值参数,并返回去重后的 DataFrame。
  3. 文本转换为词袋表示: 使用 gensim 库将新闻内容转换为词袋表示形式,方便计算 TF-IDF 值。
  4. 计算 TF-IDF 值: 使用 gensim.models.TfidfModel 计算每个新闻内容的 TF-IDF 值。
  5. 计算相似度矩阵: 使用 gensim.similarities.MatrixSimilarity 计算所有新闻内容之间的相似度矩阵。
  6. 查找相似文本: 遍历相似度矩阵,找到相似度高于阈值的文本对。
  7. 使用 Levenshtein 距离计算相似度: 使用 Levenshtein.ratio 函数计算文本对的 Levenshtein 距离,以判断其相似度。
  8. 删除相似文本: 如果文本对的相似度高于阈值,则删除其中一个文本。
  9. 保存结果: 将去重后的结果保存为新的 Excel 文件 'news_filtered.xlsx'。

总结

本教程介绍了使用 Python 脚本,利用 TF-IDF 和 Levenshtein 距离算法对 Excel 文件中新闻内容进行去重的方法。该方法可以有效地去除重复或相似度较高的新闻内容,提高数据质量。

Python Excel 去重算法:使用 TF-IDF 和 Levenshtein 距离删除相似新闻

原文地址: https://www.cveoy.top/t/topic/nD0x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录