如何用python制作语言转换器?

2024-05-08 17:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写一本小词典,现在我想翻译一个完整的句子。我有一本词汇量很少的字典

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

我如何翻译“你好,我的名字是马里奥”这样的句子,以便输出如下

ciao mio nome is Mario

因此,字典中没有的单词会像写的一样打印出来,而字典中可以找到的单词会被翻译出来


Tags: name字典englishismy名字单词句子
3条回答

首先要解决的一个问题是将一个句子翻译成一个字符串,转换成一个单词数组(这本身可能是一个问题)。一旦你有了这个单词数组(我们称之为words),循环遍历单词并将每个单词翻译成意大利语对应词。当然,只需将翻译后的单词粘贴在一起,就会形成一个与原始单词不同的句子(因为你会忽略标点符号、空格等)。e、 g.“嘿,我的名字是马里奥”将被翻译成“ciao mio nome is mario”(提到缺少的逗号)

要解决这个问题,您可以将原始句子中的每个翻译单词替换为其意大利语对应词,后者也保留了未在翻译中的原始单词。这将生成以下代码:

english_italian = {"hey": "ciao", "my": "mio", "name": "nome"}
sentence = "ciao mio nome is Mario"
words = sentence_to_words(sentence) # ["ciao", "mio", "nome", "is", "Mario"]

for word in words:
    if word in english_italian:
        sentence = sentence.replace(word, english_italian[word])

一种优化方法是首先从单词数组中删除重复的单词,这样就不会多次翻译同一个单词

总之,像这样的翻译不会有那么好的效果(想想动词的变化,句子中不同部分的顺序,比如主语和动词,语法差异等等)

如果你想留下不在字典里的单词不被翻译:

english_italian = {"hey": "ciao", "my": "mio", "name": "nome"}
s = "hello my name is Mario"

translated = ' '.join([
    english_italian[english_word] 
    if english_word in english_italian else english_word
    for english_word in s.split(' ')])

print(translated)

输出:

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

s = "hey my name is Mario"

# split s into a list of words, and search the dict for each. 
# if the word is not found, keep the original word
translated = " ".join(english_italian.get(word, word) for word in s.split(" "))

print(translated)

输出:

'ciao mio nome is Mario'

相关问题 更多 >

    热门问题