文本预处理

文本预处理(持续更新)

文本预处理的核心或者说是干嘛的?
答:把词变成能训练的东西。
本文目的:作为一个工具使用

1、简单粗暴的文本处理(英文)
将非英文直接替换成空格,并将所有字母都转化成小写

with open('text.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
#lines是一个list,每个元素是文件中的一行组成的字符串
import re
simple_process_file = [ re.sub('[^A-Za-z]+',' ',line).strip().lower() for line in lines ]

效果如下:
在这里插入图片描述
2、分词(英文)

def tokenize(lines,token = 'word'):
    if token == 'word':
        return [ line.split() for line in lines ]
    elif token == 'char':
        return [list(line) for line in lines]
    else:
        print("error: unknown token type"+token)

对s1作用后,效果如下:
在这里插入图片描述
3、构建vocabulary,即一个字典,形式为:{‘word’:id}
id可以是词出现的次数,也可以是一个从0开始的编码

import numpy as np
MAX_VOCAB_SIZE = 5  #希望我的vocabulary中有多少个单词,有时候一些冷门的词不希望出现在这里
from collections import Counter
vocab = dict(Counter(token[0]).most_common(MAX_VOCAB_SIZE-1))
vocab["<unk>"] = len(token[0]) - np.sum(list(vocab.values()))

这样,就得到了形如{‘word’:出现次数}的vocabulary,添加了未知词
在这里插入图片描述
下面可以根据词来构建形如{‘word’:id},id是从0开始的下标的vocabulary

idx_to_word = [word for word in vocab.keys()] 
word_to_idx = {word:i for i, word in enumerate(idx_to_word)}

idx_to_word是能根据对应的下标返回单词的list。
在这里插入图片描述
4、将单词转化成对应的id

def encode_text(texts):     #输入是一个文本的list
    encoded_text = []
    for text in texts:
        E = []
        for word in text.strip().split():
            if word in word_to_idx.keys():
                E.append(word_to_idx[word])
            else:
                E.append(word_to_idx['<unk>'])
        encoded_text.append(E)
    return encoded_text

再定义一个句子s2,将两句话一起放进去得到结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值