{"repo": "buct-cs2201/knowledgegraph", "files": {"DataClean&Translate/translattion_3.py": {"cd074e5fb7433f1dc7924ba9b87be0ec2b7ae3a3": {"t": 1785747504.5268297, "n": 2599, "h": "7650c48ab227f29d", "c": "import pandas as pd\r\nimport requests\r\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\r\n\r\n# 配置 DeepSeek API\r\nAPI_KEY = \"sk-6cfc266025c046b3a9168c5d709c1f84\" # 替换成你的API Key\r\nAPI_URL = \"https://api.deepseek.com/v1/chat/completions\" # 确认API地址\r\nHEADERS = {\r\n \"Authorization\": f\"Bearer {API_KEY}\",\r\n \"Content-Type\": \"application/json\"\r\n}\r\n\r\n# 读取CSV文件\r\ninput_csv = \"final_processed_data_3.csv\" # 输入文件路径\r\noutput_csv = \"3.csv\" # 输出文件路径\r\ndf = pd.read_csv(input_csv)\r\n\r\n# 选择要翻译的列\r\ncolumn_to_translate = [\"name\", \"dynasty\", \"type\", \"description\", \"Author\", \"size\"]\r\n\r\n# 翻译函数\r\ndef translate_text(text):\r\n if pd.isnull(text):\r\n return None\r\n data = {\r\n \"model\": \"deepseek-chat\", # 确认模型名称\r\n \"messages\": [\r\n {\r\n \"role\": \"system\",\r\n \"content\": f\"将下面这一段文物信息翻译成中文,要求在翻译前先规范化每个英文单词对应的翻译,并且除了翻译内容请不要有多余部分(比如注解和说明等)\"\r\n },\r\n {\r\n \"role\": \"user\",\r\n \"content\": f\"Translate this precisely: {text}\"\r\n }\r\n ],\r\n \"temperature\": 1\r\n }\r\n response = requests.post(API_URL, headers=HEADERS, json=data)\r\n if response.status_code == 200:\r\n translated = response.json()[\"choices\"][0][\"message\"][\"content\"]\r\n print(f\"Translated: {translated}\")\r\n return translated.replace(\"'\", \"\").replace('\"', \"\") # 去除所有单双引号\r\n else:\r\n print(f\"翻译失败(状态码 {response.status_code}): {text}\")\r\n return None\r\n\r\n# 多线程翻译\r\ndef translate_column(column_name, start_row, end_row):\r\n df.loc[start_row:end_row, column_name] = df.loc[start_row:end_row, column_name].apply(translate_text)\r\n\r\ndef main():\r\n with ThreadPoolExecutor(max_workers=16) as executor:\r\n # 每400行保存一次\r\n for i in range(0, len(df), 400):\r\n end_row = min(i + 399, len(df) - 1) # 确保不超过数据框的长度\r\n print(f\"正在翻译第 {i+1} 到 {end_row+1} 行...\")\r\n futures = {executor.submit(translate_column, col, i, end_row): col for col in column_to_translate}\r\n for future in as_completed(futures):\r\n column_name = futures[future]\r\n try:\r\n future.result()\r\n except Exception as e:\r\n print(f\"翻译列 {column_name} 时出错: {e}\")\r\n # 保存临时结果\r\n df[:end_row+1].to_csv(f\"output_{i//400}.csv\", index=False, encoding=\"utf_8_sig\")\r\n print(f\"已保存前 {end_row+1} 行到 output_{i//400}.csv\")\r\n\r\n # 最终保存全部结果\r\n df.to_csv(output_csv, index=False, encoding=\"utf_8_sig\")\r\n print(f\"翻译完成!结果已保存到 {output_csv}\")\r\n\r\nif __name__ == \"__main__\":\r\n main()"}, "a41e99bbc3c5dc4d97fcd9f8464772874e6a5c11": {"t": 1785773650.569936, "n": 2599, "h": "7650c48ab227f29d", "c": "import pandas as pd\r\nimport requests\r\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\r\n\r\n# 配置 DeepSeek API\r\nAPI_KEY = \"sk-6cfc266025c046b3a9168c5d709c1f84\" # 替换成你的API Key\r\nAPI_URL = \"https://api.deepseek.com/v1/chat/completions\" # 确认API地址\r\nHEADERS = {\r\n \"Authorization\": f\"Bearer {API_KEY}\",\r\n \"Content-Type\": \"application/json\"\r\n}\r\n\r\n# 读取CSV文件\r\ninput_csv = \"final_processed_data_3.csv\" # 输入文件路径\r\noutput_csv = \"3.csv\" # 输出文件路径\r\ndf = pd.read_csv(input_csv)\r\n\r\n# 选择要翻译的列\r\ncolumn_to_translate = [\"name\", \"dynasty\", \"type\", \"description\", \"Author\", \"size\"]\r\n\r\n# 翻译函数\r\ndef translate_text(text):\r\n if pd.isnull(text):\r\n return None\r\n data = {\r\n \"model\": \"deepseek-chat\", # 确认模型名称\r\n \"messages\": [\r\n {\r\n \"role\": \"system\",\r\n \"content\": f\"将下面这一段文物信息翻译成中文,要求在翻译前先规范化每个英文单词对应的翻译,并且除了翻译内容请不要有多余部分(比如注解和说明等)\"\r\n },\r\n {\r\n \"role\": \"user\",\r\n \"content\": f\"Translate this precisely: {text}\"\r\n }\r\n ],\r\n \"temperature\": 1\r\n }\r\n response = requests.post(API_URL, headers=HEADERS, json=data)\r\n if response.status_code == 200:\r\n translated = response.json()[\"choices\"][0][\"message\"][\"content\"]\r\n print(f\"Translated: {translated}\")\r\n return translated.replace(\"'\", \"\").replace('\"', \"\") # 去除所有单双引号\r\n else:\r\n print(f\"翻译失败(状态码 {response.status_code}): {text}\")\r\n return None\r\n\r\n# 多线程翻译\r\ndef translate_column(column_name, start_row, end_row):\r\n df.loc[start_row:end_row, column_name] = df.loc[start_row:end_row, column_name].apply(translate_text)\r\n\r\ndef main():\r\n with ThreadPoolExecutor(max_workers=16) as executor:\r\n # 每400行保存一次\r\n for i in range(0, len(df), 400):\r\n end_row = min(i + 399, len(df) - 1) # 确保不超过数据框的长度\r\n print(f\"正在翻译第 {i+1} 到 {end_row+1} 行...\")\r\n futures = {executor.submit(translate_column, col, i, end_row): col for col in column_to_translate}\r\n for future in as_completed(futures):\r\n column_name = futures[future]\r\n try:\r\n future.result()\r\n except Exception as e:\r\n print(f\"翻译列 {column_name} 时出错: {e}\")\r\n # 保存临时结果\r\n df[:end_row+1].to_csv(f\"output_{i//400}.csv\", index=False, encoding=\"utf_8_sig\")\r\n print(f\"已保存前 {end_row+1} 行到 output_{i//400}.csv\")\r\n\r\n # 最终保存全部结果\r\n df.to_csv(output_csv, index=False, encoding=\"utf_8_sig\")\r\n print(f\"翻译完成!结果已保存到 {output_csv}\")\r\n\r\nif __name__ == \"__main__\":\r\n main()"}}}}