You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python制作语言翻译器?基于字典的句子翻译实现

解决你的Python词典翻译问题

一、实现基于已有字典的整句翻译

你已经有了英意对照字典,要实现“存在的词翻译,不存在的保留”很简单,核心思路就是拆分句子为单词→逐个查询字典→拼接结果

直接上代码,完全匹配你的需求:

english_italian = {"hey": "ciao", "my": "mio", "name": "nome"}

def translate_sentence(sentence, translation_dict):
    # 按空格拆分句子成单词列表
    words = sentence.split()
    # 逐个处理:字典里有对应翻译就用,没有就保留原词
    translated_words = [translation_dict.get(word, word) for word in words]
    # 把处理后的单词重新拼成句子
    return ' '.join(translated_words)

# 测试你的例子(注意:你输入里的"hello"不在字典中,所以会保留原词;如果是想翻译"hey"的话替换成"hey"就能得到"ciao mio nome is Mario")
input_sentence = "hello my name is Mario"
output = translate_sentence(input_sentence, english_italian)
print(output)  # 输出: hello mio nome is Mario

另外补充个小细节:如果要处理大小写(比如输入是"My"而不是"my"),可以调整成大小写不敏感的查询,同时保留原单词的大小写格式:

def translate_sentence_case_insensitive(sentence, translation_dict):
    words = sentence.split()
    translated_words = []
    for word in words:
        lower_word = word.lower()
        translation = translation_dict.get(lower_word, word)
        # 原单词首字母大写的话,翻译后的词也调整为首字母大写
        if word.istitle():
            translated_words.append(translation.title())
        else:
            translated_words.append(translation)
    return ' '.join(translated_words)

二、如何制作一个完整的语言翻译器

如果想做更专业的翻译器,而不是基于固定字典的简单替换,可以分这几个方向入手:

1. 调用现成的翻译API

这是最快捷的方式,不需要自己训练模型,比如用deep-translator库(支持谷歌、百度等多个翻译引擎):

from deep_translator import GoogleTranslator

def translate_with_api(text, target_lang="it"):
    # source设为auto可以自动识别源语言
    return GoogleTranslator(source='auto', target=target_lang).translate(text)

print(translate_with_api("hello my name is Mario", target_lang="it"))  # 输出标准意大利语翻译

这类API支持几十种语言,准确率高,适合快速搭建翻译工具。

2. 使用预训练的开源翻译模型

如果不想依赖第三方API,可借助Hugging Face的transformers库加载现成的预训练模型(比如MarianMT系列,支持多语言互译):

from transformers import MarianMTModel, MarianTokenizer

# 加载英意翻译的预训练模型
model_name = "Helsinki-NLP/opus-mt-en-it"
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)

def translate_with_pretrained_model(text):
    # 预处理文本
    inputs = tokenizer(text, return_tensors="pt", padding=True)
    # 生成翻译结果
    outputs = model.generate(**inputs)
    # 解码并返回可读文本
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

print(translate_with_pretrained_model("hello my name is Mario"))

这种方式可以离线使用,适合对数据隐私有要求的场景。

3. 自己训练翻译模型

如果想完全自定义翻译逻辑,流程大概是:

  • 收集平行语料:找英意对照的句子对数据集(比如公开的OPUS数据集)
  • 数据预处理:清洗文本、分词、构建词汇表
  • 选择模型架构:用目前主流的Transformer架构搭建模型
  • 训练与调优:用PyTorch或TensorFlow启动训练,调整学习率、批次大小等超参数
  • 评估优化:用BLEU指标评估翻译质量,迭代优化模型

不过自己训练需要大量计算资源和语料积累,适合有深度学习基础的开发者。

内容的提问来源于stack exchange,提问作者Boberto

火山引擎 最新活动