access百度翻译 get_我的百度翻译

在看英文文献(PDF)时,经常碰到不懂的句子,这时就会把它复制粘贴到百度翻译。但是一个句子经常分布在多行,粘贴到百度翻译后句子的每行都被单独翻译了。这时就得手动地删掉不合适的空行,一次两次还好,经常这样就有些麻烦了。

网上查询答案后看到了百度翻译API文档,官方给了python的demo代码,在弄清楚其结构后,就尝试在它之上增加一个功能——去掉输入文字中的空行,完美地解决了我的问题。

为了便于使用,写了一个简单但够用的用户界面,它长这个样子:

3124aac630a4771d39e3c2efa8dd1f4a.png

在左边输入英文按下回车后,右边就会显示翻译结果了。

这个东西只是单纯的显示翻译结果,像音标、发音、中英文对照等功能都没有,而且编辑不方便(如提供一个×按钮来清空)。不过,其中的一些是API本身不支持(如文字转语音),另外的如加音标、方便操作的功能可以自己实现。

代码如下:

#coding=utf-8
 
import http.client as httplib
import hashlib
import urllib
import random
import json
import wx


def translate(q, fromLang = 'en', toLang = 'zh'):
	# q ,将被翻译的文字
	# fromLang = 'en',源语言,默认为英文
	# toLang = 'zh',目的语言,默认为中文

	appid = '需要设置成你自己appid'
	secretKey = '需要设置成你自己secretKey'
	 
	httpClient = None
	myurl = '/api/trans/vip/translate'
	salt = random.randint(32768, 65536)

	sign = appid+q+str(salt)+secretKey
	# m1 = md5.new()
	m1 = hashlib.md5()
	m1.update(sign.encode(encoding="utf-8"))
	sign = m1.hexdigest()
	myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
	
	result = ""
	try:
		httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
		httpClient.request('GET', myurl)
	
		#response是HTTPResponse对象
		response = httpClient.getresponse()
		recv_data = json.loads(response.read().decode("utf-8"))

		for pair in recv_data["trans_result"]:
			result += pair["dst"]+'n'

	except Exception as e:
		print (e)
	finally:
		if httpClient:
			httpClient.close()

	return result

class MyWin(wx.Frame):
	def __init__(self, parent, title):
		super(MyWin, self).__init__(parent, title = title, size = (500, 400),)
		self.srcText = wx.TextCtrl(self, size = (240, 300), style = wx.TE_MULTILINE)
		self.dstText = wx.TextCtrl(self, size = (240, 300), style = wx.TE_MULTILINE)

		self.box = wx.BoxSizer(wx.HORIZONTAL)
		self.box.Add(self.srcText, 1, wx.ALL|wx.EXPAND)
		self.box.Add(self.dstText, 1, wx.ALL|wx.EXPAND)

		self.srcText.Bind(wx.EVT_TEXT_ENTER, self.SrcEnter)

		self.SetSizer(self.box)
		self.SetAutoLayout(True)
		self.box.Fit(self)
		self.Centre()
		self.Show()

	def SrcEnter(self, e):
		q = self.srcText.GetValue()
		q = q.replace('n', '')
		r = translate(q)
		self.dstText.SetValue(r)


app = wx.App()
frame = MyWin(None, '百度翻译')

app.MainLoop()

其中,translate函数几乎完全照搬了官方提供的代码,只加了将翻译结果提取出来的部分。MyWin类实现了之前看到的用户界面,可以在其中的SrcEnter(用户在左边方框按下回车后会调用这个函数)中看到,把空('')替换掉了换行符('n'),这就是我全部的贡献了。

【注:上述代码适用于Python的3.X版本,而官方给的代码是2.X版本的,所以我对一些地方做了修改。此外,需要安装wxpython库来使用用户界面。事实上,python自带了用户界面库tkinter,但由于我对其不熟悉(好吧是懒),就没用。如果你会tkinter,完全可以不安装wxpython,自己写一个界面】

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值