小甲醛第 1 次说明

项目目标

我们先定一个小目标,以下是我想要的第一批基础需求,大家仔细阅读一下功能,然后第一轮我们尽量满足这些需求,大家也尽力想一下还有什么可以加上的有趣的功能

  • 小甲醛可以识别人的语音,不需要要求很高,只需要识别少量已知关键词,比如识别 “小甲醛”、“知乎”、数字等有限的关键词语,不需要准确识别一句话。

  • 小甲醛可以代替人爬取常用网站(大家可以想一下有什么网站),以知乎为例,可以爬取热搜、问题、回答,然后读出这些内容。并且我们需要建立自己的数学模型,对爬取的数据进行评价处理,比如对知乎的回答进行打分,最简单来说就是字数少、点赞多的神评论分数高。

  • 小甲醛可以将文字变成语音读出,这个要求比较高,个人感觉也最好玩。我希望可以diy一个人的声音,读句子至少要做到停顿准确,至于语气感觉比较难,先不做。

  • 希望可以根据歌名自动搜索并播放歌曲,根据需求下载。(这里似乎就需要识别未知短语了)

  • 最基础的天气预报功能,不过最好可以搞点花样,比如最近天气预报的准确率。

  • 最好可以切换声音,有一些最简单的互动。

项目分工

本项目内容相对比较综合,所以各个模块区别分明,我分了一下,就以下的方向:

通用知识

基本的通用知识包括:Python 链接 mongoDB 数据库、Python 异常处理、Python 包和模块的设计、git 团队合作

网络爬虫(1人)

满足需求:上网爬取相应的网页,抓取有用的信息,通过数据库操作保存到数据库中。基本就是涉及到模拟人上网的部分就需要。这个需求是最基础的,没有爬取功能,小甲醛完全不能工作。

学习的知识:HTML 能看懂(这个非常简单,不需要写,只需要了解结构)、对用的爬虫模块,包含 urllib、request 两个直接获取数据的库,如果涉及含有 js 或者难以直接获取的页面,可以用 Selenium 模拟浏览器爬取。

数据建模(1人)

满足需求:数据建模主要就是根据数据库中已经有的数据,建立数学模型。比如根据爬取的知乎回答数据,对回答进行评分,好让程序可以根据建立的模型筛选答案运作。再比如我们可以嵌入对用户的学习机制,比如对每次用户感兴趣的知乎问题进行分析,学习用户喜欢哪一类问题。这些问题都比较简单,属于传统的简单的数学模型。但是小甲醛的智障程度与之关系巨大,很多地方都需要用到优秀的数学模型。

学习的知识:最好是18级同学,接触过数学建模,对算法要求应该比较低,主要就是设计相关机制。需要用到的知识除了数学建模外,就是 Python 简单的数据科学。比如回归、分类之类的传统数据科学。需要学习 numpy、matplotlib、sklearn 等库。

文字语音识别与转换(2人)

满足需求:能识别简单的语音,能读出文字。现在又成熟的 API 接口,比如百度等都有,但是有免费次数限制。我们尽量能训练自己的模型。当务之急是能够识别已知的短语、能将文字优美地读出来。接下来可以尝试完整的语音识别、切换声音等操作。

学习知识:这个就很难了,应该是需要神经网络的人工智能学习(当然调用API就不需要了)。需要上网学习相关的内容,了解相关机制,我也基本不怎么了解,所以这里我们不能确定能做到什么程度的模块。

开工说明

  • 马上我会把现在写好的模块设计思路放上来,然后大家参考那个文档进行,不要把代码弄乱了。
  • 我们使用 Pycharm,并且要遵循 Pycharm 最严格的标准,就是有格式问题会有下划线提示,比如类之间空两行,类方法之间空一行,等号两边有空格,变量命名的山峰格式等都要规范,尽量不要出现下划线。就现在来看,有些名称由于无法识别会出现下划线,比如爬虫 BeautifulSoup 的 lxml 解析,字符串 lxml 会有下划线,这个没办法,还有就是异常处理,单独的 except 会有下划线,这个我感觉目前异常处理不用那么完善。
  • 大家在 limfx 上注册一个账号,以后的学习笔记资料、完成的说明文档、报告啥的上传到网站上,有交叉的部分也方便学习。
  • 开工之前我们会写出对详细目标的需求文档,上面的需求只是大致的方向。需求文档就会很详细,没有用的需求就不要做。
  • 大家这段时间可以先沉淀一下自己的方向,看一下已经有的代码,然后做语音转换的可以慢慢了解,做数据建模的可以开始分析尝试分析数据了,做网络爬虫的要学的可以尝试爬取天气作为一个简单任务。

本文章使用limfx的vsocde插件快速发布