python - 如何在不区分大小写的情况下翻译 NTLK swadesh 语料库中的单词 - python

标签 python dictionary nlp nltk translate

我是 python 和自然语言处理的新手,我正在尝试使用 nltk 书来学习。我正在做第二章末尾的练习,有一个问题我被困住了。 “在比较词汇表的讨论中,我们创建了一个名为“翻译”的对象,您可以使用德语和意大利语中的单词进行查找,以获得相应的英语单词。这种方法可能会出现什么问题?您能建议一种避免的方法吗?这个问题?”

这本书让我使用 swadesh 语料库来创建一个“翻译器”,如下所示:

`from nltk.corpus import swadesh
fr2en = swadesh.entries(['fr', 'en'])
de2en = swadesh.entries(['de', 'en'])
es2en = swadesh.entries(['es', 'en'])
translate = dict(fr2en)
translate.update(dict(de2en))
translate.update(dict(es2en))`

我看到的一个问题是,当您将德语单词“狗”(hund)翻译成英语时,它只采用大写形式: translate['Hund']返回'dog' ,而translate['hund']返回KeyError: 'hund'

有没有办法让翻译器不区分大小写地翻译单词?我一直在玩它,比如translate.update(dict(de2en.lower))并没有什么用。我觉得我错过了一些明显的东西。有人可以帮助我吗?

谢谢!

最佳答案

啊,德语中臭名昭著的名词大写(参见http://german.about.com/library/weekly/aa020919a.htm)

您可以尝试列表理解并降低 swadesh 语料库中的每个标记:

>>> from nltk.corpus import swadesh
>>> de2en = [(i.lower(),j.lower()) for i,j in swadesh.entries(['de','en'])]
>>> translate = dict(de2en)
>>> translate['hund']
u'dog'
>>> translate['Hund']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Hund'

但是您可能会丢失 key 中的大写字母。因此,要解决此问题,您可以使用原始的 swadesh 条目再次更新 translate 字典:

>>> from nltk.corpus import swadesh
>>> de2en = [(i.lower(),j.lower()) for i,j in swadesh.entries(['de','en'])]
>>> translate = dict(de2en)
>>> translate.update(swadesh.entries(['de','en']))
>>> translate['hund']
u'dog'
>>> translate['Hund']
u'dog'

关于python - 如何在不区分大小写的情况下翻译 NTLK swadesh 语料库中的单词 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479912/

相关文章:

python - 如何删除 Robobrowser 中的 AttributeError

python - 删除 pandas 中其他行中包含字符串的行

c - 有没有办法在C中通过超过1层的多态数据结构传递函数指针

c# - 如何将键交换为值和将值交换为字典中的键

machine-learning - Huggingface Load_dataset() 函数抛出 "ValueError: Couldn' t 转换”

php - 使用正则表达式将字符串拆分成句子

Python:TypeError:类型 'NoneType' 的参数不是可迭代的 Spider 脚本问题

python - 尽管出现 UnicodeDecodeError 错误,我如何继续处理文件?

python - 从字典列表中选择具有特定字段值的项目(类似于 SQL SELECT 命令)

python - 在 spaCy 中使用不同的 word2vec 训练数据