数据采集后的文本并不全是中文的,这很正常。我下一步对这部分文本数据进行了翻译,实现方法是通过DeepL这个工具api用python代码实现。不过要订阅申请DeepL的api密钥。
翻译数据结构知识数据:
import pandas as pd
import deepl
# DeepL API认证密钥
auth_key = ""
translator = deepl.Translator(auth_key)
# 读取XLSX文件
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
# 翻译 'question' 列
data['question'] = data['question'].apply(translate_to_chinese)
# 翻译 'answer' 列
data['answer'] = data['answer'].apply(translate_to_chinese)
# 显示翻译后的数据的前几行
print(data.head())
# 将翻译后的数据保存到一个CSV文件
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知识数据:
import pandas as pd
import deepl
# DeepL API认证密钥
auth_key = "cAjDPhRVq1V2y80O"
translator = deepl.Translator(auth_key)
# 读取CSV文件
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
# 翻译 'question' 列
data['question'] = data['question'].apply(translate_to_chinese)
# 翻译 'answer' 列
data['answer'] = data['answer'].apply(translate_to_chinese)
# 显示翻译后的数据的前几行
# print(data.head())
# 将翻译后的数据保存到一个CSV文件
data.to_csv('translated_java.csv', index=False)
翻译操作系统知识数据:(这里源文件是parquet类型)
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
# 翻译 'question' 列
data['question'] = data['question'].apply(translate_to_chinese)
# 翻译 'answer' 列
data['answer'] = data['answer'].apply(translate_to_chinese)
# 显示翻译后的数据的前几行
# print(data.head())
# 将翻译后的数据保存到一个CSV文件
data.to_csv('translated_os.csv', index=False)
翻译计网知识数据:(这里源文件是俄语版,方法略有改动)
import pandas as pd
import deepl
# DeepL API认证密钥
auth_key = "cAjDPhRVq1V2y80O"
translator = deepl.Translator(auth_key)
# 读取CSV文件
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
# 翻译 'question' 列
data['question'] = data['question'].apply(translate_to_chinese)
# 翻译 'answer' 列
data['answer'] = data['answer'].apply(translate_to_chinese)
# 显示翻译后的数据的前几行
print(data.head())
# 将翻译后的数据保存到一个CSV文件
data.to_csv('translated_os.csv', index=False)