学习笔记 10-07 记录人:緑憂齊
本文在这篇文章的基础上完成:MySQL与eclipse如何建立连接,并测试连接是否成功
成功连上数据库后,该如何使用数据。
1.开发工具简介
语言:Java
软件:eclipse,MySQL
2.数据库设计
做练习,数据库设计的非常简单,就一张表,两个字段。
图 1:
图 2:
图 3:
图 4:
3.改进 读取评论 并分析(正,负)
之前的代码:
没有使用到MySQL数据库的
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.vista.ChineseSpliter;
import com.vista.ClassConditionalProbability;
import com.vista.PriorProbability;
import com.vista.TrainingDataManager;
import com.vista.StopWordsHandler;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Vector;
/**
* 朴素贝叶斯分类器
*/
public class BayesClassifier1
{
private TrainingDataManager tdm;//训练集管理器
private String trainnigDataPath;//训练集路径
private static double zoomFactor = 10.0f;
/**
*1. 默认的构造器,初始化训练集
*/
public BayesClassifier()
{
tdm =new TrainingDataManager();
}
/**
* 2.计算给定的文本属性向量X在给定的分类Cj中的类条件概率
* ClassConditionalProbability
连乘值
* @param X 给定的文本属性向量
* @param Cj 给定的类别
* @return 分类条件概率连乘值,即
*/
float calcProd(String[] X, String Cj)
{
float ret = 1.0F;
// 类条件概率连乘
for (int i = 0; i
v1 = new Vector
();//Vector类可以实现可增长的对象数组
//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
for(int i=0;i
T[]
//toArray(T[] a)
//返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。
return newWords;
}
/**
* 4.对给定的文本进行分类
* @param text 给定的文本
* @return 分类结果
*/
@SuppressWarnings("unchecked")
public String classify(String text)
{
String[] terms = null;
terms= ChineseSpliter.split(text, " ").split(" ");//中文分词处理(分词后结果可能还包含有停用词)
//--去除给定文本中的空格,这只是去除空格,可能还包括一些停用词
terms = DropStopWords(terms);//去掉停用词,以免影响分类
//--去掉空格和停用词之后的给定文本
String[] Classes = tdm.getTraningClassifications();//分类
//--这是一个集合,就是【正面,反面】
float probility = 0.0F;
List
crs = new ArrayList
(); // 分类结果 for (int i = 0; i
0返回1呢?【疑问脸】----已经解决 } } }); //5.返回概率最大的分类 return crs.get(0).classification; } public static void main(String[] args) { String text = "微软公司提出以446亿美元的价格收购雅虎中国网2月1日报道 美联社消息,微软公司提出以446亿美元现金加股票的价格收购搜索网站雅虎公司。微软提出以每股31美元的价格收购雅虎。微软的收购报价较雅虎1月31日的收盘价19.18美元溢价62%。微软公司称雅虎公司的股东可以选择以现金或股票进行交易。微软和雅虎公司在2006年底和2007年初已在寻求双方合作。而近两年,雅虎一直处于困境:市场份额下滑、运营业绩不佳、股价大幅下跌。对于力图在互联网市场有所作为的微软来说,收购雅虎无疑是一条捷径,因为双方具有非常强的互补性。(小桥)"; BayesClassifier classifier = new BayesClassifier();//构造Bayes分类器 String result = classifier.classify(text);//进行分类 System.out.println("此项属于["+result+"]"); System.out.println("--------------------------"); String text1 = "在大门口买票,100元,然后买电瓶车的票,10元,会直接拉到景区大门口,进入景区之后,在公立的讲解点100押金20元可以租用一个讲解器,每个景点到了自动讲,挺清楚的。整个景区分西岸和东岸,从西岸开始,在尽头从桥上转到对岸看东岸的景点,是联票,一共四个景点。用了大概3小时,很详细的看了一遍。如果粗略走,可能1小时就能走下来了。龙门石窟是洛阳必去的景点,必须看,很壮观,特别壮观,非常壮观,信仰的力量是巨大的,这么多雕像,这么精美,甚至超小的石象也有很精细的五官。"; BayesClassifier classifier1 = new BayesClassifier();//构造Bayes分类器 String result1 = classifier1.classify(text1);//进行分类 System.out.println("此项属于["+result1+"]"); System.out.println("--------------------------"); String text2 = "卫生不好,节假日太过拥挤,下次不会再来了。"; BayesClassifier classifier2 = new BayesClassifier();//构造Bayes分类器 String result2 = classifier2.classify(text2);//进行分类 System.out.println("此项属于["+result2+"]"); System.out.println("--------------------------"); String text3 = "我持有中立的态度。"; BayesClassifier classifier3 = new BayesClassifier();//构造Bayes分类器 String result3= classifier3.classify(text3);//进行分类 System.out.println("此项属于["+result3+"]"); } }
package com.vista;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.vista.ChineseSpliter;
import com.vista.ClassConditionalProbability;
import com.vista.PriorProbability;
import com.vista.TrainingDataManager;
import com.vista.StopWordsHandler;
import java.sql.DriverManager;
import java.sql.Statement;
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;
/**
*1. 默认的构造器,初始化训练集
*/
public BayesClassifier()
{
tdm =new TrainingDataManager();
}
/**
* 2.计算给定的文本属性向量X在给定的分类Cj中的类条件概率
* ClassConditionalProbability
连乘值
* @param X 给定的文本属性向量
* @param Cj 给定的类别
* @return 分类条件概率连乘值,即
*/
float calcProd(String[] X, String Cj)
{
float ret = 1.0F;
// 类条件概率连乘
for (int i = 0; i
v1 = new Vector
();//Vector类可以实现可增长的对象数组
//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
for(int i=0;i
T[]
//toArray(T[] a)
//返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。
return newWords;
}
/**
* 4.对给定的文本进行分类
* @param text 给定的文本
* @return 分类结果
*/
@SuppressWarnings("unchecked")
public String classify(String text)
{
String[] terms = null;
terms= ChineseSpliter.split(text, " ").split(" ");//中文分词处理(分词后结果可能还包含有停用词)
//--去除给定文本中的空格,这只是去除空格,可能还包括一些停用词
terms = DropStopWords(terms);//去掉停用词,以免影响分类
//--去掉空格和停用词之后的给定文本
String[] Classes = tdm.getTraningClassifications();//分类
//--这是一个集合,就是【正面,反面】
float probility = 0.0F;
List
crs = new ArrayList
(); // 分类结果 for (int i = 0; i
0返回1呢?【疑问脸】----已经解决 } } }); //5.返回概率最大的分类 return crs.get(0).classification; } public static void main(String[] args) { try{ Class.forName("com.mysql.jdbc.Driver");//加载MySQL JDBC驱动程序 //Class.forName("org.git.mm.mysql.Driver"); System.out.println("成功加载Mysql驱动程序!"); } catch(Exception e){ System.out.println("Mysql驱动加载错误!"); e.printStackTrace(); } try{ Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql1","root","123456"); //连接URL为: jdbc:mysql//服务器地址/数据库名 ,后面的2个参数分别是登陆用户名和密码 System.out.println("成功连接Mysql服务器!"); Statement stmt = connect.createStatement(); ResultSet rs = (ResultSet) stmt.executeQuery("select * from table_1"); //table_1 为你表的名称 while(rs.next()){ System.out.println(rs.getString("ID")); System.out.println(rs.getString("Summary")); String text = rs.getString("Summary"); BayesClassifier classifier = new BayesClassifier();//构造Bayes分类器 String result = classifier.classify(text);//进行分类 System.out.println("此项属于["+result+"]"); } } catch(Exception e){ System.out.println("获取数据错误!"); e.printStackTrace(); } } }