人机对话系统(2)

作者 : 开心源码 本文共1324个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共202人阅读

人机对话

labels = []docs_x = []docs_y = []for intent in data["intents"]:    for pattern in intent["patterns"]:        wrds = nltk.word_tokenize(pattern)        words.extend(wrds)        docs_x.append(wrds)        # print(docs_x)        docs_y.append(intent["tag"])        # print(docs_y)        if intent["tag"] not in labels:            labels.append(intent["tag"])

从输出来看我们构建两个集合分别 docs_x 用于存放每一句话,而 docs_y 用于按照相同顺序存放每一句话所对应的标签。

['Hi', 'How are you', 'Is anyone there?', 'Hello', 'Good day', 'Whats up', 'cya', 'see you later', 'Goodbye', 'I am Leaving', 'Have a Good day', 'how old', 'how old is tim', 'Goodbye', 'what is your age', 'age?', 'what is your name', 'what should I call you ', 'whats your name?', 'Id like to buy something', 'whats on the menu', 'what do you recommed?', 'could i get someting']['greeting', 'greeting', 'greeting', 'greeting', 'greeting', 'greeting', 'goodbye', 'goodbye', 'goodbye', 'goodbye', 'goodbye', 'age', 'age', 'age', 'age', 'age', 'name', 'name', 'name', 'shop', 'shop', 'shop', 'shop']
words = [stemmer.stem(w.lower()) for w in words]words = sorted(list(set(words)))labels = sorted(labels)
  • 首先 lower 将单词转换为小写,而后 stem 抽查单词的词干缺掉时态的复数形式获取单词的词干
  • 而后就是 set 来去重复的单词

解决数据

要用 docs_x 来训练模型,现在数据格式还不符合要求,我们需要将字母转换为神经网络可以识别的序列数字。

[1,0,1,0,0,2]

将我们数据(单词)对应到上面集合,每一个单词对应以位置上数据,1 表示存在该单词,假如大于 1,数字表示单词出现次数,这里 2 表示出现 2 次。

out_empty = [0 for _ in range(len(labels))]

这里只是简单定义,我们的输出为标签也就是识别出类别,通常应该为数组

[1,0,0,0,0]

1 在这表示对应 tag 为 greeting ,也就是输出结果为 greeting 。

可以通过打印明确 docs_x 与 docs_y 逐个对应该系,也就是一句话(输入)对应一个 tag(标签)输出,例如 ‘Is anyone there?’ 对应着 ‘greeting’

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 人机对话系统(2)

发表回复