项目实训个人周报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

# 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)

下面给出代码解释:

  1. 导入库
    • import pandas as pd:导入Pandas库,常用于数据处理和分析。
    • import deepl:导入DeepL库,用于实现文本的机器翻译。
  2. 设置DeepL API密钥
    • auth_key = "DeepL API密钥":这里需要替换为DeepL API密钥,用于身份认证和访问翻译服务。
  3. 创建DeepL翻译器实例
    • translator = deepl.Translator(auth_key):使用提供的API密钥创建一个DeepL翻译器实例。
  4. 加载数据
    • data = pd.read_csv('train.parquet'):使用Pandas的read_csv函数加载csv格式的文件。
  5. 定义翻译函数
    • translate_to_chinese(text):这是一个函数,输入参数是文本(英文),输出是翻译后的文本(中文)。
    • global stop_translation:使用global关键字声明stop_translation,这允许函数内部修改全局变量。
    • if stop_translation:如果stop_translation为真(表示已经发生翻译错误),则函数直接返回原文本,不进行翻译。
    • try-except块:尝试使用DeepL翻译器翻译文本,如果发生异常(如网络问题、API限制等),则捕获异常,打印错误信息,并设置stop_translation为真,之后的所有翻译调用将直接返回原文。
  6. 应用翻译函数到数据列
    • data['question'] = data['question'].apply(translate_to_chinese):将translate_to_chinese函数应用于数据框data中名为question的列。这将逐行将英文指令翻译成中文。
  7. 显示翻译后的数据
    • print(data.head()):打印翻译后的数据框的前几行,用于检查翻译结果。
  8. 保存翻译后的数据
    • 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

# 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类型)

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


# 翻译 '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)

翻译计网知识数据:(这里源文件是俄语版,方法略有改动)

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

# 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)