input 如何替换 input_如何利用Python筛选HSK核心词汇

2fdeb8d94afb2be50b963ed33ca9f002.png

背景说明

由于班上有一批学生需要参加HSK5的考试,但是在实际授课中发现他们对于该级别的词几乎不怎么认识,甚至于HSK4的词都有很多没掌握的。所以为了短期突击,需要制作HSK4和5的核心词表。

制作思路如下:

1. 建立HSK标准词表,包括

  • 汉字
  • 拼音
  • 英文
  • 词性
  • 级别

2. 建立基于标准词表的词频表

3. 按照词频筛选核心词汇(除名词/动词/形容词之外的词类)

4. 按照字族筛选核心词汇(名词/动词/形容词)

之所以要补上按照字族筛选核心词汇,是因为汉字的字族(也就是语素教学法中的语素)能有效降低学生的学习成本和记忆成本。比较适合名词/动词/形容词这三类数量比较多的词类。

具体步骤如下:

一,建立HSK标准词表(1-6级)

网上有现成旧词表下载,需要人工审核的是以下几个部分

1. 词表更新:根据HSK官方考纲2015版,有近12%的词汇是增补的,要替换进旧词表

2. 拼音审核:特别是多音字,大小写,还有谷歌翻译的莫名拼写(比如法国的拼音是Fàguó你敢信?)

3. 义项审核:有些多义词,是需要根据官方考纲的词性标注,进行修正的(比如长zhǎng和长cháng)

二,添加词性分类

在这里词性分类有两个方法

1)直接用手机拍照然后用OCR识别官方考纲上的词性标注,与标准词表进行一一对应

2)用Python调用jieba插件,进行词性标注

我用的是第二种方法,代码如下

#!usr/bin/env Python
# coding = utf-8

import jieba.posseg as pos
import xlrd
import xlwt

input_excel = xlrd.open_workbook('/Users/Arthur/learnPython/vocabulary/HSK5.xlsx')
input_sheet = input_excel.sheets()[0]
output_workbook = xlwt.Workbook(encoding="utf-8")
output_worksheet = output_workbook.add_sheet("new", cell_overwrite_ok=True)

row1 = 1
col1 = 1

#存在词典查不到的词,需要优化
for word_num in range(2144):
    item1 = input_sheet.cell(row1,col1).value
    part_of_speech = pos.cut(item1)
    for word, flag in part_of_speech:
        output_worksheet.write(row1-1, col1-1, word)
        output_worksheet.write(row1-1, col1, flag)
    row1=row1+1

output_workbook.save('/Users/Arthur/learnPython/vocabulary/HSK5-2.xls')

标准好的词性分类如下

db4b1475ed07381888cf7383f52ee4d9.png

这里有一个问题就是jieba插件的词性分类是按照与ictclas 兼容的标记法进行标记的,很多标记与我们熟知的英语不一致,举例如下:

ceb7b4e8328ba1d83118533eca4cf5bf.png
词性标记与传统的英语语法不一致

解决方法是复制到excel之后,进行批量替换即可。

三,建立词频表

因为没有HSK范围内的语料库支持,所以从网上找了一个八千多词频表作为基准。总体而言,针对HSK考试的有效性是不足的,但在时间有限的情况下,也没有更好的办法了。

将HSK标准词表与八千词频表进行比对(用excel的函数vlookup),自动填充HSK词汇的词频。

这里有一个问题就是有些词在词频表里没有出现,采取的处理方法就是:词频作为0处理。不过根据词类排序之后,大部分的虚词还是一眼就能看出来的,影响不大。

建立好的词频表如下:

3050ce6a0b1d89aa130b929b7525614d.png
增加了词频,可以看到有的词频是N/A

四,筛选核心词汇

筛选核心词汇我采用了两种方法

1)按照词频分

将副词/连词/介词/助词等数量较少的词类,在excel中按照词频排序。

实际情况是,词频基本没啥用,因为这些词类本身数量就比较少,所以基本都入选了核心词汇。

2)按照词频+字族分

前面已经介绍过,采用这种方法的原因是

1. 字族能有效降低学习成本和记忆成本,适合考试的时候猜测词义

2. 名动形这三个词类的词汇数量比较多,用字族就能打破一个一个记忆的障碍,以少驭多。

3. 当筛选出n个字族时,再用字族里所有词汇的权重之和去给字族排序,所以

  • 字族的词越多,排名越前
  • 不同字族的词一样多,词汇相加的权重之和多高,该字族排名越前
  • 排序之后再人工筛选一遍

字族的筛选方式是用Python完成的,代码如下:

#!usr/bin/env Python
# coding = utf-8

import xlrd
import xlwt

input_excel = xlrd.open_workbook('/Users/Arthur/learnPython/vocabulary/HSK5.xlsx')
input_sheet_character = input_excel.sheets()[3]
input_sheet_words = input_excel.sheets()[4]

output_workbook = xlwt.Workbook(encoding="utf-8")
output_worksheet = output_workbook.add_sheet("new")

nrows_words = input_sheet_words.nrows

characters_list = input_sheet_character.col_values(colx=0, start_rowx=0, end_rowx=None)

for item1 in characters_list:
    row1 = 0
    col1 = 0
    item1_list = []
    item1_weight = 0
    item1_list.append(item1)
    for i in range(nrows_words-1):
        item2 = input_sheet_words.cell(row1+1, col1+1).value
        item2_weight = input_sheet_words.cell(row1+1, col1+5).value
        if item2_weight == 42:
            item2_weight = 0
        if item1 is not item2 and item1 in item2:
            item1_list.append(item2)
            item1_weight = item1_weight + item2_weight
        row1 = row1+1
    if len(item1_list) > 3:
        print (item1_weight, item1_list)

这里做了一个限制条件,只有字族的词汇数超过3的,才列入字族。

最终代码跑出了744个字族,通过权重排序和人肉筛选,最终挑选了30个字族共380个词,去重后共350个,作为名/动/形/的核心词汇。

本次的核心词汇表(HSK4/5)共582个词,分布如下:

a5c6fcab62a51916025df7c2ee918eed.png
最终整理成PDF的形式发给学生

HSK核心词汇(4&5级)是Excel和Python相结合的成果,对于以后其他级别的核心词制作有借鉴意义。目前来看,可以提升的地方有:

  1. 建立HSK范围的语料库,提高词频表的有效性
  2. 将字族再进行义项分类,提高字族的精度

其中语料库的建立是非常重要的,今后也会慢慢学习用Python进行语料库的相关编程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值