文本中的Tokenizer使用Tensorflow实现

处理自然语言处理问题,使用深度学习方法搭建神经网络。除去文本预处理,比如去除无关符号、停用词等,最基础的一步操作便是将文本中的词或者字映射成数字ID。下面主要用Tensorflow方法实现这种操作。

from tensorflow.contrib import learn
import numpy as np
import jieba

data = [
    "自然语言处理将是人工智能发展中最瑰丽的皇冠",
    "深度学习应用于工业生产将带来无限的可能",
    "我爱NLP"
]
fit_data = ["谁将是自然语言处理的领头人,赋能工业"]
#自定义分词器
def tokenizer(fit_data):
    tokenizer_document = []
    for text in fit_data:
        content = jieba.cut(text)
        stopwords = [',', '。', '、']
        outstr = ""
        for word in content:
            if word not in stopwords:
                outstr += word
                outstr += " "
        tokenizer_document.append(outstr)
    return tokenizer_document

#tf提供的工具,将数据填充为最大长度,默认0填充,其中还可以自定义分词器
vocab_processor = learn.preprocessing.VocabularyProcessor(10)
data = tokenizer(data)
x = np.array(list(vocab_processor.fit_transform(data)))
#查看建立的Tokenizer词表
vocab_dict = vocab_processor.vocabulary_._mapping
print(vocab_dict)
#{'<UNK>': 0, '自然语言': 1, '处理': 2, '将': 3, '是': 4, '人工智能': 5, '发展': 6, '中': 7, '最': 8, '瑰丽': 9, '的': 10, '皇冠': 11, '深度': 12, '学习': 13, '应用': 14, '于': 15, '工业生产': 16, '带来': 17, '无限': 18, '可能': 19, '我': 20, '爱': 21, 'NLP': 22}
#保存词表
vocab_processor.save("vocab")

#加载词表
vocab_path = "vocab"
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)


#将新句子映射成数字ID序列,其中不在词表中会默认填充为0
x_raw = tokenizer(fit_data)
x_test = np.array(list(vocab_processor.transform(x_raw)))
print(x_test)
#[[ 0  3  4  1  2 10  0  0  0  0]]

 需要注意的一点是,我们需要定义分词器,不然得到的是将整句作用一个Token。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlphaU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值