用Python创建字典并使用它翻译单词

时间:2018-10-17 15:13:49

标签: python

我用Python创建了西班牙语-英语词典,并使用变量translation存储了它。我想使用该变量来将文本从西班牙语翻译成英语。这是我到目前为止使用的代码:

from corpus.nltk import swadesh
import my_books

es2en = swadesh.entries(['es', 'en'])
translation = dict(es2en)

for sentence in my_books.sents("book_1"):
    for word in my_books.words("book_1"):
        if word in es2en:
            print(translation, end= " ")
        else:
            print("unknown_word", end= " ")
    print("")

我的问题是book_1中的所有单词实际上都没有被翻译成英语,因此我得到的文本充满了unknown word。我认为我可能以错误的方式使用了translation ...我怎么能达到预期的效果?

3 个答案:

答案 0 :(得分:2)

.entries()方法使用了多种语言时,它不返回字典,而是返回一个元组列表。有关示例,请参见here

您需要将成对的列表(2元组)转换成字典。您正在使用translation =语句来做到这一点。

但是,您然后忽略 translation变量,并检查if word in es2en:

您需要检查单词是否在translation中,然后查找正确的翻译,而不是打印整个词典。

答案 1 :(得分:0)

这可能是“案例敏感性”问题。 例如: 如果字典包含键“炸弹”,而您会寻找“炸弹”, 找不到。 降低es2en处的所有键,然后寻找:word.lower() in es2en

答案 2 :(得分:0)

我正在建造翻译机(语言词典)。

它在巴哈萨语(印度尼西亚)中以英语显示,反之亦然。

我从零开始构建,我正在做的是收集巴哈萨语中的所有单词以及单词的含义。

然后将其与wordnet数据库进行比较(抓取)。

具有一组含义并且已经将英语的含义与巴哈萨语进行了配对/分组之后,执行此操作,收集大量广告作为数据,将其分开,从而科学地确定内容和日常内容。

对句子中的所有数据进行标记,计算哪个单词与其他单词(以巴哈萨语和英语)配对的概率更高,这是必需的,因为每个单词都可以有多种手段。此计算用于选择您要使用的单词。

巴哈萨语的例子: 'bisa',可能意味着巴哈萨毒药和蛇或被咬的高概率对 'bisa',可能意味着可以在巴哈萨语中做某事,将高概率与动词配对或愿意做某事(动词)的表达

因此,如果标记化结果与蛇或叮咬配对,则可以通过检查英语中的蛇和毒药来搜索答案中的相似含义。并在英语数据库中进行搜索,您会发现毒液总是与蛇配对(与毒素/毒物具有类似的含义)。

另一组可以按单词类型(名词,动词,形容词等)进行操作。

bisa ==毒药(名词)

bisa == can(动词)。

就是这样。经过计算,您不需要数据库,只需要单词匹配数据。 因此您可以通过检查在线数据(例如Wikipedia)或下载或使用圣经/书籍文件或任何其他包含大量句子的数据库来进行计算。