339.collins字典解析2

通过分析,我们把字典分为两类比较好。一类是只提供记忆功能的星级卡片,仅仅包括collins5,4,3三个等级。第二类是包含所有等级的查询词库。

第一类用来学习和复习记忆基础词汇,第二类用来做阅读扩展支持。

第一类需要用到的是星级,词汇,声音和拼写。并不需要音标,因为已经有发音了。第二类尽可能资料齐全,但是也只是需要第一词义,但需要包含星级和词频信息。

对于每个学习者,都有自己的单词量和学习目标。或许一个人是2000单词量,正在学习三星词库,对不认识的五星和四星词库也需要学习。另外一个人是5800词汇量,正在学习二星词汇,对不认识的三星、四星和五星都需要学习。

那么首先通过单词量,设定学习级别,是二星还是三星。对于初中生来说,三星是需要拓展的,但二星暂时并没有必要。在他的水平高了之后再做打算。这个拓展的意思是,是否需要将阅读中的二星词汇加入生词本。

根据透析法,阅读中的大部分单词是不需要查的,只需要猜意思即可,也就是不影响阅读的情况下,两页查一个单词。这种方法的目的是,在阅读的乐趣中积累单词,而不是一直查单词干扰了阅读。

在新的模式下,我们可以点击不认识的单词,将它备注为不认识,然后不认识的单词达到一定数量后,系统自动查询单词词频。将词频最高的单词的意思显示出来,如果是属于正在学习的星级或者需要拓展的星级,就会自动加入生词本,否则只是显示中文。不同的星级用不同的颜色表示。

点击时执行播放单词读音,在生词量达到10个后,选择词频最高的两个显示意思,并根据情况加入生词本,其他的则只是显示中文,并不浪费时间和打断阅读乐趣,也不会增加主动记忆负担。需要主动记忆的最多只是两个单词而已。这10个单词会并排出现,显示星级和词频。当然,软件还会对本书进行扫描,如果发现某个词出现的频次很高,也会标志出来。所以根据星级,本书出现的频次,词频等,就可以做出要不要加入生词本的判断。

现在使用bs4,从词典转换的txt中以行为单位,提取信息,首先提取所有的词汇,然后再生成
五星,四星和三星词库。

  1. 词汇
    soup.font.string就是词汇,string是找到的第一个font标签中的内容。

  2. 星级
    soup.find_all('font')[1].string[1:]
    [1]表示是找到的第二个font标签,末尾加[1:]是因为星级前面有空格。


现在其他的内容可能会分为若干条。首先获取最接近词义的div。因为在词义上有3层嵌套的div,所以使用:
div = soup.div.div.div
这样就直接能选中最里层的div,然后进行细节的逐项分割。

先进行词条划分:
d = div.find_all('div', class_='collins_en_cn')
然后输入len(d),就可以看到词条有几项。

然后d[0]就是第一项,这个也是每个词都有的,在5、4、3星级词库中,我们只需要这一项即可。但现在还需要较完整保留词典的信息,对于词条多的词,我们保留前3条词条即可。

d[0]就是第一个词条。每个词条中都有两大部分,一个是词义的解释,一个是例句。
解释是d[0].div.div,例如是d[0].ol。解释中有5个部分,前3个span和第4个英文解释,最后1个语法信息。令d0 = d[0].div,d0.contents就是标签中的内容。

  1. 词义序号
    d0.contents[0].string就是1.序号

  2. 词性
    d0.contents[1].string就是VERB 动词 等词性

  3. 词义
    d0.contents[2].string就是词义, 离弃;遗弃;抛弃

6.英文解释

_str = ''
l = len(d0.contents)
for i in range(l):
    if i > 2:
        print('d0.contents[i].string =', d0.contents[i].string)
        print('_str =', _str)
        _str += d0.contents[i].string
        print('d0.contents[i].name =', d0.contents[i].name)
        if d0.contents[i].name == 'span':
            break

BUG:

d0.contents[i].string =  If you
_str =
d0.contents[i].name = None
d0.contents[i].string = abandon
_str =  If you
d0.contents[i].name = b
d0.contents[i].string =  a place, thing, or person, you leave the place, thing, or person permanently or for a long time, especially when you should not do so.
_str =  If you abandon
d0.contents[i].name = None
d0.contents[i].string = None
_str =  If you abandon a place, thing, or person, you leave the place, thing, or person permanently or for a long time, especially when you should not do so.
Traceback (most recent call last):
  File "", line 5, in 
TypeError: Can't convert 'NoneType' object to str implicitly

你可能感兴趣的:(339.collins字典解析2)