[英]How to make a language translator in python?
我正在用 python 制作一個小字典,現在我想翻譯整個句子的部分被卡住了。 我有一本字典,里面的單詞很少
english_italian = {"hey": "ciao", "my": "mio", "name": "nome"}
我如何翻譯像“你好,我的名字是馬里奧”這樣的句子,所以輸出就像
ciao 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'
如果您想不翻譯字典中沒有的單詞:
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
您必須首先解決的一個問題是將一個句子作為一個字符串翻譯成一個單詞數組(這本身可能是一個問題)。 一旦你有了這個單詞數組(我們稱之為words
),循環遍歷這些單詞並將每個單詞翻譯成意大利語對應的單詞。 當然,只是將翻譯后的單詞粘貼在一起會形成一個與原始句子不同的句子(因為您將忽略標點符號、空格等)。 例如,“嘿,我的名字是馬里奧”將翻譯為“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])
優化可能是首先從 words 數組中刪除重復項,因此您不會多次翻譯同一個單詞。
總而言之,像這樣翻譯不會那么好用(想想動詞變位、句子中不同部分的順序,例如主語和動詞、語法差異等)。
您可以嘗試以下操作:
english_italian = {"hey": "ciao", "my": "mio", "name": "nome"}
sentence = "hey my name is Mario"
sentence_list = sentence.split(" ")
# We get this: ['hey', 'my', 'name', 'is', 'Mario']
translation_list = [english_italian[word] if word in english_italian.keys() else word for word in sentence_list]
trans_sentence = " ".join(translation_list)
print(trans_sentence)
輸出
ciao mio nome is Mario
我們取出句子,將其拆分為單詞,如果每個單詞出現在字典中,則對其進行翻譯,否則我們保留該單詞。 然后我們加入翻譯的單詞列表並打印它。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.