- 4.3 比较词表
4.3 比较词表
表格词典的另一个例子是比较词表。NLTK 中包含了所谓的斯瓦迪士核心词列表,几种语言中约 200 个常用词的列表。语言标识符使用 ISO639 双字母码。
>>> from nltk.corpus import swadesh>>> swadesh.fileids()['be', 'bg', 'bs', 'ca', 'cs', 'cu', 'de', 'en', 'es', 'fr', 'hr', 'it', 'la', 'mk','nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sr', 'sw', 'uk']>>> swadesh.words('en')['I', 'you (singular), thou', 'he', 'we', 'you (plural)', 'they', 'this', 'that','here', 'there', 'who', 'what', 'where', 'when', 'how', 'not', 'all', 'many', 'some','few', 'other', 'one', 'two', 'three', 'four', 'five', 'big', 'long', 'wide', ...]
我们可以通过在entries() 方法中指定一个语言列表来访问多语言中的同源词。更进一步,我们可以把它转换成一个简单的词典(我们将在3学到dict()函数)。
>>> fr2en = swadesh.entries(['fr', 'en'])>>> fr2en[('je', 'I'), ('tu, vous', 'you (singular), thou'), ('il', 'he'), ...]>>> translate = dict(fr2en)>>> translate['chien']'dog'>>> translate['jeter']'throw'
通过添加其他源语言,我们可以让我们这个简单的翻译器更为有用。让我们使用dict()函数把德语-英语和西班牙语-英语对相互转换成一个词典,然后用这些添加的映射 更新 我们原来的翻译词典:
>>> de2en = swadesh.entries(['de', 'en']) # German-English>>> es2en = swadesh.entries(['es', 'en']) # Spanish-English>>> translate.update(dict(de2en))>>> translate.update(dict(es2en))>>> translate['Hund']'dog'>>> translate['perro']'dog'
我们可以比较日尔曼语族和拉丁语族的不同:
>>> languages = ['en', 'de', 'nl', 'es', 'fr', 'pt', 'la']>>> for i in [139, 140, 141, 142]:... print(swadesh.entries(languages)[i])...('say', 'sagen', 'zeggen', 'decir', 'dire', 'dizer', 'dicere')('sing', 'singen', 'zingen', 'cantar', 'chanter', 'cantar', 'canere')('play', 'spielen', 'spelen', 'jugar', 'jouer', 'jogar, brincar', 'ludere')('float', 'schweben', 'zweven', 'flotar', 'flotter', 'flutuar, boiar', 'fluctuare')
