以下是实现该功能的Python代码:

import pandas as pd
import jieba
from simhash import Simhash


# 对文本进行分词
def cut_text(text):
    seg_list = jieba.cut(text)
    return ' '.join(seg_list)


# 计算Simhash值
def get_simhash(text):
    tokens = cut_text(text).split()
    return Simhash(tokens)


# 计算文本相似度
def get_similarity(text1, text2):
    hash1 = get_simhash(text1)
    hash2 = get_simhash(text2)
    return hash1.similarity(hash2)


# 读取Excel文件
df = pd.read_excel('news.xlsx')
content_list = df['content'].tolist()


# 去重
dup_list = []
new_content_list = []
for content in content_list:
    if content not in dup_list:
        dup_list.append(content)
        new_content_list.append(content)


# 删除相似度高于0.8的文本
delete_list = []
for i, content1 in enumerate(new_content_list):
    for j, content2 in enumerate(new_content_list[i+1:]):
        sim = get_similarity(content1, content2)
        if sim > 0.8:
            delete_list.append(content2)


# 保存结果到新的Excel表
df_new = pd.DataFrame({'content': new_content_list})
df_new.to_excel('news_new.xlsx', index=False)


# 打印删除的文本数量
print('删除的文本数量:', len(delete_list))

其中,需要安装以下库:

  • pandas:用于读取和保存Excel文件
  • jieba:用于中文分词
  • simhash:用于计算Simhash值和文本相似度

在运行代码前,需要将Excel文件(news.xlsx)放在代码所在的目录中,并保证该文件中有一列名为“content”的列,表示新闻内容。运行代码后,会生成一个新的Excel文件(news_new.xlsx),其中已经去重并删除了相似度高于0.8的文本。同时,会在控制台打印删除的文本数量。

使用Simhash算法去除Excel中新闻内容重复文本

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

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