文本分析概述
文本分析常应用于:翻译,搜索引擎,文章推荐,人物-事物-事件关系图,智能输入法等领域
因此文本分析通常是作为一些项目的子项目来进行的
文本分析包含很多内容如:分词,分类,错别字纠正,输入预测等
需求分析
【功能需求】
对于分词:算法以一段文本作为输入,算法输出分词后的文本,如:输入"基础文本分析项目" 算法会输出"基础/文本/分析/项目"
对于分类:算法以一段文本作为输入,算法输出文本的主题分布
通过是否含有标记,在分类时选择不同的算法,含有标记则选择NBC(朴素贝叶斯),否则使用LDA(隐含狄利克雷分布)
(暂时只有这两种功能。。。后续会添加功能)
【性能需求】
响应时间:和搜索引擎类似
信息量速率:未知
主存容量:未知
。。。
【可靠性和可用性需求】
ps:系统在一个时间段出错的次数不大于多少
未知
【出错处理需求】
ps:这类需求说明系统对于环境错误应该怎样响应
未知
【接口需求】
ps:数据的格式
用户接口需求:用户输入UTF-8形式的文本文件,每一篇文章前有序号,序号后面有一个#号,结果将会以.txt文本的形式输出给用户
【约束】
ps:在设计或实现应用系统时应遵守的限制条件,如:精度,工具和语言约束,设计约束,应该使用的标准,应该使用的硬件平台
精度: 分词和文本分类的正确率在85%以上
分词正确率 = (分词正确数)/(真实分词数),因为文本是没有提前分词的,因此采用抽样法进行人工检查
使用python语言,需要的库有:
【逆向需求】
ps:软件系统不应该做什么
【将来可能提出的需求】
翻译,搜索引擎,文章推荐,人物-事物-事件关系图
语言及数据结构选择
语言:Python , 因为包含了大量的机器学习的第三方开源库
数据结构:以UTF-8文本保存在数据库中
详细过程
1.通过python的jieba分词对文本进行精确分词
原理 (jiebao):
- 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
- 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
- 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
2.自定义停用词文本(也可网上下载),然后编写代码对分词后的文本进行停用词清理
原理:
- 遍历分词后的词袋(未向量化),对于出现在停用词文本中的词进行删除,然后得到新的词袋(未向量化)
3.词频统计
原理:
- 遍历文本得到,词-词频的键值对(key:词, value:词在某一文本出现的次数)
4.向量化
原理:
- 将词频统计得到的词袋(未向量化)中的中文转换为数值,需要注意的是,不同文本的相同的词转换得到的数值是相同的,既相同的词会映射到相同的数值
5.NBC(Naive Bayes Classifier)
对于NBC分类,需要先对模型进行训练,然后生成主题-词条的概率向量,然后再通过python中的朴素贝叶斯分类器对文本进行分类
原理:
5.LDA(Latent Dirichlet Allocation)
对于LDA分类,
编码
测试与修改
通过对测试集进行测试,得到模型的准确度,然后判断是否需要对算法进行优化处理
还在更新中。。。