毕业设计

毕业设计 · 圈子

5502 位酷友已加入

本圈子收集理工类毕业设计与毕业论文,本科、硕士、博士各阶段的都可以,上传时请尽量注明毕设的概述信息~加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

中文文本分类实践(Text Classification)

Text Classification 文本分类(Text Classification)是自然语言处理中的一个重要应用技术,根据文档的内容或主题,自动识别文档所属的预先定义的类别标签。文本分类是很多应用场景的基础,比如垃圾邮件识别、舆情分析、情感识别、新闻自动分类、智能客服机器人的知识库分类等等。本文分为两个部分: Part 1: 基于scikit-learn机器学习Python库,对比几个传统机器学习方法的文本分类。 Part 2: 基于预训练词向量模型,使用Keras工具进行文本分类。 Text Classification Part 1: 基于scikit-learn机器学习的文本分类方法 语料预处理 生成训练集和测试集 生成数据集 文本特征提取:TF-IDF 构建分类器 Benchmark: 朴素贝叶斯分类器 对新文本应用分类 分类器的评估 构建Logistic Regression分类器 构建SVM分类器 Part 2: 基于预训练模型的CNN文本分类方法-Keras 读取语料 加载预训练词向量模型 使用Keras对语料进行处理 定义词嵌入矩阵 Embedding Layer 构建模型 参考资料 Part 1: 基于scikit-learn机器学习的文本分类方法 基于scikit-learn机器学习的中文文本分类主要分为以下步骤: 语料预处理 生成训练集和测试集 文本特征提取:TF-IDF 构建分类器 分类器的评估 1.语料预处理 定义搜狗新闻文本标签的名称,类似C000008这样的标签是语料的子目录,在网上搜到标签对应的新闻类别,为了便于理解,定义了这个映射词典,并保留原有编号信息。在网上搜索下载搜狗分类新闻.20061127.zip语料并解压至CN_Corpus目录下,解压之后目录结构为: 下面进行语料的切分,将每个类别的前80%作为训练语料,后20%作为测试语料。切分完之后的语料目录如下: 2. 生成训练集和测试集 生成数据集 从上面切分好的语料目录中读取文本并进行分词预处理,输出:训练语料数据(X_train_data)、训练语料标签(y_train)、测试语料数据(X_test_data)、测试语料标签(y_test)。 X_train_data, y_train, X_test_data, y_test = load_datasets() 数据集的形式如下: X_train_data[1000] y_train[1000] '_08_Finance' 3. 文本特征提取:TF-IDF 这个步骤将文档信息,也即每篇新闻被分好词之后的词集合,转为基于词频-文档词频(TF-IDF)的向量,向量的每个元素都是对应于某个词在这个文档中的TF-IDF值,在不同文档中,同一词的TF-IDF是不一样的。所有文档的TF-IDF向量堆放在一起就组成了一个TF-IDF矩阵。注意到这里应该包含了除停用词之外的所有词的TF-IDF值,词的个数构成了向量的维度。 用TfidfVectorizer将文档集合转为TF-IDF矩阵。注意到前面将文本做了分词并用空格隔开。如果是英文,本身就是空格隔开的,而英文的分词(Tokenizing)是包含在特征提取器中的,不需要分词这一步骤。下面在得到了分类器之后,使用新文本进行分类预测时,也是需要先做一下中文分词的。 X_train_tfidf.shape (13500, 223094) len(words) 223094 4. 构建分类器 Benchmark: 朴素贝叶斯分类器 得到了训练样本的文本特征,现在可以训练出一个分类器,以用来对新的新闻文本进行分类。scikit-learn中提供了多种分类器,其中朴素贝叶斯是一个很好的基准,有多个版本的朴素贝叶斯分类器,其中MultinomialNB比较适合于文本分类。 对新文本应用分类 对新的文本需要进行分类,那么只需将上面的tfidf_vectorizer应用在新的文本上,调用transform方法而不是fit_transform,将新的文本转换为TF-IDF特征,然后再调用分类器的predict,得到分类。 下面新闻节选自腾讯新闻网: 周鸿祎金融梦,营收20亿元直逼趣店,净利润同比增340% 录取率低过5%的美国名校,为何“花钱”就能上? 特朗普:伊朗对美军动武将会“灭亡” 5. 分类器的评估 有了分类器,以及知道了如何用分类器来对新的文本进行分类预测,那么可以用前面划分出来的测试集对这个分类器进行性能评估。得到了84.35%的准确率,作为Benchmark,这个结果还不错。调用classification_report可以得到更详细的结果: print(classification_report(y_test,predicted)) 再看一下混淆矩阵: confusion_matrix(y_test, predicted) 构建Logistic Regression分类器 再试一下其他的分类器,比如Logistic Regression,训练新的分类器: 最后测试结果还行,比Benchmark分类器好了不少。 构建SVM分类器 在传统机器学习中,SVM是做文本分类最好的工具。同样做一下跟上面LR一样的对比: 准确率不低: 传统机器学习方法这样的结果非常不错了,而且实现方式非常简单实用。 Part 2: 基于预训练模型的CNN文本分类方法-Keras 文本分类主要分为以下步骤: 读取语料 加载中文预训练词向量模型 使用Keras进行数据预处理,生成训练集和测试集 定义词嵌入矩阵 构建模型 1. 读取语料 这里读取原始语料,划分训练集和测试集,放在了后面预处理部分。 texts, labels = load_raw_datasets() 下表是转换后的标签表示: 序号 标签 名称 分类编码 0 C000008 Finance [1, 0, 0, 0, 0, 0, 0, 0, 0] 1 C000010 IT [0, 1, 0, 0, 0, 0, 0, 0, 0] 2 C000013 Health [0, 0, 1, 0, 0, 0, 0, 0, 0] 3 C000014 Sports [0, 0, 0, 1, 0, 0, 0, 0, 0] 4 C000016 Travel [0, 0, 0, 0, 1, 0, 0, 0, 0] 5 C000020 Education [0, 0, 0, 0, 0, 1, 0, 0, 0] 6 C000022 Recruit [0, 0, 0, 0, 0, 0, 1, 0, 0] 7 C000023 Culture [0, 0, 0, 0, 0, 0, 0, 1, 0] 8 C000024 Military [0, 0, 0, 0, 0, 0, 0, 0, 1] 2. 加载预训练词向量模型 解压之后的中文预训练词向量模型的文件格式是文本文件,首行只有两个空格隔开的数字:词的个数和词向量的维度,从第二行开始格式为:词 数字1 数字2 …… 数字300,形式如下: 364180 300 embeddings_index = load_pre_trained() Found 364180 word vectors, dimension 300 3. 使用Keras对语料进行处理 代码中word_index表示发现的所有词,得到的文本序列取的是word_index中前面20000个词对应的索引,文本序列集合中的所有词的索引号都在20000之前: 我们可以通过生成的词索引序列和对应的索引词典查看原始文本和对应的标签: category_labels[dict_swaped(labels_index)[argmax(labels_categorical[0])]] '_20_Education' 4. 定义词嵌入矩阵 下面创建一个词嵌入矩阵,用来作为上述文本集合词典(只取序号在前MAX_WORDS_NUM的词,对应了比较常见的词)的词嵌入矩阵,矩阵维度(MAX_WORDS_NUM, EMBEDDING_DIM)。矩阵的每一行i代表词典word_index中第i个词的词向量。这个词嵌入矩阵是预训练词向量的一个子集。我们的新闻语料中很可能有的词不在预训练词向量中,这样的词在这个词向量矩阵中对应的向量元素都设为零。还记得上面用pad_sequence补充的0元素么,它对应在词嵌入矩阵的向量也都是零。在本例中,20000个词有92.35%在预训练词向量中。 Embedding Layer 嵌入层的输入数据sequence向量的整数是文本中词的编码,前面看到这个获取序列编码的步骤使用了Keras的Tokenizer API来实现,如果不使用预训练词向量模型,嵌入层是用随机权重进行初始化,在训练中将学习到训练集中的所有词的权重,也就是词向量。在定义Embedding层,需要至少3个输入数据: input_dim:文本词典的大小,本例中就是MAX_WORDS_NUM + 1; output_dim:词嵌入空间的维度,就是词向量的长度,本例中对应EMBEDDING_DIM; input_length:这是输入序列的长度,本例中对应MAX_SEQUENCE_LEN。 本文中还多了两个输入参数weights=[embedding_matrix]和trainable=False,前者设置该层的嵌入矩阵为上面定义好的词嵌入矩阵,即不适用随机初始化的权重,后者设置为本层参数不可训练,即不会随着后面模型的训练而更改。这里涉及了Embedding层的几种使用方式: 从头开始训练出一个词向量,保存之后可以用在其他的训练任务中; 嵌入层作为深度学习的第一个隐藏层,本身就是深度学习模型训练的一部分; 加载预训练词向量模型,这是一种迁移学习,本文就是这样的示例。 5. 构建模型 Keras支持两种类型的模型结构: Sequential类,顺序模型,这个仅用于层的线性堆叠,最常见的网络架构 Functional API,函数式API,用于层组成的有向无环图,可以构建任意形式的架构 为了有个对比,先不加载预训练模型,让模型自己训练词权重向量。Flatten层用来将输入“压平”,即把多维的输入一维化,这是嵌入层的输出转入全连接层(Dense)的必需的过渡。 每个Keras层都提供了获取或设置本层权重参数的方法: layer.get_weights():返回层的权重(numpy array) layer.set_weights(weights):从numpy array中将权重加载到该层中,要求numpy array的形状与layer.get_weights()的形状相同 get_weights方法得到的就是词嵌入矩阵,如果本例中取的词典足够大,这样的词嵌入矩阵就可以保存下来,作为其他任务的预训练模型使用。通过get_config()可以获取每一层的配置信息: model1.layers[0].get_config() 可以将模型训练的结果打印出来 plot_history(history1) 第一个模型训练时间花了大约30分钟训练完30个epoch,这是因为模型需要训练嵌入层的参数,下面第二个模型在第一个模型基础上加载词嵌入矩阵,并将词嵌入矩阵设为不可训练,看是否可以提高训练的效率。 从第二个模型训练结果可以看到预训练模型的加载可以大幅提高模型训练的效率,模型的验证准确度也提升的比较快,但是同时发现在训练集上出现了过拟合的情况。 第三个模型的结构: plot_history(history3) 通过加入池化层MaxPooling1D,降低了过拟合的情况。验证集上的准备度超过了前两个模型,也超过了传统机器学习方法。 转载自https://github.com/lijqhs/text-classification-cn

资源

【毕业设计】基于SSM的实验室管理系统

研究目的 基于B/S模式的实验室管理系统,它所覆盖的功能范围包括有实验室设备管理功能,实验室预约管理功能,实验设备购置与报废、审批购置申请报废申请、基本的设备查询统计等。它是一个由计算机软件、数据库管理、以及管理人员,学生,教师有机组成的实验室管理系统。 研究方法 相关技术 Spring Spring是一个开源框架,同时也是一个轻量级的框架,。并且Spring也是模块化的,这意味着我们可以使用其中的部分功能而不考虑其他不需要的功能。例如我们可以使用Spring中的AOP,IoC,DI并且舍弃其中的Dao使用Mybatis代替。 SpringMVC Spring 框架提供了我们日常开发中需要的web应用的MVC模块。因此可以说是spirngMVC是spirng的后来产品。SpringMVC所有的设计都是基于一个servlet,其类名为DispatcherServlet。所有的请求都将被它拦截,并且在初始化该servlet的时候就将映射初始化进来,因此DispatchServlet可以返回映射之后的视图。 MyBatis MyBatis 是一个不错的持久层框架,减少了代码的硬编码,也支持用户自己编写SQL语句,可以在xml中可以完成一对一或一对多的映射。使用起来非常轻便,易于上手。并且MyBatis支持多种数据库。 MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于。Oracle。旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。 Tomcat Tomcat是Apache下的一个开源的服务器项目,由于其开源以及代码效率执行非常好,深受广大开发人员的热爱。并且Tomcat服务器实现了jsp的解析,而且提供了一些不错的web功能。 项目使用 修改配置文件 如果本地的数据库版本是8以上, 需要修改配置文件中关于dbcp的配置部分, 以及pom.xml的jdbc-connection版本。 关于连接数据库的参数 applicationContext.xml mysql.properties 运行sql脚本 创建数据库 lab 运行doc目录下的lab.sql 在项目目录下(src\ilab_pro)运行 将war包部署到tomcat 将target目录下的war包放到tomcat即可看到效果,对应的网址 localhost:8080/ilab/index.jsp 研究结论 目录 1 绪 论 1 1.1 概述 1 1.2 国外研究现状 1 1.3 国内研究现状 2 1.4 研究意义 2 2 系统概述与技术介绍 3 2.1 系统概述 3 2.2 相关技术 3 2.2.1 Spring 3 2.2.2 SpringMVC 3 2.2.3 MyBatis 3 2.2.4 MySQL 3 2.2.5 Tomcat 4 3 需求分析说明书 5 3.1 概述 5 3.2 可行性分析 5 3.3 用例分析 6 3.4 数据描述 9 3.5 功能需求分析 10 3.5.1 功能划分 10 3.5.2 功能描述 10 3.6 非功能性需求分析 17 3.6.1 操作便捷 17 3.6.2 安全 17 3.6.3 响应快 17 4 系统总体设计 18 4.1 软件总体功能结构 18 4.2 用户界面设计 19 4.2.1 注册登录界面 19 4.2.2 主界面 19 4.2.3 通用的列表界面 19 4.2.4 申请购置设备界面 19 4.3 数据库设计 19 4.3.1 数据库概念模型设计 19 4.3.2 数据表结构 19 5 系统详细设计 25 5.1 数据结构 25 5.1.1 相关类名 25 5.1.2 分页的数据结构 25 5.1.3 一些常量 25 5.1.4 命名规范 25 5.2 核心功能设计 25 5.2.1 登录 25 5.2.2 购置设备 25 5.2.3 删除设备 25 5.2.4 用户管理 25 5.2.5 实验室管理 25 6 系统实现 26 6.1 环境搭建 26 6.2 功能模块 26 6.2.1 注册 26 6.2.2 个人信息管理 28 6.2.3 实验室设备管理 30 6.2.4 购置设备 32 6.2.5 审批购置设备申请表 33 6.2.6 盘点统计实验室数据 35 6.2.7 通知管理 36 6 系统测试 37 6.1 软件测试目标 37 6.2 软件测试方法 37 6.3 主要模块测试 37 6.3.1 登录模块测试 37 6.3.2 申请购置设备模块测试 39 6.3.3 修改个人信息模块测试 40 6.3.4 查询实验室设备模块测试 41 6.3.5 盘点统计模块测试 43 6.4 测试总结 44 总 结 46 参考文献 47 致 谢 48 外文原文 49 外文翻译 55 转载自:https://github.com/lovemyhan/ilab

资源

【毕业设计】基于 K-means 算法的校园微博热点话题发现系统

基于 K-means 算法的校园微博热点话题发现系统 一、研究目的 微博由其 “短平快 ” 的信息能力和快速传播能力 ,已广泛流行于高校学生的常生活中。但微博上的负面舆情信息给社会 、学校和个人带来巨大的危害 。由于微博的多而快特点 ,无法依赖人工对相关信息进行收集 、筛选和发掘热点话题 。因此研究并开发校园微博热点话题发现系统 ,对高校舆情工作有重要的意义。 二、研究内容 本文从微博独有的短文本特征及国内外相关微博研究出发,通过对校园微博进行分类处理后使 用K-means聚类算法对校园微博短文本聚类,并改进热度计算公式,通过话题热度提取校园微博热点话题,实现对校园微博热点话题的监控。本文通过几个模块设计并现了校园微博热点话题发现系统,包括微博数据爬取模块 、微博数据预处理模块、微博热点话题分析模块、微博热点话 题展示模块等模块。最后以广州中医药大学的生 活类微博 — 广中医I栋为研究对象,对校园微博 各模块功能及相关技术进行介绍,并对相关模块进行测试验证,分析校园微博热点话题特点,总结系统的优点和不足,提出下一步改进的设想。 三、研究结果 本文以校园微博作为研究主体,结合微博的特点,通过研究热点话题相关技术,实现了一套校园微博热点话题发现系统。该系统主要由数据获取、微博数据预处理、K-means 聚类分析等模块组成。该系统为校园舆情人员及时发现热点话题带来了很大的帮助。 本文主要实现内容如下: (1)使用Python爬虫技术并发获取微博页面 ,并使用 Python相关库快速提取微博文本内容 。 (2)观察校园微博的特点和传统文本的区别,根据校园微博短文本的特点进行数据预处理操作 。 (3)针对于向量空间模型的高维度以及微博文本表示的稀疏性,通过改进的TF-IDF算法实现有效的降维和特征选择,解决了VSM特征向量的稀疏性问题。 (4)针对于传统K-means 算法存在的局部最优解问题,改进了 Kmeans 算法初始簇心选择,提高了 K-means聚类的准确性 。 (5)根据校园微博的特点,改进了热度计算的算法,提高了获取热点话题的准确性。 (6)实现热点话题发现系统可通过可视化界面进行操作,方便舆情管理人员从界面上获取热点话题信息 。 四、目录 摘 要 ABSTRACT 第 1 章 绪论 1.1 国内外研究现状与意义 1.2 本文创新点 1.3 论文写作思路 第 2 章 相关技术介绍 2.1 网络爬虫技术 2.2 中文分词技术 2.3 特征选择及权重计算 2.3.1 特征选择 2.3.2 特征权重计算 2.4 文本表示 2.4.1 布尔模型 2.4.2 概率模型 2.4.3 向量空间模型 2.5 文本聚类算法 2.5.1 距离算法 2.5.2 K-means 聚类算法 2.5.3 二分 K-means 聚类算法 第 3 章 校园微博热点话题发现系统设计与实现 3.1 系统设计目标及要求 3.1.1 系统设计目标 3.1.2 系统设计要求 3.2 系统详细架构设计 3.3 系统功能模块设计与实现 3.3.1 微博数据获取模块 3.3.2 微博文本预处理模块 3.3.2 校园微博热点话题发现模块 第 4 章 系统功能测试 4.1 系统运行环境和参数 4.2 实验数据及处理 4.3 系统可视化界面 4.3.1 数据获取界面 4.3.2 热点话题排行榜 4.3.3 热点话题热度直方图 4.3.4 敏感词展示 总结与展望 参考文献 致谢 附录 via:https://github.com/guoweikuang/weibo_project

资源

【Demo】人脸识别

人脸识别小项目 系统功能 要求输入一张人脸图片后识别出是具体某个人,验证集评价指标采用准确率。 人脸库简介 ORL人脸数据库 共有40个不同年龄、不同性别和不同种族的对象,每个对象10副灰度图像,共计400副灰度图像,图像尺寸是92*112像素。人脸部分表情有变化,如笑与不笑、眼睛睁与不睁、眼镜戴与不戴等,是目前使用最为广泛的标准数据库。 Yale 人脸数据库 共有15个人,每人11副,共计165副在不同光照、不同表情的人脸图像。 由于两个人脸库的图片大小以及格式不一致,所以我只选择了第一个人脸库的人脸进行识别。人脸库见目录image。 核心技术 卷积神经网络(Convolutional Neural Networks, CNN), 是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。 与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 运行环境 Hardware:PC OS:Window10 Software or Package: Python3.6.2 tensorflow-1.8.0 Pycharm-2018 PyQt5 opencv-python-3.4.0(cv2) numpy-1.15.4 卷积神经网络算法流程 界面展示 界面功能展示 ① 人脸识别类FaceRecognition的参数,用于训练模型时使用。 ② Start按钮:启动训练模型Reset按钮:重置以上参数为空 ③ 模型训练中间输出过程展示 ④ Select...按钮:用于选择测试使用的图片,左边的文本框显示图片文件名称 ⑤ 左边的Selected图片是已选中的图片展示,Predicted图片是模型预测出的结果,即属于哪个人,然后从这个人的目录下面选择第一张进行展示,作为对比。 ⑥ 测试样本预测结果提示 结果分析 通过自己线下的多次调参,得到较好的效果的模型就是上面参数介绍里面的默认参数,即学习率为0.0001,模型训练次数50次,全连接层神经元个数2019,early_stopping为5,数据集划分比例0.9,当Shuffle data set = False时就可以理解为从每个人的10张图片里面选取9张作为训练集,剩余一张作为验证,即训练集包含360个样本,验证集包含40个样本,模型的最高准确率能达到0.925,即有37张图片分类正确,另外3张分类错误。 学习率这个参数特别重要,设置过大可能会跨过最优值,太小导致梯度下降太慢,模型训练时间过长且容易过拟合。然后我还尝试了划分比例0.8,0.7,它们的准确率分别为0.5和0.3.分析原因大致如下:由于训练样本太少容易出现欠拟合,另外可能参数设置不到位等等。 我所设计的模型里面,各用了两个卷积层和池化层,当然这个层数对模型结果影响也比较大,后期我会去尝试再加上一个或多个卷积层和池化层,看看效果。还有些比较重要的参数,比如说卷积层里面的卷积核和步长这些,考虑到界面和类参数个数,我就没有采样手动设置这些参数,而是采用事先默认设置的。 界面相关 本系统界面采用的是PyQt5做的,ui-package里的MainInterface.ui就是用PyQt5生成的xml文件,所以需要把它转化成.py文件。可以使用如下命令: 推荐一篇在pycharm配置PyQt5的教程,写的很详细:https://www.cnblogs.com/BlueSkyyj/p/8398277.html 另外,也可以通过下面的代码将当前目录下的.ui文件转化为.py文件。 文件简介 face_recognize.py:人脸识别类,核心模块。 load_images.py:加载图片,并将它保存在矩阵中。 ui-package/MainInterface.py:界面主程序,除了自定义功能区那几行代码外其它的都是PyQt5自动生成的。 ui-package/MainInterface.ui:PyQt5生成的xml文件。 ui-package/main.py:系统主函数,只需要运行这一个文件即可。 特别提醒:运行之前把所有.py文件里的路径改成自己所用的,不然程序会无法运行。界面程序有些小bug,欢迎issues交流 tensorflow保存或加载模型 https://blog.csdn.net/roger_royer/article/details/86520235 参考文献 https://www.cnblogs.com/BlueSkyyj/p/8398277.html http://www.tensorfly.cn/tfdoc/api_docs/index.html https://blog.csdn.net/liuxiao214/article/details/79048136 https://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/ http://cs231n.github.io/convolutional-networks/ https://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/ 来源https://github.com/rogeroyer/face_recognition

资源

[课程设计]小车快速精确定位设计与实现

一、实验室名称: 电子技术综合实验室 **二、实验项目名称:**小车快速精确定位设计与实现 三、实验学时: 60 四、实验目的与任务: 1、熟悉系统设计与实现原理 2、掌握KEIL C51的基本使用方法 3、熟悉智能小车实验平台应用 4、独立编程调试,测试和掌握各部分的功能 5、完成系统软件的编写与调试 6、完成设计报告 五、实验器材 1、PC机一台 2、智能小车实验平台一套 六、实验原理、步骤及内容 (一)试验要求 基本要求:80分 (1)程序运行后,在8位数码管的高2位显示自己的学号;低3位显示当前温度,作为后期温度补偿的参数; (2)设置一个按键,当按下该按键时,蜂鸣器响0.1秒(按键提示音),清除数码管显示,启动小车前进(速度可自行设定档位),在数码管后三位显示“秒表计时器”作为小车运行时间,“秒表计时器”(定时中断实现),显示从“00.0”开始,最大显示到“99.9” ; (3)小车行驶过程中,在前三位数码管上显示在距离障碍物的测距结果,精度为0.1厘米。 (4)设定小车距离目标位置12.5cm处停止前行,通过速度调节和前进后退等方式使小车精确定位在目标位置,若小于目标距离,则声光报警,即用一个发光二极管指示灯LED2闪烁(亮0.1s、灭0.9s);蜂鸣器用500Hz方波驱动声响;若大于等于目标距离,则撤销声光报警。 扩展要求:20分(二选一) (1)利用温度补偿方式提升超声波测距的测量精度。 (2)利用数据拟合方式提升超声波测距的测量精度。 (二)实验内容 1、硬件设计 本次智能小车的主要51开发板,结合拥有电机驱动以及超声波模块的小车模型,组成智能小车。主要用到的硬件有,51单片机开发板,开发板自带的八位数码管,按键,led灯,蜂鸣器,小车模型自带的超声波模块,电机驱动模块,总体的硬件框架如图所示。其中数码管用来显示秒表以及测距的距离,超声波模块用来测距,蜂鸣器和灯起到声光提示作用,按键起到启动小车的作用。当按下按键后,启动小车,同时开启超声波模块功能进行测距,数码管显示距离和启动的时间,蜂鸣器和灯在软件控制下启动。 总体硬件框架图如下。 图1 系统硬件构成框图 3、软件设计 本智能小车实验的功能由实验要求可知。在运行程序后,首先显示自己的学号,按下按键后,小车启动并测距,并在合适的位置停止,过程中有蜂鸣器和灯作为辅助。 由于需要运行多个任务,包括数码管显示,超声波的测距,电机的驱动等,所以在实现多任务的时候,使用了单片机提供的定时器0和定时器1的中断来实现多个功能。 本次软件的模块主要分为系统初始化模块,数码管显示模块,超声波测距模块,PWM控制电机驱动模块,延时模块。 七、总结及心得体会 本次的智能小车能实现基本功能: (1)程序运行后,高2位显示学号后两位; (2)2s后,清除数码管,高3位数码管上实时显示距离障碍物的测距结果,精度为0.1厘米。当按下该按键时,蜂鸣器响0.1秒(按键提示音),清除数码管显示,按下该按键并启动小车前进,在数码管低三位显示“秒表计时器”作为小车运行计时时间,以00.0-99.9循环计时。 (3)小车行驶过程中,在低3位数码管上实时显示距离障碍物的测距结果,精度为0.1厘米。 (4)当13.5cm>距离>120时,左右电机关闭,定位成功;当距离<12.0cm,声光报警,小车后退直到定位成功;当目标距离>13.5cm,小车前进,则撤销声光报警。 经过几天的学习与探究,运用keil软件编译并通过串口调试,发现实践和理论之间还存在着很多差距,实践出真知。在运行自己程序时,发现自身设计的小车快速精确定位还存在很多问题,比如:数码管和驱动无法并行运行,测距不准等问题,但经过不断地观察和调试,最终解决了这些问题。 通过本次实践,我们不仅学到了很多知识,包括定时中断,电机驱动,PWM的使用,也得到了很好的锻炼。一方面是整个系统设计的方法,统筹兼顾的考虑各个模块的实现,而且更重要的不管做什么事,当遇到问题时,一定要保持清醒的头脑。另一方面,认真观察,关键时刻可以运用调试软件方法,去寻找错误,很多时候代码语言正确是不会报错的,但是调试到小车上面确实出现不了预期的效果,问题出现在逻辑上面,自己的逻辑和计算机系统理解的逻辑有所出入,因而会出现不一样的效果。遇到这种情况,我们要仔细分析,努力寻找解决问题的方案。 除此之外,我们要更加注重细节,我们做设计时要考虑的各方面,实现方案的相关因素,包括理论论证、具体的分块功能测试、硬件是否易购买及价格等等都需要考虑,最终选择较优的方案。同时我们也认识到了细节的重要性,不论是在硬件的焊制中,还是软件的调试中,都可能“牵一发而动全身”,影响到其他部分,所以我们很注重细节的处理。 八、对本实验过程及方法、手段的改进建议 虽然完成了智能小车定位等功能,但没有对超声波测出的距离进行更高精度的设计,希望在后面有时间的话对测出的距离利用数据拟合方式提升超声波测距的测量精度。

资源

基于Spring Cloud的环境污染物数据分析与预测平台

AirNet - 环境污染物数据分析与预测平台 关于 AirNet:AirNet 是一个环境污染物数据分析与预测平台,采用微服务架构,基于 Spring Cloud (Finchley.SR2) 开发,监测数据来自上海市环境监测中心。 架构 服务 端口 描述 spring-cloud-consul 8500 服务注册中心 airnet-config-service 8888 服务配置中心 airnet-zuul-gateway 9000 服务网关 airnet-main-service 8080 前端展示服务(未完全前后端分离) airnet-data-service 8081 数据服务(包括污染物数据与用户数据) airnet-mail-service 8082 邮件服务 airnet-export-service 8083 数据导出服务 airnet-forecast-service 8084 PM2.5 预测服务(Flask&Keras) airnet-api-service 8085 API 服务 功能 主要功能包括数据可视化、空气质量排行、PM2.5 预测、污染物预警、历史数据导出、API(注:未登陆用户仅可使用部分数据可视化与部分空气质量排行功能)、后台管理。 1.首页 首页展示采用百度地图,监测站详细数据来自本地污染物数据库,实时温度、风向与空气污染扩散条件数据来自和风天气 API,PM2.5 浓度一周趋势采用本地数据的 24 小时均值。 由于首页数据都是热点数据(首页内未做个性化),因此全部采用 Redis 作为缓存,默认半小时失效。 2.可视化 前三项可视化来自第三方,其余基于 Echarts 实现本地污染物数据可视化分析。 上海市高空气流图 全国空气质量指数(AQI)地图 全球污染物分布图 标准折线图 标准散点图 标准饼图 标准雷达图 标准漏斗图 南丁格尔玫瑰图 3.空气质量排行 基于 Redis Zset 实现,默认一小时失效,其中全国空气质量实时排行数据来自腾讯天气 API。 上海市空气质量实时 / 历史排行 全国空气质量实时排行 4.污染物预测 上海市 PM2.5 浓度预测基于 Flask 与 Keras,后两项数据来自南京大学国际地球系统科学研究所区域空气质量预报系统(JAirFS)。 上海市PM2.5浓度预测 全国空气质量预报地图 长三角空气质量预报地图 基于 Seq2seq 的 PM2.5 预测模型 采用异步方式处理模型训练请求,Spring Cloud 端会将用户的训练请求发至 Kafka,Flask 端从 Kafka 中拉出请求并训练模型完成预测。 5.污染物预警 通过 Spring 的 @Scheduled 注解实现定时任务,若监测站的最新一条数据超过用户设置的预警阈值,则会发送站内信与邮件通知用户。 站内信通知 邮件通知 6.历史数据导出 支持 Excel 导出 7.API 只有注册用户在 “API 说明” 页面中主动申请 API Key 并经过管理员同意下发 Key 后,用户才可使用 API Key 调用 API。AirNet API 提供以下三个接口,所有接口对于不同的用户都实现了可自定义化的限流策略(包括 QPS 限制与每月最多请求次数限制)。 历史 / 实时污染物数据 API 历史 / 实时空气质量排行 API 上海市 PM2.5 预测数据 API 污染物历史数据 API URL: api/v1/history?site={site}&pollutant={pollutant}&start={start_time}&end={end_time}&key={api_key} 参数含义如下: URL/参数 含义 site 监测点,为拼音代号,如jingan、hongkou pollutant 污染物,如so2、pm25,当为all时将返回全部污染物数据 start 开始时间,如2018-01-01 01:00:00 end 结束时间,如2018-01-01 01:00:00 key API Key 返回 JSON 字段含义如下: 字段 内容 site 监测点,如jingan、yangpusipiao,pudongxinqu等 time 污染物监测时间 city 监测点所属城市 aqi 空气质量指数(AQI),即Air Quality Index,是定量描述空气质量状况的无纲量指数 level 空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类 primaryPollutant 首要污染物 pm25 颗粒物(粒径小于等于2.5μm)1小时平均 pm10 颗粒物(粒径小于等于10μm)1小时平均 co 一氧化碳1小时平均 no2 二氧化氮1小时平均 oZone 臭氧1小时平均 so2 二氧化硫1小时平均 空气质量排行 API URL: api/v1/rank?area={area}&time={time}&order={order}}&key={api_key} 参数含义如下: URL/参数 含义 area 地区,目前仅支持sh(上海地区)、cn(全国) pollutant 污染物,如so2、pm25,当为all时将返回全部污染物数据 time 时间,如2019-01-01 01:00:00 order 排行顺序,如default顺序、reverse逆序 key API Key PM2.5 预测数据 API URL: api/v1/forecast?site={site}&start={start_time}&end={end_time}&key={api_key} 参数含义如下: URL/参数 含义 site 监测点,如jingan、yangpusipiao,pudongxinqu等 start 预测开始时间,如2018-01-01 01:00:00 end 预测结束时间,如2018-01-01 01:00:00 key API Key API Key 的生成策略 考虑到分布式环境下采用 UUID 直接生成 Key 可能会导致 Key 重复的问题,最终的 Key 生成策略采用 Twitter Snowflake 算法生成唯一 ID, 再使用 HmacMD5 算法对 ID 加密生成 API Key。 API 接口限流 基于 Zuul 与 Guava RateLimiter 实现,若用户的每秒请求次数超过 QPS 限制,或当月累计请求次数达到每月最大请求次数,则会触发限流。 后台管理 用户管理 API Key 管理 访问日志 其他 自定义注解实现统一日志打印 基于 Spring AOP 与反射实现 Controller 层的统一日志打印,只需要在打印日志的方法前加上自定义的注解 @MyLogger 即可,日志内容包括: 请求时间 Headers 请求 URL 用户 IP 用户 ID 用户名 类名 方法名 参数 返回类型 技术 FrontEnd: BootStrap / Echarts / FreeMarker BackEnd: Spring Cloud Config / Zuul / Ribbon / Feign / Hystrix / Spring Boot / Mybatis DB: MySQL / Redis MQ: Kafka 展示 未登陆用户 后台管理 转载自https://github.com/Marticles/airnet

资源

【毕业设计】基于python的微信公众平台机器人的设计与实现

研究目的 基于Python实现微信公众平台机器人的功能,用以接收消息以及实现对话。 研究方法 NGINX做负载均衡,反向代理 nginx.conf是nginx配置文件 使用mysql数据库 数据库连接在config.py中配置,配置好主机,用户名和密码之后,新建一个数据库,数据库称为“ weixin-robot”,然后运行db_creat.py脚本创建数据库,db_migrate.py脚本配置迁移数据库 主管工作进程管理工具 administratord.conf是supervisor的配置文件 aiml全称人工智能标记语言 app / aiml_set文件夹存放aiml语料 BeautifulSoup爬虫 作为机器人的几个附加功能,有知乎问答,百度关键字查询 图灵机器人api调用 注册一个账号,调用图灵api,解析封装返回微信即可 动态语料库 研究结论 转载自:https://github.com/w940853815/weixin-robot

资源

基于 Express + Axios 的 QQ音乐接口 nodejs 版

QQMusicApi 这是一个基于 Express + Axios 的 Nodejs 项目 对于所有处理过的返回数据,都会包含 result,100 表示成功,500 表示穿参错误,400 为 node 捕获的未知异常,301 表示缺少用户登陆的 cookie 关于如何在服务器上存储 cookie,可以查看接口 设置用户Cookie 开始 项目默认端口为3300,默认qq号 1234567 (设置Cookie),可以通过修改 bin/config.js 或设置启动参数 PORT=3400QQ=7654321 npm start 如果使用的是微信号,则将 bin/config.js 中的 qq好改为wxuin,具体数值可以在网页版qq音乐的 cookie 中获取 如果需要启用数据统计、ip拦截等,可以将bin/config.js 中的 useDataStatistics 设为 true (会存在直接拦截部分来自其他后台的请求) 常见问题 1、为什么无法获取音乐链接等? 请确保已正确添加绿钻账号 Cookie 信息,具体操作可以查看 设置用户cookie,检测是否设置成功可以查看 查看当前cookie 2、为什么返回了 自己起一个 node 服务 这么难?? 或 被加入了黑名单 ? 第一个,服务默认禁止了一些明显来源于爬虫的接口,可以将 util/dataStatistics.js 中相关代码注释重启, 如果短时大量请求会被拉入黑名单,可以通过移除黑名单、加入白名单,或者干脆在 app.js 里注释 dataHandle 相关代码 更新记录 21-02-10 修复部分歌手页面报错 & 增加歌手名字获取 21-02-09 修复日推歌单 & 部分歌手详情格式问题 21-01-19 优化404报错 21-01-17 优化获取链接接口报错提示 21-01-06: 底层格式修改,方便 electron 整合调用 20-12-15: 修复歌曲链接失效 20-08-03: 支持微信登录 20-08-03: 部分接口增加缓存策略 20-07-14: 修改了因图标导致的无法部署 20-06-24: 获取用户创建歌单接口出错 20-05-21: 新增推荐 banner、url 支持重定向、配置化启动 20-04-23: 修复高品音质获取失败问题 20-04-18: 写死的参数替换 20-04-14: 日推 20-04-07: 接口记录问题 20-03-30: 收藏歌单操作,获取用户收藏的歌单/专辑 20-03-22: 去除 cookie 中 uin 的其他字母 20-02-15: 新增评论操作相关接口 20-02-01: 新增多个歌单操作相关接口 20-01-31: 配合 chrome 插件自动获取存储 cookie 20-01-30: 增加快速搜索接口、歌单、专辑、歌单、mv的评论获取 20-01-19: issue#9 20-01-17: 更新歌曲链接的域名ip 20-01-09: 反馈 20-01-07: 歌单搜索接口修改 19-12-23: 排行榜相关接口优化、新增相似歌曲、相关歌单、相关mv 19-12-18: 批量获取歌曲信息、top排行榜数据优化 19-12-11: 高频ip黑白名单 19-12-05: 获取 mp3 和无损 ape、flac 等格式链接 19-11-14: 排行榜 19-10-29: 搜索歌手,专辑信息查询 19-10-15: url 获取 19-10-10: 热搜词、关注歌手、关注粉丝列表 19-09-23: 歌单、mv 的分类获取 19-09-21: 新增 MV 信息、根据分类筛选歌手、新碟推荐、新 MV 推荐 19-09-20: 支持在线测试 19-09-20: 新增 mv 接口,返回结果优化 19-09-19: 评论、推荐、歌手接口 19-09-18: init 公用参数说明 !> 非常重要,特别是和登陆 cookie 有关的参数 1、raw 前面提到的,默认为 0, 如果传了非0参数,则表示使用原汁原味的数据结构 2、ownCookie 默认为 0,使用服务器上预存的 cookie 信息, 非0表示使用浏览器传过来的 cookie,如果不使用的话,部分接口会遇到 301, 如果该用户非 vip,也无法获取大部分歌曲的播放链接,我自己会不定时的更新这个服务器上(api.qq.jsososo.com)的 cookie作为登陆用户 播放链接 接口:/song/urls 参数: id: 歌曲的songmid,必填,多个用逗号分割,该接口可用post或get 并不是所有的音乐都能获取到播放链接,如果是未登陆或非 vip 用户的 cookie,只能获取到非 vip 用户可听的歌曲, 其他像一些必须要购买数字专辑才能收听的歌曲,如果未购买也是无法获取的,无法获取到的播放链接则不会在返回的对象中出现, 这点需要大家自己做好兼容,我这里服务器会默认使用自己会员的 cookie,如果需要使用自己的 cookie,请参考上面文档 示例:http://api.qq.jsososo.com/song/urls?id=0039MnYb0qxYhV,004Z8Ihr0JIu5s 下载链接 接口:/song/url 参数: id: songmid type: 默认 128 // 128:mp3 128k,320:mp3 320k,m4a:m4a格式 128k,flac:flac格式 无损,ape:ape格式 无损 mediaId: 这个字段为其他接口中返回的 strMediaId 字段,可不传,不传默认同 songmid,但是部分歌曲不传可能会出现能获取到链接,但实际404, 所以有条件的大家都传吧 isRedirect: 默认 0,非 0 时直接重定向到播放链接 这个接口跟上个接口一样,也是依赖服务器的 Cookie 信息的,不支持批量获取,不一定是全部的歌曲都有无损、高品的, 要注意结合size320,sizeape,sizeflac 等参数先判断下是否有播放链接 示例:http://api.qq.jsososo.com/song/url?id=0039MnYb0qxYhV 搜索 接口:/search 参数: key: 关键词 必填 pageNo: 页码,默认 1 pageSize: 一页返回数量,默认 20 t: 搜索类型 默认为 0 // 0:单曲,2:歌单,7:歌词,8:专辑,9:歌手,12:mv 示例:http://api.qq.jsososo.com/search?key=%E5%91%A8%E6%9D%B0%E4%BC%A6 获取热搜词 接口:/search/hot 示例:http://api.qq.jsososo.com/search/hot 返回示例:k 为热搜词,n 为搜索量 快速搜索 接口: /search/quick key: 关键词 必填 快速给出少量符合条件的歌曲、mv、专辑、歌手 示例:http://api.qq.jsososo.com/search/quick?key=%E5%91%A8%E6%9D%B0%E4%BC%A6 查找音乐 单个查找 接口:/song/find 参数: key: 关键词 这个接口就像是简化版的搜索,根据关键词获取到搜出的第一个歌曲,不过他会直接带上播放链接,参数为url, 如果没有则表示无法获取到播放链接。这个接口的作用是,对于其他平台的歌单如果需要获取到企鹅音乐的信息时, 可以通过 歌名 + 歌手 + 专辑 等关键词获取大致的歌曲,当然这是并不能保障稳定的。 示例:/song/find?key=周杰伦%2f稻香 批量获取 接口:/song/finds 类型:仅支持post 参数: data: 对象,key 为歌曲id,value 为搜索关键词 同样,并不是所有传过去的 id 都会有返回,没返回就是没有找到,返回的歌曲也都是会包含播放链接 示例: 用户信息 设置用户Cookie 接口:/user/setCookie 参数: data: 字符串,cookie 信息,格式如下 aaa=bbb; ccc=ddd; .... 该方法仅支持 post 请求,content-type 选择 application/json,同时,当且仅当传入的 cookie 为写配置的 QQ 号(启动参数 或 bin/config.js)时才会 被作为默认的公用 cookie 存储使用,各位在搭建自己的服务时记得修改这里的信。参考如下 : 查看当前Cookie 接口 :/user/cookie 无需参数,共返回两个字段 cookie 为当前网站下的 cookie,userCookie 为服务器公用账号 cookie。 用户主页信息 !> 这个接口是需要登陆 cookie 才能获取的,不然会返回 301,所以如果有误需要考虑一下可能是 cookie 过期 接口:/user/detail 参数: id: qq号 必填 返回中 mymusic 为喜欢的音乐,mydiss 为用户创建的歌单,需要注意的是,喜欢的音乐中的歌单id为 id,歌单中的歌单id为 dissid 示例:http://api.qq.jsososo.com/user/collect/songlist?id=123456 用户创建的歌单 接口:/user/songlist 参数: id: qq号 必填 这个接口比上一个接口更纯粹,只获取创建的歌单,且数据结构更简单,非必须登陆 Cookie,但如果用户未公开主页时,只有本人的 Cookie 才能获取数据 示例:http://api.qq.jsososo.com/user/songlist?id=123456 用户收藏的歌单 接口:/user/collect/songlist 参数: id: qq号,必填,默认取 cookie 中 uin pageNo: 默认 1 pageSize: 默认 20 示例:http://api.qq.jsososo.com/user/collect/songlist?id=123456 用户收藏的专辑 接口:/user/collect/album 参数: id: qq号,必填,默认取 cookie 中uin pageNo: 默认 1 pageSize: 默认 20 示例:http://api.qq.jsososo.com/user/collect/album?id=123456 歌单 1、获取歌单详情 接口:/songlist 参数: id: 歌单id 必填 返回说明: 这些表示各种码率对应的文件大小,如果为0则表示该格式的文件不存在 示例:http://api.qq.jsososo.com/songlist?id=2429907335 2、获取歌单分类 接口:/songlist/category 这个接口没有参数,返回几种类型下的小分类 id 和 name,不同于歌手的筛选,搜索歌单时只能用一个 id,不能用且关系。 示例:http://api.qq.jsososo.com/songlist/category 3、根据分类获取歌单 接口:/songlist/list 参数 pageSize: 默认为 20 pageNo: 默认为1 sort: 默认是 5,// 5: 推荐,2: 最新,其他数字的排列值最后都会返回推荐 category: 分类 id,默认 10000000 (全部),其他值从上面的分类接口获取 示例:http://api.qq.jsososo.com/songlist/list 4、歌曲id、mid的哈希表 !> 这个接口强制使用浏览器传来的用户 Cookie 信息 接口:/songlist/map 参数: dirid: 默认 201 我喜欢的歌单 这个接口只能获取用户自己创建的歌单且只会返回歌曲的 id 和 mid 的哈希表,不包含其他数据 5、添加歌曲到歌单 !> 这个接口强制使用浏览器传来的用户 Cookie 信息 接口:/songlist/add 参数: mid: 歌曲 mid 必填,多个用 , 分割 dirid: 必填 6、从歌单中移除歌曲 !> 这个接口强制使用浏览器传来的用户 Cookie 信息 接口:/songlist/remove 参数: id: 歌曲 id 必填,多个用 , 分割 dirid: 必填 与上一个添加接口不同,移除需要 id 不是 mid 7、新建歌单 !> 这个接口强制使用浏览器传来的用户 Cookie 信息 接口:/songlist/create 参数: name: 歌单名,不能为空 如果歌单名重复,也会报错 8、删除歌单 !> 这个接口强制使用浏览器传来的用户 - Cookie 信息 接口:/songlist/delete 参数: dirid: 必填 9、收藏/取消收藏 歌单 !> 这个接口强制使用浏览器传来的用户 Cookie 信息 接口:/songlist/collect 参数: id: 歌单id 必填 op: 必填 1 收藏;2 取消收藏 歌曲信息 单个获取 接口:/song 参数: songmid: 必填 这个接口包含了很多的歌曲信息,包括歌手、专辑、语种、曲风等,但是不包含歌词,songinfo.data.track_info.album.mid 为专辑的 mid, 下面为专辑封面图片的路径,在搜索接口中也能获取到这个参数。 https://y.gtimg.cn/music/photo_new/T002R300x300M000${mid}.jpg 示例:http://api.qq.jsososo.com/song?songmid=0039MnYb0qxYhV 批量获取 接口:/song/batch 参数: songmids: 必填 这个接口本质为上一个接口的批量调用 示例:http://api.qq.jsososo.com/song/batch?songmids=001PLl3C4gPSCI,0039MnYb0qxYhV 相似歌曲 接口:/song/similar 参数: id: 歌曲 songid 必填 返回相似歌曲列表 示例:http://api.qq.jsososo.com/song/similar?id=5105986 相关歌单 接口:/song/playlist 参数: id: 歌曲 songid 必填 示例:http://api.qq.jsososo.com/song/playlist?id=5105986 相关MV 接口:/song/mv 参数: id: 歌曲 songid 必填 返回相关mv列表 示例:http://api.qq.jsososo.com/song/mv?id=5105986 歌词 接口:/lyric 参数: songmid: 必填 返回的接口中lyric和trans分别是歌词和翻译,转成了base64,这里node进行了解码。 示例:http://api.qq.jsososo.com/lyric?songmid=0039MnYb0qxYhV 示例:http://api.qq.jsososo.com/lyric?songmid=0039MnYb0qxYhV 推荐歌单 1、为你推荐歌单 接口:/recommend/playlist/u 这个接口不需要参数,需要注意,和下面这个接口的数据格式不同 示例:http://api.qq.jsososo.com/recommend/playlist/u 2、按分类推荐歌单 接口:/recommend/playlist 参数: id: 分类id,默认为 3317 // 3317: 官方歌单,59:经典,71:情歌,3056:网络歌曲,64:KTV热歌 pageNo: 页码,默认为 1 pageSize: 每页返回数量,默认为 20 示例:http://api.qq.jsososo.com/recommend/playlist 3、日推 接口:/recommend/daily 这个接口无需参数,强制使用传进来的 Cookie,返回日推歌单信息 4、轮播图Banner 接口:/recommend/banner 这个接口无需参数,目前仅已知会返回专辑推荐,但是只能获取albumid,非albummid 示例:http://api.qq.jsososo.com/recommend/banner 最新推荐 1、新歌推荐 接口:/new/songs 参数: type: 地区分类,默认为 0 // 0: 最新,1:内地,2:港台,3:欧美,4:韩国,5:日本 ps: 官方的接口其实不是这几个type,但是为了考虑与下面的新专和mv接口做兼容,所以做了改动 示例:http://api.qq.jsososo.com/new/songs 2、新碟推荐(专辑) 接口:/new/album 参数: type: 地区分类,默认为 1 // 1:内地,2:港台,3:欧美,4:韩国,5:日本,6:其他 num: 默认 10 这里和官方接口的参数是一致的 示例:/new/album 3、新 MV 推荐 接口:/new/mv 参数: type: 类型,默认为 0 // 0: 精选 1:内地,2:港台,3:欧美,4:韩国,5:日本 示例:http://api.qq.jsososo.com/new/mv 歌手 1、歌手介绍 接口:/singer/desc 参数: singermid: 必填 获取歌手的一些详细信息介绍 示例:http://api.qq.jsososo.com/singer/desc?singermid=0025NhlN2yWrP4 2、获取热门歌曲 接口:/singer/songs 参数: singermid: 必填 num: 返回歌曲数量 page: 页数 默认为第一页 示例:http://api.qq.jsososo.com/singer/songs?singermid=0025NhlN2yWrP4&page=1&num=20 3、获取歌手专辑 接口:/singer/album 参数: singermid: 必填 pageNo: 默认 1 pageSize: 默认 20 示例:http://api.qq.jsososo.com/singer/album?singermid=0025NhlN2yWrP4 4、获取mv 接口:/singer/mv 参数: singermid: 必填 pageNo: 默认 1 pageSize: 默认 20 示例:http://api.qq.jsososo.com/singer/mv?singermid=0025NhlN2yWrP4 5、相似歌手 接口:/singer/sim 参数: singermid: 必填 官方接口是有返回数量参数的,但是最多只返回10个,所以这里就写死返回 10 个 示例:http://api.qq.jsososo.com/singer/sim?singermid=0025NhlN2yWrP4 6、获取歌手分类 接口:/singer/category 这个接口没有参数,会返回 地区:area,类型:genre,首字母:index,性别/组合:sex 这些分类项的各个数据 示例:http://api.qq.jsososo.com/singer/category 7、根据分类获取歌手列表 接口:/singer/list 参数: area: 地区,默认 -100 genre: 风格,默认 -100 index: 首字母,默认 -100 sex: 性别/组合,默认 -100 pageNo: 默认 1 这个接口固定返回 80 条信息 示例:http://api.qq.jsososo.com/singer/list 专辑 1、获取专辑信息 接口:/album 参数: albummid: 必填 示例:http://api.qq.jsososo.com/album?albummid=002MAeob3zLXwZ 2、获取专辑内的歌曲 接口:/album/songs 参数: albummid: 必填 示例:http://api.qq.jsososo.com/album/songs?albummid=002MAeob3zLXwZ 评论 1、获取评论 接口:/comment 参数: id: singid, albumid, tid, topid, vid 必填 pageNo: 默认 1 pageSize: 默认 20 type: 默认 0 // 0:获取最新评论,1:获取热评 biztype: 获取评论类型 1: 歌曲 2: 专辑 3: 歌单 4: 排行榜 5: mv 当 pageNo为 1 且 type 为 0 时,会返回15条热评 hot_comment 返回结果说明:ispraise 表示这条评论是否被赞过,1: 是,0: 否;enable_delete 表示这条评论是否能被删除,1: 是,0: 否 上述的判断以 cookie 中的uin 账号为准 示例:http://api.qq.jsososo.com/comment?id=97773 2、发送评论 接口:/comment/send 类型:仅支持 post 该接口需要用户登陆 cookie 参数: id: singid, albumid, tid, topid, vid 必填 biztype: 发送评论类型 1: 歌曲 2: 专辑 3: 歌单 4: 排行榜 5: mv content: 评论内容,必填,不超过300字 3、删除评论 接口:/comment/del 该接口需要用户登陆 cookie 参数: id: commentid 必填 只要登陆情况下,一般这个接口返回的都是操作成功,不管 id 是否存真实在。 4、点赞评论 接口:/comment/like 该接口需要用户登陆 cookie 参数: id: commentid 必填 type: 1:点赞,2:取消赞,默认 1 电台 1、电台分类 接口:/radio/category 返回电台场景分类以及场景下的各个电台 示例:http://api.qq.jsososo.com/radio/category 2、获取电台歌曲 接口:/radio 参数: id: 电台id,从上面的分类接口中获取 获取电台中歌曲,其中个性电台需要登陆 cookie 示例:http://api.qq.jsososo.com/radio?id=568 MV 1、获取 MV 信息 接口:/mv 参数: id: 视频的 vid,必填 返回 info 为 MV 信息,recommend 为相关推荐的 MV 示例:http://api.qq.jsososo.com/mv?id=t0032kwa29w 2、获取 MV 播放链接 接口:/mv/url 参数: id: 视频的 vid , 必填,多个用,分割 返回的链接都是可以直接播放的完整mv视频 示例:http://api.qq.jsososo.com/mv/url?id=t0032kwa29w 3、获取 MV 分类 接口:/mv/category 和获取歌手分类接口类似 示例:http://api.qq.jsososo.com/mv/category 4、根据分类获取 MV 列表 接口:/mv/list 参数 pageNo: 默认 1 pageSize: 默认 20 area: 地区,默认 15 全部,具体数值从上面分类接口获取 version: MV 类型,默认 7 全部,具体数值从上面分类接口获取 示例:http://api.qq.jsososo.com/mv/list 排行榜 1、获取榜单列表 接口:/top/category 参数: showDetail: 是否显示前三歌曲简单信息和榜单介绍,0,不显示,1 显示,默认 0 这个接口列出了几个榜单的分类,包含了榜单名、榜单 id、更新时间、播放量,(榜单介绍、前三歌曲非必传回) 示例:http://api.qq.jsososo.com/top/category 2、获取榜单详情 接口:/top 参数 id: 默认 4,从上面的列表中取值 pageSize: 默认 100 // 部分接口不支持这个字段,所以这里默认选择100 period: 榜单的时间,从上面的列表中取值,非必填 time: 默认当前时间,如果有 period,此参数无效 time: 当前榜单的发布时间,可能是天,也可能是周 timeType: 当前榜单的时间格式 YYYY_W 或 YYYY-MM-DD rank: 在榜单的排名 rankType: 1 上升,2 减少,3 持平,4 新歌,6 上升百分比 rankValue: 排名改变值 传入的 time、period并非必定与传回参数相同,比如,当榜单最新时间为 2019_49, 而传入 period=2019_50时,会返回 2019_49的榜单, 虽然这里不传或传入错误的 period 也会返回正确的数值,但是实际是通过第一次请求返回的结果来验证period是否正确,如果不正确会再进行第二次请求, 因此会造成返回的比较慢,尽量都传入上一个接口中返回的period 关注、粉丝 1、获取关注的歌手列表 接口:/user/follow/singers 该接口需要用户登陆 cookie 参数 pageNo: 默认 1 pageSize: 默认 20 id: 用户的 qq 号,默认为当前登陆用户 2、获取关注的用户列表 接口:/user/follow/users 该接口需要用户登陆 cookie 参数 pageNo: 默认 1 pageSize: 默认 20 id: 用户的 qq 号,默认为当前登陆用户 3、获取用户的粉丝列表 接口:/user/fans 该接口需要用户登陆 cookie 参数 pageNo: 默认 1 pageSize: 默认 20 id: 用户的 qq 号,默认为当前登陆用户 4、关注/取消关注 歌手 接口:/user/follow 该接口需要用户登陆 cookie singermid: 关注的歌手 mid,必填 operation: 操作,1:关注,2:取消关注,默认为 1 接口调用统计 接口的数据统计包含系统、ip、路径、浏览器等信息,已经忽略掉 node 接口自身调用的情况,数据为用 json 方式存储 (我会说是因为我不会用数据库嘛 /data 下还包含了很多其他接口,不过大部分都是用户不需要的,给管理员调用的,所以大家在源码里自己探索吧 1、获取数据统计 接口: /data 参数 type: 默认 ip,可选:ip, browser, browserVersion, os, osVersion, path, url, host startTime: 默认当前时间 endTime: 默认当前时间 这个接口会返回各个数据的统计结果 转载自https://github.com/jsososo/QQMusicApi#%E6%90%9C%E7%B4%A2

资源

【毕业设计】爬虫及数据动态分析管理

爬虫及数据动态分析管理 环境配置 jdk1.8 Maven 3.3.9 Mysql 5.6 SpringBoot 1.4.3 Shiro 1.2.5 Gson 2.3.1 Mybatis 3.2.7 Webmagic 0.6.1 Echarts类库 freemarker web端框架 Springboot/Mybatis/Shiro/maven/Echarts shiro 权限及安全设计 Springboot 快速构建Spring全家桶,无XML实现。 maven 项目构建管理 爬虫 爬虫模块运用WebMagic框架爬取学校官网信息持久化Mysql中。相对于python还是比较臃肿,但是也是非常好用且方便的。 数据处理 利用HanLp进行自然语言处理、分词、统计等。 数据展现 Echarts图表展示 有待改进 爬虫只能整站爬取,且与Web端模块分离 HanLp自然语言处理,文章数据量大加载过慢。 来源https://github.com/kxinds/GraduationProject

资源

智能会议室

智能会议室 ➢ 前言 “智控会议室”为了满足各行各业人士的需求,具体针对企业、园区、学校等会议的安排与管理进行功能创新,经过不断地优化和完善,详细的分析了会议管理曾遇到的各种情况,设计了更好的方法解决多场会议预定时间冲突、人员缺席情况不方便记录等问题,是一款实用、简约、便捷的会议室管理系统。现如今我国快速发展,离不开各行业工作效率的提高,这样就需要生活中的方方面面都有更合适的方法来节省工作时间,舍去没有必要的步骤。“智能会议室”以界面朴素简约、功能便捷实用为主要理念,不断改善,提高“管理会议”工作的质量,保证会议室资源利用的更加高效、灵活。 ➢ 目标 满足多个会议及会议室管理,及多人同时预定冲突的情况; 满足会议发起者需要创建不同类型的会议需求 满足人脸会议签到,以及会议参加记录导出 ; 界面设计美观,简约,使用户更容易熟练使用。 ➢ 功能简介 1.用户端:提供 Web 端和移动 APP(Android/IOS)两种形式 (1)领导端 ①可以查询、预定会议室、发起/取消会议 ②查看报名参加其他领导发起的会议 ③导出会议的出勤记录 ④修改个人信息 ⑤查看系统消息、以及报名会议的待审核消息 (2)员工端 ①查询、报名其他领导发起的会议 ②取消已经报名的会议 ③修改个人信息 ④查看系统消息、以及报名会议反馈消息、会议取消消息等 组织架构 用户登录 2.会议室前端: ①自动更新报名信息 ②管理员可以进行会议室绑定 ③绑定后领导可以扫码预约会议室 ④参加会议需要进行人脸识别并记录出勤信息(如果是外宾需要会议发起者同意才可参加) 会议室前端(领导特有功能) 会议室前端(员工) 3.管理端: ①管理员注册已经修改 ②会议室、会议信息的增删改查 ③系统消息的发送 ④员工注册信息,以及修改个人信息的审核与通过 ⑤数据库备份 ⑥用户信息的管理 ➢ 特色综述 1.与会议室门禁相结合,通过人脸识别,只有是当前会议的参加人员才能进入 2.会议设置三种类型,每种类型特有的权限,使会议发起者可以根据自己的需求选择合适的会议类型 3.注册直接调用python脚本进行人脸检测保证上传的图片含有人脸 4.参加会议人脸识别后自动会议签到并记录,会议发起者可以将会议记录导出成excel表格并查看 5.会议室前段首页有二维码,会议发起者可以直接扫码进行会议室预定 ➢ 开发工具与技术 数据库工具:Mysql; 前段开发技术:bootstrap框架、jq、js、css等 后端开发技术:php 人脸检测接口调用:python 人脸识别接口调用:Android 开发工具:DW、phpstorm、android studio、pycharm 服务器信息:阿里云云虚拟主机 域名信息:www.zlsz666.cn 演示视频制作软件: PR、AE、Vegas、Au; ➢ 应用对象 拥有多个会议室的大中型企业、学校、政府部门等。 ➢ 应用环境 绝大多数型号的手机、电脑、平板 ➢ 结语 “智控会议室”集多位团队成员智慧、经过数月的开发逐步完成。以智能会议室理念为核心,实现智能化管理会议室,解决会议室管理带来的问题。智控会议室会继续改进,修复没有考虑到的不足之处,不断优化、完善,开发新的功能,为各个行业提供便利。 ➢智控会议室管理系统结果展示 会议室后台首页 会议室后台用户信息管理 会议室后台到审核信息管理 会议室前端首页 会议室前端绑定 会议室前端管理员登录 转载自https://github.com/zhang09090606/zkhy

资源

【毕业设计】基于Attention机制的LSTM语义模型安卓聊天机器人的实现

基于Attention机制的LSTM语义模型安卓聊天机器人的实现 一、研究目标 随着智能移动设备的快速发展,移动端的用户期望更加人性化的设备使用体验以及通过自然语言与计算机沟通交流。基于来自互联网的大量短对话数据,通过计算图框架Tensorflow实现基于Encoder-Decoder的LSTM网络单元模型生成式聊天机器人,并设计一款Android客户端聊天机器人软件,结果表明移动端聊天机器人的可行性和有效性。 二、研究方法 本文对常用的检索式和生成式两种实现方式进行对比,基于主流的实现聊天机器人所采用的生成式技术框架,本文主要使用Encoder-Decoder端到端的模型,它可以对中间的词法分析、句法分析省略,并减少了对序列的过多假设和猜想,十分高效。 在实现Encoder-Decoder框架时并结合LSTM神经元网络,在此基础上添加Word Embedding词嵌入、Attention注意力机制、Beam Search集束搜索算法等,解决了信息传递、人格一致性和回答多样性问题。 三、研究结论 本文主要设计了一款智能聊天机器人软件,在智能聊天机器人的关键技术上做了一些研究,利用文本词向量表示技术和Encoder-Decoder框架下LSTM训练并生成对话。 四、目录 摘要 ABSTRACT 1 绪论 1.1 研究背景及意义 1.2 国内外研究现状 1.3 论文的主要工作 2 相关技术介绍 2.1 自然语言处理相关 2.1.1 词性标注 2.1.2 语法解析 2.1.3 语义分析 2.2 聊天机器人的关键技术 2.3 Android系统 2.4 本章小结 3 深度学习相关 3.1 神经网络概述 3.1.1 神经元模型 3.1.2 感知机与多层网络 3.1.3 反向传播算法 3.1.4 全局最小与局部极小 3.2 常见神经网络 3.2.1 卷积神经网络 3.2.2 循环神经网络 3.3 本章小结 4 Attention-Based LSTM聊天机器人模型 4.1 传统的RNN Encoder-Decoder框架 4.2 Attention-based Model思想 4.3 Attention-Based LSTM的聊天机器人模型 4.4 Dropout机制 4.5 Beam Search算法 4.6 本章小结 5 聊天机器人软件客户端开发与模型测试 5.1 软件环境 5.2 聊天机器人客户端开发 5.2.1 聊天机器人界面开发 5.2.2 聊天机器人模块开发 5.3 软件测试 5.4 语料数据 5.5 模型训练 5.6本章小结 6 总结与展望 6.1 总结 6.2 展望 致 谢 参 考 文 献 来源https://github.com/ximingxing/chatbot#speech_balloon-faq

资源

【项目】深层文本匹配

深层文本匹配 项目模型 环境准备 运行 运行一般深度神经网络模型 运行 bert 系列模型 使用自己的数据训练 将自己的数据集处理成 header 为 sentence1,sentence2,label 三个字段的csv文件,如下图所示: 将数据分为 train.cav,dev.csv ,test.csv 放入 ./input 文件夹中。 自己重写数据预处理脚本 设置参数 在train.py脚本里的相应位置设置相应模型的参数。 实验结果分析 毫无疑问 bert 系列模型的效果最好,由于我的电脑不允许我使用较大的batchsize进行训练,因此上文表格中报道的准确率不是最佳准确率,如果加大batchsize 应该能提升效果的;另外使用 rnn 做encode 的模型效果明显好于使用cnn 做 encode 的模型。 文本匹配模型一般分为表示型和交互型模型,为了下文方便描述,我将文本匹配模型的框架分为三个层,分别是 Embedding 层,Encoding 层(在交互型模型里,该层还包含匹配层), Prediction 层如下所示: Encoding 层参数共享与不共享 由于模型需要对输入的左右两个句子进行建模,因此需要编码器分别对两个句子进行编码,我们可以选择是否共享左右编码器的参数,下面两段代码分别表示不共享与共享的写法。 不共享参数的情况其实就是分别初始化两个双向LSTM网络,然后分别对左右两个句子进行编码;而共享参数是只初始化一个双向LSTM网络,然后左右句子都使用它来编码。在计算文本相似度这个任务时,从实验中发现共享参数的编码对模型更有帮助,比如 mvlstm和 bimpm 两个模型共享Encoding 层参数比不共享参数准确率要高 7-8个百分点,这两个模型都是使用 rnn 网络做编码器的;而使用cnn 网络做编码器的 arcii 模型共享参数后比不共享参数准确率高2个百分点左右。 深度神经网络模型并不是网络层数越多效果越好 在深度学习领域其实有个经验,就是只要把网络做深效果就会更好,这也许有一定道理,但是面对不同数据,我们应该多尝试。在 arcii 模型中 3 个 cnn block(如下图的 more 2D convolution & pooling 结构)比 2 个 cnn block的模型效果要差一些(0.7734 -> 0.7684)。 产生这个结果的原因可能是所用数据集的句子基本是短句子,语句结构也不复杂的缘故。其实可以看到准确率差的也不多,但是使用 rnn 做 encode的模型在增加深度后效果将会差的更多。 如下图所示的 drcn 模型,原文中使用 4 个 Nx 模块,每个Nx 包含 5 层 LSTM,总共20 层 LSTM的网络,但是在我的实验中我发现在每个 Nx 里面只能用两层LSTM,且只能用 1个 Nx,如果再多效果反而会不好。 另外该模型虽然花里花俏的,但是效果并没有更朴素 bimpm 和 mvlstm 模型要好。也许是我用了 BatchNormalization 做层归一化的缘故(MatchZoo 中使用的 Dropout),但是不用 BN 的话训练时将会造成梯度爆炸。 match_pyramid 和 arcii 模型 这两个模型都是使用2D convolution 做编码器提取特征的,但是为什么match_pyramid 效果这么差呢?将match_pyramid模型的结构和arcii对比一下: 可以看到,match_pyramid直接用左右两个句子的embedding进行匹配交互,然后用 2D convolution 提取特征,这显然匹配层的好坏直接取决于 embedding的好坏;而arcii 首先使用了一层 1D convolution 对embedding进行编码,再进行匹配计算的。所以其实 match_pyramid 模型等于就是 arcii 模型的阉割版(少一层关键的 1D convolution)。 来源https://github.com/wangle1218/deep_text_matching

  • 1
  • 17
  • 18
  • 19
  • 27
前往