深度学习-推荐系统-CV-NLP深度学习大数据,机器学习,人工智能

人机对话系统(2)

2019-07-21  本文已影响12人  zidea
人机对话
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)

处理数据

要用 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'

上一篇下一篇

猜你喜欢

热点阅读