[英]How to translate words in NTLK swadesh corpus regardless of case - python
我是python和自然語言處理的新手,我正在嘗試使用nltk書學習。 我在第2章的末尾進行練習,我遇到了一個問題。 “在比較單詞列表的討論中,我們創建了一個稱為translate的對象,您可以使用德語和意大利語兩個單詞進行查找,以獲得相應的英語單詞。這種方法可能會出現什么問題?您能建議一種避免這種情況的方法嗎?這個問題?”
這本書讓我使用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))`
我看到的一個問題是,當您將德語的dog(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'
但是您可能會丟失密鑰中的大寫字母。 因此,為了解決此問題,您可以使用原始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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.