Files

1 line
6.6 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"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()"}}}}