【问题标题】:Creating a dictionary in Python and using it to translate a word在 Python 中创建字典并使用它来翻译单词
【发布时间】:2019-02-24 11:59:40
【问题描述】:

我在 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...我怎样才能达到我想要的结果?

【问题讨论】:

  • swadesh.entries 是做什么的?
  • 这是一个包含多种语言单词列表的语料库。我正在使用它通过“加入”两个适当的列表来创建西班牙语-英语词典
  • 我认为这个循环for word in my_books.words("book_1") 可能是错误的。您不应该从外部循环中的sentence 获取单词(否则为什么要循环句子)?
  • @slider 我必须遍历单词才能获得相应的翻译。但我首先迭代句子,因为我希望我的输出按句子打印,而不是按单词(即,不是单词列表,而是实际文本)

标签: python


【解决方案1】:

.entries() 方法在给定一种以上语言时,返回的不是字典而是元组列表。示例见here

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

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

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

【讨论】:

  • 所以if word in translation: print(translation) 也没有返回我想要的输出。我还需要修改什么?
  • 你试过print(translation[word])吗?请记住translation 是您的字典。您想打印字典中的翻译单词。
【解决方案2】:

这可能是“区分大小写”问题。 例如: 如果一个字典包含一个关键的“炸弹”,你会寻找“炸弹”, 它不会被发现。 把es2en的所有键都放下然后找:word.lower() in es2en

【讨论】:

    【解决方案3】:

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

    它是在印尼语(印度尼西亚)到英语,反之亦然。

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

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

    在有了一组含义并且已经将英语与马来语的含义配对/分组后,执行此操作,收集广告作为数据,将其分开,科学化内容和日常内容。

    将所有数据标记为句子,计算哪个单词与其他单词配对的概率更高(无论是印尼语还是英语),这是需要的,因为每个单词都可以有多种含义。此计算用于选择您将使用的单词。

    国语示例: 'bisa',在印尼语中可能意味着毒药,并且很可能与蛇或咬伤配对 'bisa',可能意味着可以做一些事情,与动词词或愿意做某事的表达(动词)的高概率配对

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

    另一组可以按单词类型(名词、动词、形容词等)。

    bisa == 毒药(名词)

    bisa == can(动词)。

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

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 2018-07-24
      • 2022-11-18
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多