(四)基于TensorFlow的聊天机器人—文本处理方法

一、语料的获取与处理

1、什么是语料库?
语料:即语言材料。语料是语言学研究的内容。语料是构成语料库的基本单元。

语料库:存放的是在语言实际使用中真实出现过的语言材料,是以计算机为载体承载语言知识的基础资源。真实语料需要经过加工(分析、处理),才能成为有用的资源。

2、语料库的种类
异质的:语料有多种分类
同质的:语料同类
系统的:如聊天机器人
专用的:如保险推销聊天机器人

3、语料的获取途径
1、开放性语料数据集:
(1)中科院自动化所的中英文新闻语料库
(2)搜狗的中文新闻语料库
(3)人工生成的机器阅读理解数据集
(4)一个开放问题与回答的挑战数据集

2、爬虫技术

3、自有平台

语料的处理
步骤一:获取语料
步骤二:格式化文本
步骤三:特征工程(在数据集中提取相关的特征用于训练和验证)

二、NLP中的语言模型
语言模型概念
是NLP中的一大利器,是NLP领域一个基本却又重要的任务。
主要功能就是计算一个词语序列构成一个句子的概率,这可以用来判断一句话出现的概率高不高,符不符合表达习惯,是否通顺正确。
eg:我是NLP开发工程师、开发工程师我是NLP

语言模型分类
Unigram models(一元文法统计模型)
N-gram 语言模型(N元模型)

在这里插入图片描述
在这里插入图片描述
当n>3时基本就无法处理了,参数空间太大。另外它不能表示词与词之间的关联性。

三、词向量与word2vec
词向量:又称为词嵌入,是NLP中的一组语言建模和特征学习的统称,其中来自词汇表的单词或短语被映射到实数的向量。

word2vec,是为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练已重新构建语言学之词文本。

在这里插入图片描述
在这里插入图片描述

四、文本处理方法
1、数据清洗:去掉一些无意义的标签、url、符号等
2、分词、大小写转换、添加句首句尾、词性标注
3、统计词频、抽取文本特征、特征选择、计算特征权重、归一化
4、划分训练集、测试集

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于TensorFlow的简单聊天机器人代码: ```python import tensorflow as tf import numpy as np # 预处理数据 data = open('data.txt', 'r').read() data = data.lower() chars = list(set(data)) char_to_int = {c:i for i, c in enumerate(chars)} int_to_char = {i:c for i, c in enumerate(chars)} seq_length = 100 input_data = [] output_data = [] for i in range(0, len(data) - seq_length, 1): seq_in = data[i:i+seq_length] seq_out = data[i+seq_length] input_data.append([char_to_int[c] for c in seq_in]) output_data.append(char_to_int[seq_out]) n_patterns = len(input_data) # 构建模型 model = tf.keras.Sequential([ tf.keras.layers.Embedding(len(chars), 64, input_length=seq_length), tf.keras.layers.LSTM(128), tf.keras.layers.Dense(len(chars), activation='softmax') ]) model.compile(loss='categorical_crossentropy', optimizer='adam') # 训练模型 input_data = np.array(input_data) output_data = tf.keras.utils.to_categorical(output_data) model.fit(input_data, output_data, batch_size=128, epochs=20) # 使用模型进行预测 def generate_text(model, seed_text, length): for i in range(length): x = np.zeros((1, seq_length)) for j, c in enumerate(seed_text): x[0, j] = char_to_int[c] prediction = model.predict(x, verbose=0)[0] index = np.argmax(prediction) result = int_to_char[index] seed_text += result return seed_text print(generate_text(model, 'hello', 100)) ``` 其中,`data.txt` 包含了用于训练模型的文本数据,例如一些对话语料库。在这里,我们将文本中的大写字母转为小写字母,并将每个字符转换为一个整数,以便于神经网络进行处理。 接下来,我们使用Keras构建一个简单的LSTM模型。该模型包含一个Embedding层、一个LSTM层和一个全连接层。我们使用`categorical_crossentropy`作为损失函数,并使用Adam优化器进行优化。 然后,我们对模型进行训练,并使用训练好的模型生成一些文本。在这个例子中,我们使用了一个简单的seed text "hello",并生成了100个字符的文本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值