软件构造 作业1

实验一:百度机器翻译SDK实验(2023.11.29日完成)

    任务一:下载配置百度翻译Java相关库及环境(占10%)。

    任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。

    任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

    任务四:完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

    实验总结:(占10%)

    实验效果样例图:

   

    参考资料:https://ai.baidu.com/ai-doc/index/MT

    https://cloud.baidu.com/doc/MT/index.html

    https://console.bce.baidu.com/tools/?_=1669807341890#/api?product=AI&project=%E6%9C%BA%E5%99%A8%E7%BF%BB%E8%AF%91&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post

 

package org.example.test1;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import okhttp3.*;
import java.io.IOException;
public class TranslationApp extends Application {
public static final String API_KEY = "P7S23q4f4FCRVV6BSCFaOemO";
public static final String SECRET_KEY = "ExMjapgueKChqEsshHj2TpwzjPiKz8o5";
static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("实时翻译");
TextField inputTextField = new TextField();
Label outputLabel = new Label();
ComboBox<String> translationDirectionComboBox = new ComboBox<>();
translationDirectionComboBox.getItems().addAll("中译英", "英译中","中译日","中译意大利语","英译日");
translationDirectionComboBox.setValue("中译英");
Button translateButton = new Button("翻译");
translateButton.setOnAction(e -> {
try {
String userInput = inputTextField.getText();
String translationResult = translate(userInput, translationDirectionComboBox.getValue());
outputLabel.setText("翻译结果: " + translationResult);
} catch (IOException ioException) {
ioException.printStackTrace();
}
});
// 使用GridPane重新布局
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(10, 10, 10, 10));
gridPane.add(new Label("输入文本:"), 0, 0);
gridPane.add(inputTextField, 1, 0);
gridPane.add(new Label("翻译方向:"), 0, 1);
gridPane.add(translationDirectionComboBox, 1, 1);
gridPane.add(new Label(""), 0, 2); // 空行
gridPane.add(new Label(""), 1, 2); // 空行
gridPane.add(translateButton, 5, 0);
VBox vbox = new VBox(gridPane, outputLabel);
vbox.setSpacing(10);
Scene scene = new Scene(vbox, 400, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* 翻译方法
*/
private String translate(String userInput, String translationDirection) throws IOException {
String targetLanguage;
targetLanguage = null;
String translationLanguage = null;
if ( translationDirection.equals("中译英") ){
targetLanguage = "zh";
translationLanguage = "en";
}
else if(translationDirection.equals("英译中")){
targetLanguage = "en";
translationLanguage = "zh";
}
else if (translationDirection.equals("中译日")) {
targetLanguage = "zh";
translationLanguage = "jp";
}
else if (translationDirection.equals("中译意大利语")) {
targetLanguage = "zh";
translationLanguage = "spa";
}
else if(translationDirection.equals("英译日")){
targetLanguage = "en";
translationLanguage = "jp";
}
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"from\":\""+targetLanguage+"\",\"to\":\""+translationLanguage+"\",\"q\":\"" + userInput + "\"}");
// RequestBody body = RequestBody.create(mediaType, "{\"from\":\"zh\",\"to\":\"en\",\"q\":\"" + userInput + "\"}");
Request request = new Request.Builder()
.url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken())
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
String responseString = response.body().string();
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(responseString);
return jsonNode.get("result").get("trans_result").get(0).get("dst").asText();
}
/**
* 获取 Access Token 的方法
*/
private String getAccessToken() throws IOException {
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
+ "&client_secret=" + SECRET_KEY);
Request request = new Request.Builder()
.url("https://aip.baidubce.com/oauth/2.0/token")
.method("POST", body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
return new ObjectMapper().readTree(response.body().string()).get("access_token").asText();
}
}
posted @   会秃头的小白  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-12-25 JDBC
2022-12-25 事务
2022-12-25 多表查询
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
起风了 - 吴青峰
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 米果

作曲 : 高橋優

编曲 : 刘胡轶/貢多杰

制作人 : 刘胡轶/吴青峰

配唱制作人 : 刘胡轶

乐器监制 : 刘胡轶

吉他 : 胡晨

贝斯 : 甯子达

弦乐录音棚 : 中国剧院录音棚

录音工程师 : 倪涵文/李游/李杨/邢铜/韩宽/李巍

录音监制 : 倪涵文/李游

混音&母带工作室 : OKmastering studio

混音&母带工程师 : 全相彦

制作协力 : 刘西洋

制作发行 : 智慧大狗 × 天才联盟

出品人 : 张葛

监制 : 崔恕/王明宇

弦乐监制 : 李朋

弦乐 : 国际首席爱乐乐团

鼓(打击乐):祁大为

和音编写&演唱:鱼椒盐

人声&吉他&鼓(打击乐)录音棚:55Tec studio

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

这一路上走走停停

这一路上走走停停

顺着少年漂流的痕迹

迈出车站的前一刻

竟有些犹豫

不禁笑这近乡情怯

不禁笑这近乡情怯

仍无可避免

而长野的天

依旧那么暖

风吹起了从前

从前初识这世间

从前初识这世间

万般流连

看着天边似在眼前

也甘愿赴汤蹈火去走它一遍

如今走过这世间

如今走过这世间

万般流连

翻过岁月不同侧脸

措不及防闯入你的笑颜

我曾难自拔于世界之大

我曾难自拔于世界之大

也沉溺于其中梦话

不得真假 不做挣扎 不惧笑话

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

逆着光行走 任风吹雨打

短短的路走走停停

短短的路走走停停

也有了几分的距离

不知抚摸的是故事 还是段心情

也许期待的不过是 与时间为敌

再次看到你

微凉晨光里

笑得很甜蜜

从前初识这世间

从前初识这世间

万般流连

看着天边似在眼前

也甘愿赴汤蹈火去走它一遍

如今走过这世间

如今走过这世间

万般流连

翻过岁月不同侧脸

措不及防闯入你的笑颜

我曾难自拔于世界之大

我曾难自拔于世界之大

也沉溺于其中梦话

不得真假 不做挣扎 不惧笑话

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

晚风吹起你鬓间的白发

晚风吹起你鬓间的白发

抚平回忆留下的疤

你的眼中 明暗交杂 一笑生花

我仍感叹于世界之大

我仍感叹于世界之大

也沉醉于儿时情话

不剩真假 不做挣扎 无谓笑话

我终将青春还给了她

连同指尖弹出的盛夏

心之所动 就随风去了

以爱之名 你还愿意吗

点击右上角即可分享
微信分享提示