3需求分析与总体设计
3。1界面分析
21世纪计算机已经达到飞速发展的时代,古老的dos系统已经不能满足用户对软件操作的简单、便利的要求,因此界面采用可以鼠标操作的GUI图形界面,主要采用Qt的GUI框架,整体界面设计采用Qt design为设计实施方案,简单易用,同时将开源库QCustomplot作为绘制二维图的方法,写入到Qt design中,作为我们使用的控件类,设计界面的可以像其他控件一样使用,直接拖拉到页面中,界面主要实现打开文件按钮、打开待分词新闻文本并分词按钮、分析文件按钮、绘制二维图形控件、保存并退出界面按钮以及路径和标签显示等。
3。2功能分析
(1) 分词:本文采用以Trie中的前缀树作为我分词系统的主要数据结构,利用最大向前匹配的方法,达到分词的目的,提高情感分析的效率和准确性。
(2) 数据存储:我们的分词结果必须进行存储,因为是采用一维数组的方法,开辟内存空间,存储我们的分词结果,同时开辟二维数组,存储情感词典的积极和消极词典数据。
(3) 情感判读:利用朴素贝叶斯算法,判读新闻情感词的比例,到达情感判断的目的。
(4) 结果呈现:利用Qcustomplot,将分词的结果利用二维图表示,积极的情感词和消极的情感词分别占有的比例,达到绘制一篇文章的情感倾向目的。
(5) 窗口的关闭、保存成果图、以及删除分词结果:整体窗口我们将GUI框架下的窗口关闭功能给禁用,同时我采用Qt中携带的截图类,对分析的结果进行保存,保存完后,为了防止不断的分词产生的分词结果比较多,占用大量的空间,我们当保存完毕后,删除分词结果并退出窗口。
3。3 Sentiment analysis程序逻辑层设计
3。3。1分词逻辑层设计
图3-1 分词AC自动机
3。3。2分词逻辑说明
目前计算机中采用的数据结构主要有:二叉树、B树、自平衡二叉查找树、空间划分树、Trie树、非二查树等,我们分词技术采用的是Trie树,又称单词查找树或者字典树,是实现字典树的关键性数据结构首先我需要构建Trie树。
1。构建Trie树:
首先我们的构建字符串的结构体头H,我们将分词词典的首字符串赋值给H,并以H为作为头指针,指向当前的分词词典的首字符串,一旦这个指针是空指针,则表明此指针指向root,即根节点,说明词典为空。支持H!=NULL,通过for循环指向读取词典中的单词,并改变H指针,指向下一级指针,以达到存储同节点单词不一样的指针。当我们的得首指针的字符串的值发生改变时,则跳转到下一级指针,同理进行存储。
2。最大向前匹配算法:
我们的分词词典存储完毕,则当我们加载新闻文本的时候,则会进行字符串匹配,如说我们的新闻文本有“哀兵”,则以哀节点,一直向前匹配,直到找到单词“哀兵”,则字符串匹配成功,并进行分词分行。
3。3。3新闻分词
A:分词词典的构建:我们从相关网站获取中文相关词典,此词典是采用人工写入的中文汉字词典,词典构建以拼音的形式构建:a,b……。并做了词数的统计。
分词词典部分展示如下:分词词典文献综述
3。3。4加载数据
数据加载分为:自定义情感词典的加载和新闻文本的加载
不管是情感词典还是新闻文本我们都采用数组的形式加载,首先我们将分词结果加载到数组,New_sentimen、Post_list,其中情感词典采用的二维数组,即将我们的积极的词放在第一列,我们的消极词放在第二列。