diff --git a/file_paper_analysis.py b/file_paper_analysis.py deleted file mode 100644 index d195f1f..0000000 --- a/file_paper_analysis.py +++ /dev/null @@ -1,119 +0,0 @@ -import os -import json -import pandas as pd # 用于将结果保存到Excel -from zhipuai import ZhipuAI # 假设你已经安装并配置好ZhipuAI - -# 定义保存结果到Excel的函数 -def append_to_excel(results, output_file, column_names): - df = pd.DataFrame(results, columns=column_names) - if os.path.exists(output_file): - # 如果文件已存在,则追加数据 - existing_df = pd.read_excel(output_file) - df = pd.concat([existing_df, df], ignore_index=True) - df.to_excel(output_file, index=False) - print(f"结果已保存到 {output_file}") - -def process_file(api_key, file_path, messages,question_types): - # 初始化ZhipuAI客户端 - client = ZhipuAI(api_key=api_key) - try: - with open(file_path, 'rb') as uploaded_file: - file_object = client.files.create(file=uploaded_file, purpose="file-extract") - file_content = json.loads(client.files.content(file_id=file_object.id).content)["content"] - client.files.delete(file_id=file_object.id) - - # 存储每个message的结果 - results = {} - for i, message_template in enumerate(messages): - message_content = message_template.format(file_content=file_content) - response = client.chat.completions.create( - model="glm-4-long", - temperature=0.0, - messages=[{"role": "user", "content": message_content}], - ) - answer = response.choices[0].message.content.strip() - question = question_types[i+1] - results[question] = answer # 将答案存储到results字典中 - return results # 返回每个分析结果 - except Exception as e: - print(f"处理文件 {os.path.basename(file_path)} 时出错: {e}") - return {} - -def main(api_key, file_path_or_folder, output_excel): - print("===========================开始处理文件===========================") - - - # 获取绝对路径 - file_path_or_folder = os.path.abspath(file_path_or_folder) - output_excel = os.path.abspath(output_excel) - - # 定义每个问题的类型,作为Excel中的列标题 - question_types = [ - "文件名", - "撰写摘要", - "摘要", - "作者", - "会议/期刊", - "主要解决的问题", - "提出的方法", - "所使用数据集", - "评估方法的指标", - "实验的表现", - "论文所做的工作", - ] - - # 对应的 message_content,分析每篇论文 - messages = [ - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,并撰写一份论文摘要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,提取论文的摘要原文,摘要在Abstract之后,Introduction之前。", - "请对\n{file_content}\n的内容进行分析,告诉我全部作者是谁,按以下格式列出:\n```\n作者1, 作者2, 作者3\n```。", - "请对\n{file_content}\n的内容进行分析,告诉我这篇论文发表在哪个会议/期刊,不需要推理过程,直接回答。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,只告诉我主要解决的问题有哪些,其他内容不需要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,只告诉我提出的方法有哪些,其他内容不需要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,只告诉我所使用数据集有哪些,其他内容不需要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,只告诉我评估方法的指标有哪些,其他内容不需要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,只告诉我实验的表现,其他内容不需要。", - "你是人工智能领域的专家,请对\n{file_content}\n的内容进行分析,总结论文所做的工作,包括动机、贡献点等,其他内容不需要。", - ] - - # 检查或创建 Excel 文件 - if not os.path.exists(output_excel): - # 如果文件不存在,则创建并写入标题行 - pd.DataFrame(columns=question_types).to_excel(output_excel, index=False) - if os.path.isfile(file_path_or_folder): - if file_path_or_folder.lower().endswith(".pdf"): # 确保只处理PDF文件 - # 处理单个文件 - file_path = file_path_or_folder - print(f"正在处理文件: {os.path.basename(file_path)}") - try: - analysis_results = process_file(api_key, file_path, messages,question_types) - if analysis_results: - result = {"文件名": os.path.basename(file_path)} - result.update(analysis_results) # 将每个问题的分析结果加入字典 - append_to_excel([result], output_excel, question_types) - except Exception as e: - print(f"处理文件 {os.path.basename(file_path)} 时出错: {e}") - else: - print(f"文件 {os.path.basename(file_path_or_folder)} 不是PDF文件,跳过处理") - elif os.path.isdir(file_path_or_folder): - # 遍历源文件夹中的所有文件 - for root, dirs, files in os.walk(file_path_or_folder): - for filename in files: - if filename.lower().endswith(".pdf"): # 确保只处理PDF文件 - file_path = os.path.join(root, filename) - print(f"正在处理文件: {filename}") - try: - analysis_results = process_file(api_key, file_path, messages,question_types) - if analysis_results: - result = {"文件名": filename} - result.update(analysis_results) # 将每个问题的分析结果加入字典 - append_to_excel([result], output_excel, question_types) - except Exception as e: - print(f"处理文件 {filename} 时出错: {e}") - else: - print(f"文件 {os.path.basename(file_path_or_folder)} 不是PDF文件,跳过处理") - print("===========================处理完成===========================") - -if __name__ == "__main__": - # API Key, 待解析文件路径, 输出文件路径 - main("API Key", "待解析文件路径", "输出文件路径") diff --git a/file_paper_summary.py b/file_paper_summary.py index d7e8911..7cdc473 100644 --- a/file_paper_summary.py +++ b/file_paper_summary.py @@ -3,6 +3,15 @@ import json import time import pandas as pd # 用于将结果保存到Excel from zhipuai import ZhipuAI # 假设你已经安装并配置好ZhipuAI +# file-name:print_name.py +import argparse +import dotenv + +def get_parser(): + parser = argparse.ArgumentParser(description="Demo of argparse") + parser.add_argument('--path', default='Great') + + return parser def process_file(api_key, file_path, messages): # 初始化ZhipuAI客户端 @@ -85,8 +94,14 @@ def main(api_key, file_path_or_folder): summary_question+="请你根据以上不同论文及其内容,对这些论文生成一个综述,比较每篇论文提出方法的优劣,包括采用相同指标相同数据集所进行的实验结果的比较,讨论各方法的实际表现;最后,总结每篇论文的研究动机和贡献点,比较各论文在创新和实用性方面的不同之处,概括下这些研究在该领域中的地位和影响。" # 生成综述 summary_result = generate_summary_from_files(api_key,summary_question) - # print(summary_result) + print(summary_result) print("===========================处理完成===========================") if __name__ == "__main__": - main("API Key", "待解析文件路径") + dotenv.load_dotenv() + parser = get_parser() + args = parser.parse_args() + path = args.path + + # API Key, 待解析文件路径, 输出文件路径 + main(os.environ.get("API_Key"), path) diff --git a/requirements.txt b/requirements.txt index 14345c8..f9b23fd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,6 +34,7 @@ pydeck==0.9.1 Pygments==2.18.0 PyJWT==2.8.0 python-dateutil==2.9.0.post0 +python-dotenv==1.0.1 pytz==2024.1 referencing==0.35.1 requests==2.32.3