大学项目实训项目实训个人周报5
琴生数据采集后的文本并不全是中文的,这很正常。我下一步对这部分文本数据进行了翻译,实现方法是通过DeepL这个工具api用python代码实现。不过要订阅申请DeepL的api密钥。
翻译数据结构知识数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import pandas as pd import deepl
auth_key = "" translator = deepl.Translator(auth_key)
data = pd.read_csv('ds.xlsx')
stop_translation = False
def translate_to_chinese(text): global stop_translation if stop_translation: return text try: translation = translator.translate_text(text, target_lang="ZH") return translation.text except Exception as e: print(f"翻译文本时出错: {e}") stop_translation = True return text
data['question'] = data['question'].apply(translate_to_chinese)
data['answer'] = data['answer'].apply(translate_to_chinese)
print(data.head())
data.to_csv('translated_ds.csv', index=False)
|
下面给出代码解释:
- 导入库
import pandas as pd
:导入Pandas库,常用于数据处理和分析。
import deepl
:导入DeepL库,用于实现文本的机器翻译。
- 设置DeepL API密钥
auth_key = "DeepL API密钥"
:这里需要替换为DeepL API密钥,用于身份认证和访问翻译服务。
- 创建DeepL翻译器实例
translator = deepl.Translator(auth_key)
:使用提供的API密钥创建一个DeepL翻译器实例。
- 加载数据
data = pd.read_csv('train.parquet')
:使用Pandas的read_csv函数加载csv格式的文件。
- 定义翻译函数
translate_to_chinese(text)
:这是一个函数,输入参数是文本(英文),输出是翻译后的文本(中文)。
global stop_translation
:使用global
关键字声明stop_translation
,这允许函数内部修改全局变量。
if stop_translation
:如果stop_translation
为真(表示已经发生翻译错误),则函数直接返回原文本,不进行翻译。
try-except
块:尝试使用DeepL翻译器翻译文本,如果发生异常(如网络问题、API限制等),则捕获异常,打印错误信息,并设置stop_translation
为真,之后的所有翻译调用将直接返回原文。
- 应用翻译函数到数据列
data['question'] = data['question'].apply(translate_to_chinese)
:将translate_to_chinese
函数应用于数据框data
中名为question
的列。这将逐行将英文指令翻译成中文。
- 显示翻译后的数据
print(data.head())
:打印翻译后的数据框的前几行,用于检查翻译结果。
- 保存翻译后的数据
data.to_csv('translated_train.csv', index=False)
:将翻译后的数据保存到一个名为translated_train.csv
的CSV文件,index=False
参数表示不保存行索引。
翻译java知识数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import pandas as pd import deepl
auth_key = "cAjDPhRVq1V2y80O" translator = deepl.Translator(auth_key)
data = pd.read_csv('java.csv')
stop_translation = False
def translate_to_chinese(text): global stop_translation if stop_translation: return text try: translation = translator.translate_text(text, target_lang="ZH") return translation.text except Exception as e: print(f"翻译文本时出错: {e}") stop_translation = True return text
data['question'] = data['question'].apply(translate_to_chinese)
data['answer'] = data['answer'].apply(translate_to_chinese)
data.to_csv('translated_java.csv', index=False)
|
翻译操作系统知识数据:(这里源文件是parquet类型)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| import pandas as pd import deepl
auth_key = "cAjDPhRVq1V2y80O" translator = deepl.Translator(auth_key)
data = pd.read_parquet('os.parquet')
stop_translation = False
def translate_to_chinese(text): global stop_translation if stop_translation: return text try: translation = translator.translate_text(text, target_lang="ZH") return translation.text except Exception as e: print(f"翻译文本时出错: {e}") stop_translation = True return text
data['question'] = data['question'].apply(translate_to_chinese)
data['answer'] = data['answer'].apply(translate_to_chinese)
data.to_csv('translated_os.csv', index=False)
|
翻译计网知识数据:(这里源文件是俄语版,方法略有改动)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import pandas as pd import deepl
auth_key = "cAjDPhRVq1V2y80O" translator = deepl.Translator(auth_key)
data = pd.read_csv('os.csv')
stop_translation = False
def translate_to_chinese(text): global stop_translation if stop_translation: return text try: translation = translator.translate_text(text, source_lang="RU", target_lang="ZH") return translation.text except Exception as e: print(f"翻译文本时出错: {e}") stop_translation = True return text
data['question'] = data['question'].apply(translate_to_chinese)
data['answer'] = data['answer'].apply(translate_to_chinese)
print(data.head())
data.to_csv('translated_os.csv', index=False)
|