概要设计说明书 .cn
设计说明书
案例三:基于机器学习的上下文语句推断系统
设计
1引言 3
1.1编写目的 3
1.2背景 3
1.3定义 3
1.4参考资料 4
2总体设计 4
2.1需求规定 4
2.2运行环境 5
2.3基本设计概念和处理流程 6
2.4功能需求与程序的关系 6
2.5人工处理过程 7
2.6尚未问决的问题 7
3接口设计 8
3.1用户接口 8
3.2外部接口 8
3.3内部接口 8
4运行设计 9
4.1运行模块组合 9
4.2运行控制 9
4.3运行时间 9
5系统数据结构设计 10
5.1逻辑结构设计要点 10
5.2物理结构设计要点 10
5.3数据结构与程序的关系 10
6系统出错处理设计 11
6.1出错信息 12
6.2补救措施 12
6.3系统维护设计 12
概要设计说明书
1引言
1.1编写目的
概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能,给出一个系统的整体的结构图。
预期读者:本项目接受维护人员。
1.2背景
基于机器学习的上下文语句推断系统的设计与实现是赵老师自然语言处理方面的研究项目。用于在某些场景下替代人工做一些简单的解答,如客服机器人、银行自助机器人,解放人力资源。
1.3定义
机器学习:多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
深度学习:深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。它尝试为数据的高层次摘要进行建模。以一个简单的例子来说,假设你有两组神经元,一个是接受输入的信号,一个是发送输出的信号。当输入层接收到输入信号的时候,它将输入层做一个简单的修改并传递给下一层。在一个深度网络中,输入层与输出层之间可以有很多的层(这些层并不是由神经元组成的,但是它可以以神经元的方式理解),允许算法使用多个处理层,并可以对这些层的结果进行线性和非线性的转换。
递归神经网络:Recurrent Neural Networks (RNN) 是当前比较流行的模型,在自然语言处理中有很重要的应用。RNN 解决了传统神经网络不能做到的“先前的事件推断后续的事件”这个问题。RNN 是包含循环的网络,允许信息的持久化。
长短记忆神经网络:LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息。LSTM 由 Hochreiter & Schmidhuber (1997) 提出,被 Alex Graves 进行了改良和推广。在很多问题,LSTM 都取得相当巨大的成功,并得到了广泛的使用。LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!
Encode-Decode模型:Encoder-Decoder(编码-解码)是深度学习中非常常见的一个模型框架,比如无监督算法的auto-encoding就是用编码-解码的结构设计并训练的;比如这两年比较热的image caption的应用,就是CNN-RNN的编码-解码框架;再比如神经网络机器翻译NMT模型,往往就是LSTM-LSTM的编码-解码框架。因此,准确的说,Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字,语音,图像,视频数据,模型可以采用CNN,RNN,BiRNN、LSTM、GRU等等。所以基于Encoder-Decoder,我们可以设计出各种各样的应用算法
使用encode-decode模型的原因:
• 端到端(end-to-end)数据驱动。给定训练数据就可训练出来,省去做特征值抽取等步骤。提高开发效率。
• 和处理的语言没有关系,扩展性好。只要有对应语言的聊天数据即可训练,也不需要做针对语言的特定优化。
• 数据增多提升性能(也是针对encoder-decoder的深度学习模型)
1.4参考资料
[1] Sequence to Sequence Learning with Neural Networks, 2014, Google
2总体设计
2.1需求规定
输入:一句话
输出:系统根据上文给出答案,如图2.1所示。
图2.1
2.2运行环境
软件环境:
|Linux系统 |Ubuntu16.04 |
|TensorFlow |TensorFlow1.4.0 |
|语言 |Python3.0 |
|显卡 |Gtx 1080Ti |
2.3基本设计概念和处理流程
[pic]
图2.2文本处理流程图
[pic]
图2.3 encode-decode模型处理流程图
2.4功能需求与程序的关系
|模块名称 |模块文件及函数名 |功能 |
|语料预处理模块 |pre_process.py |将对话分为问答二个文件 |
| |convert_seq2seq_files() | |
|词向量生成 |change_vocabulary.py |生成词汇表文件 |
| |gen_vocabulary_file() |将对话字符串转化为向量形式 |
| |convert_to_vector() | |
|数据处理工具模块 |Data_utils.py |提供数据处理工程中需要的小功能 |
| |gunzip_file() | |
| |get_wmt_enfr_train_set() | |
| |get_wmt_enfr_dev_set() | |
| |basic_tokenizer() | |
| |create_vocabulary() | |
| |initialize_vocabulary() | |
| |sentence_to_token_ids() | |
| |data_to_token_ids() | |
| |prepare_wmt_data() | |
| |prepare_data() | |
|生成模型 |my_seq2seq_model.py |一直训练模型,过段时间保存一下 |
| |read_data() | |
|测试 |test.py |读取前面一句话,读取生成模型,产生回答 |
2.5人工处理过程
挑选比较好的语料库,电影字幕预料训练效果没有特别突出。
2.6尚未问决的问题
1选择更加大的语料库。
2 对有些提问生成的答案没有关联性。
3回答满意度不高。
满意度:
系统自动生成的答案和用户所想的答案对比。
3接口设计
3.1内部接口
说明本系统之内的各个系统元素之间的接口的安排。
|预料预处理,生成问答二个文件 |pre_process.py |
| |convert_seq2seq_files() |
|词向量的生成 |gunzip_file() |
| |get_wmt_enfr_train_set() |
| |get_wmt_enfr_dev_set() |
| |basic_tokenizer() |
| |create_vocabulary() |
| |initialize_vocabulary() |
| |sentence_to_token_ids() |
| |data_to_token_ids() |
| |prepare_wmt_data() |
| |prepare_data() |
|测试效果 |test.py |
4运行设计
4.1运行模块组合
[pic]
图4.1
4.2运行控制
无。
4.3运行时间
|模块 |时间 |
|pre_process.py |1min |
|Change_vocabulary.py |2min |
|My_seq2seq_model.py |4h |
|test.py(一次问答) |10ms |
5系统出错处理设计
5.1出错信息
|出错信息 |原因分析 |处理办法 |
|异常死机 |没出现过 |没出现过 |
|输入乱码 |使用者操作不当 |返回回答异常 |
|无输出 |没有生成回答 |返回不知道 |
5.2补救措施
无
5.3系统维护设计
由于本系统在开发时是逐步分模块运行后才开发下一模块,所以语料预处理和词向量生成是分开的,可以分开调试,后在训练模型。
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.