运行示例(命令行+python运行)
- 在命令行环境下的应用
- 在pycharm中的运行代码,只有下列几行
首先寻找cheap +south+chinese food ,并获取其phone number+ address + post code
然后寻找French food ,系统自动认为在原来的条件上,结合 cheap + french + north/south/east/west ,都got 0 results。
可能是因为价格的限制,于是调整为 expensive+french + centre/north ,都有相应的results。
代码解析
餐厅对话机器人基于Jason d. Williams,Kavosh Asadi,Geoffrey Zweig 提出的混合代码网络(Hybrid Code Networks,HCNs)架构,混合代码网络: 实用且高效的端到端对话控制,带有监督和强化学习-2017 这篇论文,引入了混合编码网络(hcn) ,该混合编码网络将 RNN 与特定领域的知识和系统动作模板相结合。
虚线对应可选模块,黑色方块对应训练模型,平行四边形是依赖于数据集的模块,必须由软件开发人员提供。
Embedder词嵌入模型(fasttext、word2vec、glove等)词句嵌入技术概览
fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。
序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。
fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。
word2vec模型就是一个小型的神经网络。目前流行的有以下两种模型:如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』;如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』
GloVe的全称叫Global Vectors for Word Representation,称为全局词向量,是与word2vec相似的一种词向量表达。训练词向量的方法的核心思想是首先基于语料库构建词的共现矩阵,然后基于’词-词’共现矩阵和GloVe模型学习词向量。
Bags of words Embedder 词袋模型。
词袋模型是最基础的文本表示模型,就是把每一篇文章看成一袋子单词,并忽略每个词出现的顺序。具体就是将整段文本以词为单位分开,每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重代表这个词在文章中的重要程度
go_bot模型注释:
The network handles dialogue policy management. 网络处理对话策略管理
Inputs features of an utterance and p