Task02:文本预处理;语言模型;循环神经网络基础

注意:以下图片均引用自 《动手学深度学习》

一、文本预处理

预处理一般有四步1.读入文本 2.分词 3.建立字典,将每个词映射到一个唯一的索引(index)
4.将文本从此的序列转换为索引序列

1.读入文本

import collections
import re

def read_time_machine():
    with open('/home/kesci/input/timemachine7163/timemachine.txt', 'r') as f: ##将文本打开
        lines = [re.sub('[^a-z]+', ' ', line.strip().lower()) for line in f]   ##运用正则表达式处理文本
    return lines

re.sub 表示对 符合 [^a-z]+ 规则的文本 , 用‘ ’ 进行替换,也就是替换成空格
并且用 line.strip().lower() 将每行文本开头或结尾的空格或者换行符去除,并且将所有字母小写化
上面的正则表达式 是指 所有非a-z的字符并且长度大于等于1
经过此次变换我们 只剩下 所有英文字符和空格。
当然 对于 类似于 doesn’t 的处理 会出现 [‘doesn’, ’ ', ‘t’]的结果,这个并不是我们想要的
这里展示一下部分 读取结果在这里插入图片描述

2.分词

现在我们需要把这个list变成每个元素都是一个单词,而不是一个元素有好几个单词的情况,这就是我们要做的分词

def tokenize(setences, token='word'):
	if token == 'word':  ## 词分词,列表中每个最小元素是个单词
		return [setence.split() for setence in setences]
	elif token == ‘char’:  ##字母级分词,每个最小元素是个字母
		return [list(sentence) for sentence in sentences]
    else:
        print('ERROR: unkown token type '+token)
		

我们现在做 词分词 所以用默认展示结果
在这里插入图片描述

3.建立字典

我们要将上面每个词建立独立的索引编号,并且每个词在字典里不会重复出现

def  vocab(tokens):
##set(sum(tokens, []))              sum(list, []) 对列表含列表情况进行去除, 只剩下一个列表
	a = {}
	for i,j in enumerate(list(set(sum(tokens[0:52], [])))):
    	a[j] = i
    return a

在这里插入图片描述

4.将文本从此的序列转换为索引序列

b = []
for i in range(len(tokens[0])):
    b.append(a[tokens[0][i]])
b

在这里插入图片描述

5.分词工具推荐

现在有几个

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值