package NaviveBayesClassify;
import NaviveBayesClassify.ChineseSpliter;
import NaviveBayesClassify.ClassConditionalProbability;
import NaviveBayesClassify.PriorProbability;
import NaviveBayesClassify.TrainingDataManager;
import NaviveBayesClassify.StopWordsHandler;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Vector;
/**
* 朴素贝叶斯分类器
*/
public class BayesClassifier {
private TrainingDataManager tdm;// 训练集管理器
private String trainnigDataPath;// 训练集路径
private static double zoomFactor = 10.0f;
/**
* 默认的构造器,初始化训练集
*/
public BayesClassifier() {
tdm = new TrainingDataManager();
}
/**
* 计算给定的文本属性向量X在给定的分类Cj中的类条件概率 <code>ClassConditionalProbability</code>连乘值
*
* @param X
* 给定的文本属性向量
* @param Cj
* 给定的类别
* @return 分类条件概率连乘值,即<br>
*/
float calcProd(String[] X, String Cj) {
float ret = 1.0F;
// 类条件概率连乘
for (int i = 0; i < X.length; i++) {
String Xi = X[i];
// 因为结果过小,因此在连乘之前放大10倍,这对最终结果并无影响,因为我们只是比较概率大小而已
ret *= ClassConditionalProbability.calculatePxc(Xi, Cj) * zoomFactor;
}
// 再乘以先验概率
ret *= PriorProbability.calculatePc(Cj);
return ret;
}
/**
* 去掉停用词
*
* @param text
* 给定的文本
* @return 去停用词后结果
*/
public String[] DropStopWords(String[] oldWords) {
Vector<String> v1 = new Vector<String>();
for (int i = 0; i < oldWords.length; ++i) {
if (StopWordsHandler.IsStopWord(oldWords[i]) == false) {// 不是停用词
v1.add(oldWords[i]);
}
}
String[] newWords = new String[v1.size()];
v1.toArray(newWords);
return newWords;
}
/**
* 对给定的文本进行分类
*
* @param text
* 给定的文本
* @return 分类结果
*/
@SuppressWarnings("unchecked")
public String classify(String text) {
String[] terms = null;
try {
terms = ChineseSpliter.split(text, " ").split(" ");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 中文分词处理(分词后结果可能还包含有停用词)
terms = DropStopWords(terms);// 去掉停用词,以免影响分类
String[] Classes = tdm.getTraningClassifications();// 分类
float probility = 0.0F;
List<ClassifyResult> crs = new ArrayList<ClassifyResult>();// 分类结果
for (int i = 0; i < Classes.length; i++) {
String Ci = Classes[i];// 第i个分类
probility = calcProd(terms, Ci);// 计算给定的文本属性向量terms在给定的分类Ci中的分类条件概率
// 保存分类结果
ClassifyResult cr = new ClassifyResult();
cr.classification = Ci;// 分类
cr.probility = probility;// 关键字在分类的条件概率
System.out.println("In process.");
System.out.println(Ci + ":" + probility);
crs.add(cr);
}
// 对最后概率结果进行排序
java.util.Collections.sort(crs, new Comparator() {
public int compare(final Object o1, final Object o2) {
final ClassifyResult m1 = (ClassifyResult) o1;
final ClassifyResult m2 = (ClassifyResult) o2;
final double ret = m1.probility - m2.probility;
if (ret < 0) {
return 1;
} else {
return -1;
}
}
});
// 返回概率最大的分类
return crs.get(0).classification;
}
public static void main(String[] args) {
String text = "在新旧动能接续转换的关键时期,传统动能由强变弱,需要新动能异军突起和传统动能转型,形成新的“双引擎”,推动经济持续增长、跃上新台阶。 “十三五”规划建议提出,要加快突破新一代信息通信、新能源、新材料、航空航天等领域核心技术,支持节能环保、生物技术、信息技术等新兴产业发展。 当前我国发展正处于这样一个关键时期,必须培育壮大新兴产业,实现新旧动能平稳迭代更替。 智能制造、大数据、云计算、物联网……这些出现在“十三五”规划纲要草案中的新经济名词,昭示着以新兴产业为代表的“新兴中国”将取代以传统产业为代表的“传统中国”,成为“十三五”的投资新热点。 研究发现:广东拥有新经济行业最多上市公司,其中11个概念行业上市公司数量最多的省份均为广东省。一方面广东是全国上市公司数量第一省份,另一方面也说明广东在创新驱动、培育新经济方面起步更早、成效显著,广东的上市公司布局这些领域也是快人一步,处于引领地位。 被高层多次提及的“新经济”一词写入政府工作报告,在这背后,新经济承担着中国发展新引擎的战略考量。 在经济全球化背景下,由信息技术革命带动的、以高新技术产业为龙头的经济,包括移动互联网、先进制造业、新能源、生物医药等,构成了新经济的重要内容。 21世纪宏观研究院选取A股上市公司14个最热新经济概念行业(3D打印、机器人、物联网、新材料、新能源汽车、智能汽车、移动支付、云计算、智能穿戴、基因检测、健康中国、移动互联网、虚拟现实、量子通信)样本,通过对这些行业公司地域、净利润及增长率数据,和相关布局等进行比较分析。 研究发现:广东拥有新经济行业最多上市公司,其中11个概念行业上市公司数量最多的省份均为广东省。一方面广东是全国上市公司数量第一省份,另一方面也说明广东在创新驱动、培育新经济方面起步更早、成效显著,广东的上市公司布局这些领域也是快人一步,处于引领地位。 14个概念行业上市公司较集中于广东、北京、上海、浙江、江苏这5个地区,反映出新经济的区域集聚效应明显。概念行业龙头上市公司则多位于广东、北京、上海三地。 传统行业企业布局新经济领域动作频繁,有的行业跨度很大,如河北华夏幸福、四川蓝光发展等,主业为房地产,目前正大举布局量子通信、3D打印等,体现了传统产业资本对于新经济的热情高涨。 一些概念行业目前还未广泛应用,而一些已经市场化的行业呈现出超高增长率的特征。如新能源汽车和移动互联网,是14个概念行业中平均增长率最高的行业,分别达1141%和1214%。其余如智能穿戴、虚拟现实、量子通信、移动支付等,也呈现出较高的增长率。不过,受资本市场波动及母公司主营业务影响,该项增长率并不能完全代表概念行业市场情况。 广东“新经济”企业上市最多 在14个概念行业上市公司省域分布中,一个直观结论是:广东、北京、上海、浙江、江苏5地集中了大多数新经济领域上市公司,这是省域经济活力的一大力证。 除云计算、新能源汽车、新材料外,其余11个概念行业上市公司最多省份均为广东,并且从2015年三季报显示的净利润排名来看,广东的上市公司利润也很可观。在3D打印(大族激光)、机器人、云计算(中兴通讯、TCL集团)、智能汽车(长园集团、欧菲光)、基因检测(汤臣倍健、达安基因)、健康中国(健康元)、移动互联网(中兴通讯)等领域均拥有龙头企业。 其中,大族激光2015年前三季净利润超6亿元,是3D打印概念中净利润最高公司;中兴通讯同期净利润近29亿,是移动互联网概念中的净利润冠军;健康元以超7亿的净利润成健康中国概念龙头公司。 增速上来看,物联网和移动支付概念的广东上市公司国民技术,创造了1140%的超高增长率,其余如智慧松德、深圳惠程、蓝盾股份等,也录得了各自代表的概念行业最高增长。 传统优势产业布局“新经济” 除了东部地区外,一些中西部省份上市公司也开始在概念行业崭露头角,如辽宁省的机器人、新能源汽车和智能汽车,安徽的量子通信,湖北的新材料、智能穿戴、移动互联网,贵州的物联网,重庆的基因检测、智能汽车等。这些地区的新经济呈现出一个显著的特点:多基于当地原有的优势产业基础而布局打造。这说明,各地可根据自身优势产业布局新经济,发挥传统企业创造力,而非做“无中生有”的文章。 21世纪宏观研究院认为,从世界经验来看,战略性新兴产业的培育和发展高度依赖于制造业的发展。加快培育和发展新经济,需要兼顾传统产业转型升级,实现二者耦合发展。 具体而言,东部地区可依托原有高技术产业和科研要素集聚发展新经济;中部地区可依托传统制造业基础发展新经济;西部地区可依托资源优势发展新经济;东北地区工业基础好,可依托国有制造企业发展新经济。 京沪粤三大创新中心鼎立 当前,我国经济正上演传统产业产能过剩和新兴产业爆发式增长的“冰与火之歌”。数据显示,2015年我国规模以上工业增加值增长6.1%,比上年回落了2.2个百分点,是1998年以来的新低。 然而,2013-2015年,高技术产业增加值年均增长11.4%,在创新驱动发展战略下,高技术产业带动作用明显增强。国内外研究机构普遍认为,未来几年,新经济将显著改变中国经济的总体增长构成。如果从更长的时间周期来看,这种发展趋势有望更为明显。 从世界范围来看,通过互联网、信息科技的发展为经济带来新的增长动力,也曾是美国走出上世纪70-80年代经济停滞局面的一个手段。当前,中国也处在类似发展阶段,并且具备发展新经济的更广阔市场基础和产业基础。 全国两会正在审议的“十三五”规划草案中,除提出支持北京、上海建设具有全球影响力的科技创新中心外,还专门提出,支持珠三角地区建设开放创新型升级新高地,加快深圳科技、产业创新中心建设,深化泛珠三角区域合作,促进珠江-西江经济带加快发展。 这表明,在未来五年,以创新驱动为核心战略的珠三角地区,将在原有基础上,实现更大的升级。 本文来源:21世纪经济报道 作者:何苗 裴蕾 责任编辑:钟齐鸣_NF5619";
BayesClassifier classifier = new BayesClassifier();// 构造Bayes分类器
String result = classifier.classify(text);// 进行分类
System.out.println("此项属于[" + result + "]");
}
}