我用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 .我怎样才能达到我想要的结果?
发布于 2018-10-17 15:35:52
当给出多种语言时,.entries()方法返回的不是字典,而是元组列表。有关示例,请参见这里。
您需要将成对列表(2-元组)转换为字典。您正在使用您的translation =语句执行此操作。
但是,您将忽略translation变量,并检查是否存在if word in es2en:
您需要检查单词是否在translation中,然后查找正确的翻译,而不是打印整个字典。
发布于 2018-10-17 15:22:03
这可能是一个“案件敏感性”的问题。例如:如果一个丁字包含一个键‘炸弹’,你会寻找‘炸弹’,它将不会被找到。降低es2en中的所有键,然后查找:word.lower() in es2en
发布于 2019-02-23 16:30:12
我正在建造一个翻译机器(语言词典)。
从印尼语到英语,反之亦然。
我从零开始建造它,我所做的就是收集所有的文字,以及单词的方法。
然后将其与wordnet数据库进行比较(爬行)。
在有了一组意思,并已与英文的意思配对/分组后,这样做,收集广告多作为数据,分离它,科学内容和日常内容。
对句子中的所有数据进行标记化,计算哪个单词与其他单词(包括bahasa和english)之间的概率更高,这是必要的,因为每个单词都可以有几种方法。此计算用于选择要使用的单词。
例如:“bisa”在语中的意思是“毒药”,“用蛇”表示“高概率对”或“咬”“bisa”,意思是可以在语中做某事,用动词搭配动词或表示愿意做某事(动词)。
因此,如果标记结果与蛇配对或被咬,您可以通过在英语中检查“蛇”和“毒”,在答案中搜索类似的含义。在英语数据库中搜索,你会发现毒液总是和蛇成对(与毒素/毒药有相似的方法)。
另一组可以按词类型(名词、动词、形容词等)来做。
bisa ==毒素(名词)
bisa == can (动词)。
就这样。经过计算后,您不需要数据库,您只需要字匹配数据。所以,你可以通过检查在线数据(比如维基百科)或者下载,或者使用圣经/书籍文件或任何其他包含大量句子的数据库来进行计算。
https://stackoverflow.com/questions/52858218
复制相似问题