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

用Python创建字典并使用它翻译单词,python,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

我用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
中没有一个单词被翻译成英语,所以我得到了一篇充满
未知单词的文本。我想我可能用了错误的方式使用了
translation
。。。我如何才能达到预期的结果?

这可能是一个“区分大小写”的问题。 例如: 如果dict包含一个键“Bomb”,您将查找“Bomb”, 它找不到了。
在es2en中调低所有键,然后在es2en中查找:
word.Lower()

这可能是一个“区分大小写”的问题。 例如: 如果dict包含一个键“Bomb”,您将查找“Bomb”, 它找不到了。 在es2en中降低所有键,然后在es2en中查找:
word.Lower()

当给定多个语言时,
.entries()
方法返回的不是字典,而是元组列表。有关示例,请参见

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

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

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

当给定多个语言时,
.entries()
方法返回的不是词典,而是元组列表。有关示例,请参见

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

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


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

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

它用印尼语翻译成英语,反之亦然

我从零开始构建它,我所做的是收集巴哈萨语中的所有单词,以及单词的意思

然后将其与wordnet数据库进行比较(爬网)

在有了一组意思并且已经将英语中的意思与巴哈萨语配对/分组后,进行此操作,收集大量数据,将其分离,科学内容和日常内容

将所有数据标记到句子中,计算哪个单词与其他单词(巴哈萨语和英语)配对的概率更高,这是必要的,因为每个单词都可能有几种方法。此计算用于选择要使用的单词

巴哈萨语的例子: “bisa”在巴哈萨语中可能意味着毒药,很可能与蛇或咬伤配对 “bisa”,在巴哈萨语中可能意味着可以做某事,与动词单词或表示愿意做某事(动词)配对的可能性很高

因此,如果标记化结果与snake或bite配对,您可以通过检查英语中的snake和poison来搜索答案中类似的含义。在英文数据库中搜索,你会发现毒液总是与蛇配对(与毒素/毒药的意思相似)

另一组可以根据单词类型(名词、动词、形容词等)进行分类

bisa==毒药(名词)

bisa==can(动词)

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

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

它用印尼语翻译成英语,反之亦然

我从零开始构建它,我所做的是收集巴哈萨语中的所有单词,以及单词的意思

然后将其与wordnet数据库进行比较(爬网)

在有了一组意思并且已经将英语中的意思与巴哈萨语配对/分组后,进行此操作,收集大量数据,将其分离,科学内容和日常内容

将所有数据标记到句子中,计算哪个单词与其他单词(巴哈萨语和英语)配对的概率更高,这是必要的,因为每个单词都可能有几种方法。此计算用于选择要使用的单词

巴哈萨语的例子: “bisa”在巴哈萨语中可能意味着毒药,很可能与蛇或咬伤配对 “bisa”,在巴哈萨语中可能意味着可以做某事,与动词单词或表示愿意做某事(动词)配对的可能性很高

因此,如果标记化结果与snake或bite配对,您可以通过检查英语中的snake和poison来搜索答案中类似的含义。在英文数据库中搜索,你会发现毒液总是与蛇配对(与毒素/毒药的意思相似)

另一组可以根据单词类型(名词、动词、形容词等)进行分类

bisa==毒药(名词)

bisa==can(动词)

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

swadesh.entries的功能是什么?它是一个语料库,包含多种语言的单词列表。我正在使用它通过“连接”两个合适的列表来创建一本西班牙语-英语词典。我认为我的书中单词的循环
。单词(“book_1”)
可能是错误的。你不应该从外部循环中的
句子
中获取单词吗(否则你为什么要循环句子)?@slider我必须迭代单词才能获得相应的翻译。但我是冷杉