9 练习

  1. ◑ 在5.1中新字段出现在条目底部。修改这个程序使它就在lx字段后面插入新的子元素。(提示:使用Element('cv')创建新的cv字段,分配给它一个文本值,然后使用父元素的insert()方法。)

  2. ◑ 编写一个函数,从一个词汇条目删除指定的字段。(我们可以在把数据给别人之前用它做些清洁,如删除包含无关或不确定的内容的字段。)

  3. ◑ 写一个程序,扫描一个 HTML 字典文件,找出具有非法词性字段的条目,并报告每个条目的 核心词

  4. ◑ 写一个程序,找出所有出现少于 10 次的词性(ps字段)。或许有打字错误?

  5. ◑ We saw a method for discovering cases of whole-word reduplication. Write a function to find words that may contain partial reduplication. Use the re.search() method, and the following regular expression: (..+)\1

  6. ◑ 我们看到一个增加cv字段的方法。一件有趣的问题是当有人修改的lx字段的内容时,保持这个字段始终最新。为这个程序写一个版本,添加cv字段,取代所有现有的cv字段。

  7. ◑ 写一个函数,添加一个新的字段syl,计数一个词中的音节数。

  8. ◑ 写一个函数,显示一个词位的完整条目。当词位拼写错误时,它应该显示拼写最相似的词位的条目。

  9. ◑ 写一个函数,从一个词典中找出最频繁的连续字段对(如ps后面往往是pt)。(这可以帮助我们发现一些词条的结构。)

  10. ◑ 使用办公软件创建一个电子表格,每行包含一个词条,包括一个中心词,词性和注释。以 CSV 格式保存电子表格。写 Python 代码来读取 CSV 文件并以 Toolbox 格式输出,使用lx表示中心词,ps表示词性,gl表示注释。

  11. ◑ 在nltk.Index帮助下,索引莎士比亚的戏剧中的词。产生的数据结构允许按单个词查找,如 music,返回演出、场景和台词的引用的列表,[(3, 2, 9), (5, 1, 23), ...]的形式,其中(3, 2, 9)表示第 3 场演出场景 2 台词 9。

  12. ◑ 构建一个条件频率分布记录《威尼斯商人》中每段台词的词长,以角色名字为条件,如cfd['PORTIA'][12]会给我们 Portia 的 12 个词的台词的数目。

  13. ★ 获取 CSV 格式的比较词表,写一个程序,输出相互之间至少有三个编辑距离的同源词。

  14. ★ 建立一个出现在例句的词位的索引。假设对于一个给定条目的词位是 w。然后为这个条目添加一个单独的交叉引用字段xrf,引用其它有例句包含 w 的条目的中心词。对所有条目做这个,结果保存为 Toolbox 格式文件。

  15. ◑ 写一个递归函数将任意树转换为对应的 XML,其中非终结符不能表示成 XML 元素,叶子表示文本内容,如:

    1. <S>
    2. <NP type="SBJ">
    3. <NP>
    4. <NNP>Pierre</NNP>
    5. <NNP>Vinken</NNP>
    6. </NP>
    7. <COMMA>,</COMMA>