写点什么

用 Python 做一个翻译器 | Python 小知识

作者:AIWeker
  • 2023-05-28
    福建
  • 本文字数:1305 字

    阅读完需:约 4 分钟

用Python做一个翻译器 | Python小知识

之前有分享过 gradio 制作 web App,我们今天就基于此做一个翻译器。文末有试用访问哦,欢迎点击。

1. 产品说明

实现一个中英翻译器,输入中文或者英文,输出对应的英文或者中文,目的是给学习英文的用户,提供单词解释服务。使用方式为手机端为主,PC 也可以支持。


初步界面设计如下:


2. gradio 前端布局


import numpy as npimport gradio as grimport osfrom fastapi import FastAPIimport requestsimport jsonimport jieba
with gr.Blocks(title="aiweker") as wekerapp: gr.Markdown("## 微客翻译") with gr.Row(): translate_output = gr.Textbox( label="结果在这里", lines=10 ) with gr.Row(): translate_txt = gr.Textbox(show_label=False, placeholder="输入你要的单词,中文或者英文").style(container=False)
with gr.Row(): with gr.Column(scale=1): translate_button = gr.Button("提交")
复制代码


gradio 提供的产品说明设计中的组件,包括文本框(Textbox)和 按钮(Button)。由于优先支持手机端显式,布局上一行布局为主,一行一个组件。

3. 翻译器实现

如何实现翻译功能,可以访问百度翻译功能,间接实现翻译功能。通过分析可以通过https://fanyi.baidu.com/sug可以实现翻译功能。接口返回多个 key-value 键值对


def translate(input_text):    url = "https://fanyi.baidu.com/sug"    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}    data = {"kw": input_text}    rsp = requests.post(url=url, headers=headers, data=data)    data = json.loads(rsp.content.decode())    return data
# {'errno': 0, 'data': [{'k': '清华大学', 'v': '名. Tsinghua University'}]}
复制代码

4. gradio 功能调用

为了说明每一个单词的解释,我们接入中文分词 jieba 进行分词。



def translate_process(input_text): result = [] if len(input_text)< 3: seg_list = [input_text] else: seg_list = jieba.cut(input_text, cut_all=False) for text in seg_list: data = translate(text) for ds in data.get('data', []): result.append("{}: {}".format(ds.get('k'),ds.get('v'))) break return "\n".join(result)
translate_button.click(translate_process, inputs=translate_txt, outputs=translate_output)
复制代码


  • click 将实现按钮的点击事件,输入前端中的 text,输出结果也是 text 组件,处理过程为 translate_process,每个分词的解释。


执行 python 文件就可以部署了。


python -u app.py
复制代码

5. 总结和下一步

这里分享一个简单的 app 应用开发,从产品设计、代码开发到部署。当然这只是一个简单的 demo,再做产品时出来实现功能外,还要考虑市场因素,你可以实现一个功能,但是市场已经有类似的产品,你的产品有什么独特性,有没有解决别人没有解决的问题。


下一步计划:


  • 部署上的优化,多进程部署

  • 增加输入图片翻译功能,可以通过手机拍摄,返回翻译结果


试用 URL: http://120.55.84.247/translate/

发布于: 2023-05-28阅读数: 20
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
用Python做一个翻译器 | Python小知识_Python_AIWeker_InfoQ写作社区