9 练习
◑ 在5.1中新字段出现在条目底部。修改这个程序使它就在
lx
字段后面插入新的子元素。(提示:使用Element('cv')
创建新的cv
字段,分配给它一个文本值,然后使用父元素的insert()
方法。)◑ 编写一个函数,从一个词汇条目删除指定的字段。(我们可以在把数据给别人之前用它做些清洁,如删除包含无关或不确定的内容的字段。)
◑ 写一个程序,扫描一个 HTML 字典文件,找出具有非法词性字段的条目,并报告每个条目的 核心词 。
◑ 写一个程序,找出所有出现少于 10 次的词性(
ps
字段)。或许有打字错误?◑ 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
◑ 我们看到一个增加
cv
字段的方法。一件有趣的问题是当有人修改的lx
字段的内容时,保持这个字段始终最新。为这个程序写一个版本,添加cv
字段,取代所有现有的cv
字段。◑ 写一个函数,添加一个新的字段
syl
,计数一个词中的音节数。◑ 写一个函数,显示一个词位的完整条目。当词位拼写错误时,它应该显示拼写最相似的词位的条目。
◑ 写一个函数,从一个词典中找出最频繁的连续字段对(如
ps
后面往往是pt
)。(这可以帮助我们发现一些词条的结构。)◑ 使用办公软件创建一个电子表格,每行包含一个词条,包括一个中心词,词性和注释。以 CSV 格式保存电子表格。写 Python 代码来读取 CSV 文件并以 Toolbox 格式输出,使用
lx
表示中心词,ps
表示词性,gl
表示注释。◑ 在
nltk.Index
帮助下,索引莎士比亚的戏剧中的词。产生的数据结构允许按单个词查找,如 music,返回演出、场景和台词的引用的列表,[(3, 2, 9), (5, 1, 23), ...]
的形式,其中(3, 2, 9)
表示第 3 场演出场景 2 台词 9。◑ 构建一个条件频率分布记录《威尼斯商人》中每段台词的词长,以角色名字为条件,如
cfd['PORTIA'][12]
会给我们 Portia 的 12 个词的台词的数目。★ 获取 CSV 格式的比较词表,写一个程序,输出相互之间至少有三个编辑距离的同源词。
★ 建立一个出现在例句的词位的索引。假设对于一个给定条目的词位是 w。然后为这个条目添加一个单独的交叉引用字段
xrf
,引用其它有例句包含 w 的条目的中心词。对所有条目做这个,结果保存为 Toolbox 格式文件。◑ 写一个递归函数将任意树转换为对应的 XML,其中非终结符不能表示成 XML 元素,叶子表示文本内容,如:
<S>
<NP type="SBJ">
<NP>
<NNP>Pierre</NNP>
<NNP>Vinken</NNP>
</NP>
<COMMA>,</COMMA>