当前目录下的excel文件的两列内容的相似度比较

本文介绍了如何使用Python的sklearn库对Excel文件中的文本数据进行特征提取,计算两段话之间的余弦相似度,并根据相似度判断其正确性,最终将结果保存为txt文件。
部署运行你感兴趣的模型镜像

# -- coding: utf-8 --**
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import pandas as pd
import os

# 获取当前目录
current_dir = os.getcwd()

# 获取当前目录下所有xlsx文件名
xlsx_files = [file for file in os.listdir(current_dir) if file.endswith(".xlsx")]
# 打印xlsx文件名
for file in xlsx_files:
print(file)
# 读取Excel文件
excel_file = file
data = pd.read_excel(excel_file)
# 提取第3列和第5列的值
column3_values = data.iloc[:, 1] # 第3列的值
column5_values = data.iloc[:, 3] # 第5列的值

# 打印提取的值
print("第3列的值:")
print(column3_values)

print("\n第5列的值:")
print(column5_values)

print(len(column3_values))
print(len(column5_values))
#
res=[]
# # 两段话
for i in range(len(column3_values)):
# 创建计数向量器
vectorizer = CountVectorizer().fit_transform([column3_values[i], column5_values[i]])
# 计算余弦相似度
cosine_sim = cosine_similarity(vectorizer)

# 提取余弦相似度值
similarity_value = cosine_sim[0][1]
if similarity_value>0.3:
res.append("正确")
elif similarity_value>0.05 and similarity_value<0.3:
res.append("部分正确")
else:
res.append("错误")
# res.append(similarity_value)

print("两段话的余弦相似度:", similarity_value)


# 指定txt文件名
txt_file =excel_file.replace(".xlsx","")+".txt"

# 将列表逐行写入txt文件
with open(txt_file, 'w') as f:
for item in res:
f.write("%s\n" % item)

print("内容已写入到", txt_file)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1. 项目概述 开发一个自动化数据处理流程,其核心功能是将一份非标准格式的源Excel文件中的数据,精准地填充到另一份预先定义好的标准模板Excel文件中。该流程需确保:模板中存在的字段被准确填充,模板中不存在的字段或数据则被严格忽略。 2. 核心输入与输出 输入文件1:源数据文件 (Source.xlsx) 描述:数据来源文件,其表格结构、列标题名称、列顺序与模板文件完全不同。 输入文件2:目标模板文件 (Template.xlsx) 描述:标准格式模板。定义了所有需要被填充的字段(列标题)和最终所需的格式。 输出文件:结果文件 (Output.xlsx) 描述:一个全新的文件,其格式与目标模板文件完全一致,但单元格中已填充了从源数据文件中匹配并提取出的数据。 3. 核心处理逻辑与要求 该流程必须严格遵循以下步骤: 第一步:字段映射关系的建立 (关键准备工作) 需求:由于两个文件格式完全不同,必须先由一个“映射表”来定义源数据文件中的哪一列数据,对应着目标模板文件中的哪一个字段。 实现方式(二选一或由AI提供): 由用户提供映射表:提供一个CSV或Excel文件,至少包含两列: 模板字段名:模板文件中的列标题名称。 源数据字段名:源文件中对应的列标题名称。 示例: 模板字段名 源数据字段名 员工编号 工号 姓名 name 部门 department_name 基本工资(元) Base Salary 由AI智能推荐映射:AI读取两个文件的列标题,基于语义相似度(如自然语言处理)智能推荐一个映射关系,但必须经过用户确认和修正后才能执行后续操作。 第二步:数据读取与匹配 程序读取目标模板文件,识别所有预设的列标题(字段),形成一个“需求字段列表”。 程序读取源数据文件的所有数据。 根据第一步建立好的字段映射关系,为需求字段列表中的每一个字段,找到源数据文件中对应的数据列。 第三步:数据提取与填充 创建一个新的Excel工作簿,其工作表结构和列标题顺序必须完全复制目标模板文件。 遍历源数据文件的每一行数据: 对于模板中的每一个字段(列),根据映射关系,从源文件的当前行中提取对应单元格的数据。 将提取到的数据,填充到新创建的工作簿的当前行的对应列中。 重要规则: 只填充有映射关系的字段:如果源数据文件中有某个字段(如生日)未在映射关系中与任何模板字段关联,则该数据必须被忽略,不得出现在输出文件中。 严格保持模板格式:输出文件除数据单元格外,不应改变模板的任何格式(如字体、颜色、公式、合并单元格、页眉页脚等)。通常这意味着只向模板的单元格写入值(Value),而非格式。 第四步:输出结果 将填充完数据的新工作簿保存为指定的结果文件 (Output.xlsx)。 4. 异常处理与考虑 数据缺失:如果源文件中某个被映射的字段下存在空单元格,则在输出文件的对应位置也应保留为空。 映射错误:如果提供的映射关系中,某个源数据字段名在源文件中不存在,程序应抛出明确错误,提示用户检查映射表,而不是继续执行。 数据格式转换:如果遇到需要简单转换的数据(如将源文件中的文本“¥1,000”转换为模板数字格式1000),可在需求中额外说明,AI可尝试处理。 5. 最终交付物 一个能够自动执行上述逻辑的脚本或程序(如Python Pandas代码)。 或一个清晰的、逐步的操作指南(如果使用Excel Power Query等工具实现)。 总结给AI的最终指令: “请根据上述需求,编写一个Python脚本(使用pandas库)。我需要提供三个输入:1.文件路径, 2. 模板文件路径, 3. 一个定义了模板字段名和源数据字段名对应关系的字典(或CSV文件路径)。脚本的核心任务是按照映射关系,将源文件的数据抽取出来,并严格按模板的字段顺序生成一个新Excel文件。模板中没有映射的字段,其数据绝对不能出现在输出中。”
09-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值