python 随机padding_tokenizer的生成及padding

我们在做embedding的时候,通常会先做下tokenizer,然后再做word embedding,我们下面看看怎么来生成tokenizer。

1. 可以先搞一批raw data,可以从网上爬下来,也可以从已有的collection下载。

2. 做下分词,中文可以用结巴,英文用空格和特殊符号

3. 分词生成的terms,我们保存下来,每句话可以保存一行,每行多个terms,用空格分隔

4. 用分词的term生成tokenizer,并做下padding。我们这里只关注这个部分,其他部分可以参考其他的。

5. 生成word embedding

下面我们看下tokenizer怎么来做:

keras提供了tokenizer包可以直接用来生产tokenizer,我们下面来看下怎么用,直接上代码。

#!/usr/bin/python

from keras.preprocessing.text import Tokenizer

from keras.preprocessing.sequence import pad_sequences

from sklearn.externals import joblib

def tryTokenizer():

# read data

#sentence=[]

#with open('term_raw.txt',encoding = "utf-8",errors="ignore") as f:

# for line in f:

# sentence.append(str(line).replace('\n',''))

sentences = ['今天 天气 不错', '明天 天气 还行', '这是 什么 天气 啊'] # hard code here

# Tokenizer

num_words = 3 # 设置的最大词数

tk = Tokenizer(num_words=num_words + 1, oov_token='UNK') # 因为需要增加未登录的词,所有+1

tk.fit_on_texts(sentences)

tk.word_index = {e:i for e, i in tk.word_index.items() if i <= num_words}

tk.word_index[tk.oov_token] = num_words + 1

print(tk.word_index)

sequences = tk.texts_to_sequences(["这是 什么 天气 呀", '我的 天 呐'])

print(sequences)

# Padding

data = pad_sequences(sequences, maxlen=5, padding='post') # 对齐

print(data)

# Save tonkenizer result

joblib.dump(tk, 'data_tk_joblib_result.pkl') # 模型保存

tokenizer = joblib.load('data_tk_joblib_result.pkl') # 模型加载

sequences = tokenizer.texts_to_sequences(["这是 什么 天气 呀", '我的 天 呐'])

print(sequences)

if __name__ == "__main__":

tryTokenizer()

输出结果如下:

{'UNK': 4, '天气': 2, '今天': 3}

[[4, 4, 2, 4], [4, 4, 4]]

[[4 4 2 4 0]

[4 4 4 0 0]]

[[4, 4, 2, 4], [4, 4, 4]]

原文链接:https://blog.youkuaiyun.com/lwc5411117/article/details/106291544

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值