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]]

参考文档:LiveToolkit

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值