开发需求分析
经过初步讨论,我们决定了需要增加的功能以及开发策略。
功能
◇提供作文范本给需要参考的中小学生,可以发现自己感兴趣领域的好论文,也可以发现别人论文中的好句子和好词汇,运用到自己的文章中。
◇自动对爬取的每一篇作文进行处理,分类,抽取关键字和优美句子,省去了人工。
◇实现作文分类,给定一篇作文,能够自动返回作文的类别。
◇作文搜索,根据关键词,搜索作文、优美句子等。
◇文章评论、点赞、like or hate 功能。
开发策略
首先实现后台算法,将数据处理好,搭建数据库,与此同时,完成前端demo,先实现基础功能,将前端与后端衔接,再逐步完善各部分内容。
框架
前端框架:html5+CSS+JS+PHP
后台框架:php + mysql
后端算法:爬虫 + SVM+NLP算法
基本架构
◇前端界面直接与用户进行交互。
◇后端系统负责处理用户的请求,并且衔接搜索系统,为用户提供想要的数据。
前端架构设计
功能:
登录与注册
关键词搜索
类别选择
文章预览和全文显示
文章收藏,顶,踩
前端新增功能原型设计图
(仅为了展示功能效果,最终效果可能与原型图不同)
后端架构设计
后端基本模块
数据爬取:利用爬虫算法从全网爬取作文,并对数据进行清洗
数据处理:
作文分类:
先利用jieba分词工具,对文章进行分词,再利用gensim工具得到128维的词向量,最后以得到的词向量为输入,搭建神经网络模型进行分类。模型框架如下:
关键字提取:
title_words生成算法
统计所有在标题分词中出现过的词的次数 word frequency
用词性过滤标题分词,过滤结果按 word frequency排序,取>= 11 (now 11)
compute_* 代表算法
以下算法均在最后一步将结果限定在 title_words内*
1. tf
标题词和正文词一起算 tf
权重 4 : 1
根据tf值排序
2. w2v
使用word2vec的词向量
标题正文 4 : 1 ,生成查询词语列表
根据标题和正文中词出现的总次数 >= word frequency (now 0) 过滤查询词语列表
将结果列表按word2vec的相似度排序
3. w2v_limit
查询词语列表跟 2算法相同
将结果过滤在仅限标题/正文出现过
4. w2v_tf
标题正文 4 : 1 ,生成查询词语列表
查询词语列表中词的tf >= min tf (now 0.015) 过滤查询词语列表
将结果列表按 word2vec 的相似度排序
5. w2v_tf_limit
查询词语列表跟 4算法相同
将结果过滤在仅限标题/正文出现过
由于过滤太多,会出现标签数目不足
7. tf_w2v
查询词语列表跟 2算法相同
doc 为标题正文 4 : 1 生成的列表
times为在doc中出现次数
value = similarity * sqrt( tf(w) / max( tf(w) of doc ) )
= similarity * sqrt( times(w) / times( max_tf_word ) )
按value排序
由于过滤太多,会出现标签数目不足
通过以上七种算法对关键字进行抽取,比较优劣,选取最终结果。
优美句子提取:
根据一般修辞手法的通用格式,提取出相应的句子,现已实现比喻句和排比句的提取。
比喻
明喻 本体喻体都出现,中间有比喻词(像、似、仿佛、犹如)
暗喻 本体喻体都出现,中间无比喻词(是、成了、变成)
借喻 本体不出现,直接叙述喻体
博喻 连用几个比喻从不同角度,运用不同的相似点对同一本体进行比喻
排比
成分排比
例如:好像失了东三省,党国倒愈像一个国,失了东三省谁也不响,党国倒愈像 一个国,失了东三省只有几个学生上几篇“呈文”,党国倒愈像一个国,可以博得“友邦 人士”的夸奖,永远“国”下去一样。
句子排比
例如:他们的品质是那样的纯洁和高尚,他们的意志是那样的坚韧和刚强,他们 的气质是那样的淳朴和谦逊,他们的胸怀是那样的美丽和宽广。
通过分析所得对文章中的句子进行处理,给每个句子进行打分,分数超过一定范围的被认为是优美句子。
数据库:利用mysql,将数据处理的结果存入数据库之中,方便之后的查询。
(整理人:程昊、欧阳思琪)