山东大学2018级项目实训2021-7-3

山东大学2018级项目实训2021-7-3

时间:2021年7月3日-7月4日
项目题目:基于关键词的语义泛化系统

1.具体工作

1.通过增加过滤条件实现,降低使用内存
过滤函数具体代码段如下:最终输出结果是只含有两个词的词典文件,与其对应的向量文件

# 过滤
def wordfilter (txt):
    '''
    以下过滤:
	* 纯数字
	* 带英文标点符号,且长度大于1的
		标点: [,;&:]
	* 重复3个以上
		例如:好好好, 天天天, 的的的
	* 纯英文
    * 英文字母+英文标点
    * 中文标点: [。,、“”?!:.()~?-……)(/]
    '''
    lstKey = [
            r'^\d+$',               # 纯数字
            r'^.+[\-\.,;&:\'].$',      # 带英文标点符号,且长度等于1的
            r'^[。、“”?!:()~\?\-……,=)(/【】——~;]+$',
            r'^[\-\.,;&:\'"!+;*·」_’‘%@`「<>]+$',  # 中文标点,英文标点
            r'^(.)\1{2,}$',           # 重复3个以上
            r'^([a-z])+$',                # 纯英文字母
            r'^([a-z])[a-z\-\.,;&:]+$',   # 英文字母+英文标点
            r'^.+[。、“”?!:()~\?\-……)(/].*$', # 带中文标点的
            r'^[\u4E00-\u9FA5]{,1}$',  # 任何单个中文字符
            r'^[\u4E00-\u9FA5]{3,}$' #三个及以上中文字符
    ]
    ret = IsMatch(txt, lstKey, tf=1)

    return ret
    
最终输出结果是只含有两个词的词典文件,与其对应的向量文件

2.分段式存储,利用了简单的if-else语句,当到达规定的行数时,将其在内存中释放
具体代码实现:

  if i < 1100000:
                chars.append(x[0])
                v = [float(i) for i in x[1:]]
                vectors.append(v)
            else:
                if i==1100000:
                    chars.append(x[0])
                    v = [float(i) for i in x[1:]]
                    vectors.append(v)
                    if not os.path.exists(outpath):
                        os.mkdir(outpath)
                    savetofile('\n'.join(chars), os.path.join(outpath, 'word1.txt'))
                    np.save(os.path.join(outpath, 'vector1.npy'), np.array(vectors))
                    chars.clear()
                    vectors.clear()
                else:
                    if i < 2200000:
                        chars.append(x[0])
                        v = [float(i) for i in x[1:]]
                        vectors.append(v)
                    else:
                        if i == 2200000:
                            chars.append(x[0])
                            v = [float(i) for i in x[1:]]
                            vectors.append(v)
                            if not os.path.exists(outpath):
                                os.mkdir(outpath)
                            savetofile('\n'.join(chars), os.path.join(outpath, 'word2.txt'))
                            np.save(os.path.join(outpath, 'vector2.npy'), np.array(vectors))
                            chars.clear()
                            vectors.clear()
                        else:
                            if i < 3300000:
                                chars.append(x[0])
                                v = [float(i) for i in x[1:]]
                                vectors.append(v)
                            else:
                                if i == 3300000:
                                    chars.append(x[0])
                                    v = [float(i) for i in x[1:]]
                                    vectors.append(v)
                                    if not os.path.exists(outpath):
                                        os.mkdir(outpath)
                                    savetofile('\n'.join(chars), os.path.join(outpath, 'word3.txt'))
                                    np.save(os.path.join(outpath, 'vector3.npy'), np.array(vectors))
                                    chars.clear()
                                    vectors.clear()
                                else:
                                    if i <4400000:
                                         chars.append(x[0])
                                         v = [float(i) for i in x[1:]]
                                         vectors.append(v)
                                    else:
                                        if i == 4400000:
                                            chars.append(x[0])
                                            v = [float(i) for i in x[1:]]
                                            vectors.append(v)
                                            if not os.path.exists(outpath):
                                                os.mkdir(outpath)
                                            savetofile('\n'.join(chars), os.path.join(outpath, 'word4.txt'))
                                            np.save(os.path.join(outpath, 'vector4.npy'), np.array(vectors))
                                            chars.clear()
                                            vectors.clear()
                                        else:
                                            if i < 5500000:
                                                chars.append(x[0])
                                                v = [float(i) for i in x[1:]]
                                                vectors.append(v)
                                            else:
                                                if i == 5500000:
                                                    chars.append(x[0])
                                                    v = [float(i) for i in x[1:]]
                                                    vectors.append(v)
                                                    if not os.path.exists(outpath):
                                                        os.mkdir(outpath)
                                                    savetofile('\n'.join(chars), os.path.join(outpath, 'word5.txt'))
                                                    np.save(os.path.join(outpath, 'vector5.npy'), np.array(vectors))
                                                    chars.clear()
                                                    vectors.clear()
                                                else:
                                                    if i < 6600000:
                                                        chars.append(x[0])
                                                        v = [float(i) for i in x[1:]]
                                                        vectors.append(v)
                                                    else:
                                                        if i == 6600000:
                                                            chars.append(x[0])
                                                            v = [float(i) for i in x[1:]]
                                                            vectors.append(v)
                                                            if not os.path.exists(outpath):
                                                                os.mkdir(outpath)
                                                            savetofile('\n'.join(chars),
                                                                       os.path.join(outpath, 'word6.txt'))
                                                            np.save(os.path.join(outpath, 'vector6.npy'),
                                                                    np.array(vectors))
                                                            chars.clear()
                                                            vectors.clear()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值