/** * 填写fragment表 和 fragment_term表 * * @author zhengyuanhao */ public static void analysis(String course) throws Exception { InformationExtraction2Mysql m = new InformationExtraction2Mysql(); File file0 = new File("file/datacollection/" + course); // File file0 = new File("F:/术语/课程术语1/" + course); File[] files = file0.listFiles(); for (int i = 0; i < files.length; i++) { String keyword = files[i].getName(); if (!keyword.contains(".html")) { int pagelength = InformationExtraction2Excel.questionPageNumber(keyword); // m.fragment(keyword, pagelength); // 填写fragment表 // m.fragment_filtering(keyword, pagelength); // 填写fragment表(过滤处理后的) m.fragmentTerm(keyword, pagelength); // 填写fragment_term表 System.out.println(keyword + "的信息已经保存到数据库..."); } } }
/** * 填写assemble装配表,将知识碎片与分面之间的关系写入表格 * * @author zhengyuanhao */ public static void facetAnalysis(String course) throws Exception { InformationExtraction2Mysql m = new InformationExtraction2Mysql(); // 填写Binary+tree的装配表 m.assemble("Binary+tree"); // 填写所有主题的装配表 // File file0 = new File("file/datacollection/" + course); // File[] files = file0.listFiles(); // for (int i = 0; i < files.length; i++) { // String keyword = files[i].getName(); // if(!keyword.contains(".html")){ // m.assemble(keyword); // System.out.println(keyword + "知识碎片分面对应关系填写完毕..."); // } // } }
/** 填写fragment表(过滤后的) */ public void fragmentFiltering(String keyword, int pagelength) throws Exception { try { // 解析数据,数据加到数据库里面 String catalog = KeywordCatalogDesign.GetKeywordCatalog(keyword); // 得到问题网页的链接 String[] QuestionUrls = DataCollection.getQuestionURLs(keyword); // System.out.println("链接数目为:" + pagelength); // 将关键词以+分开存到数组里面,用于匹配文本 String[] keywordarray = keyword.split("\\+"); // 解析每个问题网页的问题和回答 for (int j = 0; j < pagelength; j++) { String path = catalog + keyword + j + ".html"; File file = new File(path); if (!file.exists()) { System.out.println(path + " 不存在,请重新爬取数据..."); } else { System.out.println("\n开始解析: " + path); Document doc = JsoupParse.parsePathText(path); // 得到问题的各字段信息,没有作者ID,爬取时间为当前解析数据的时间 String keywordstore = keyword.replaceAll("\\+", "\\_"); // System.out.println("转义以后:" + keywordstore); String QuestionId = keywordstore + j + ""; // 得到问题ID String SourceType = "Quora"; // 得到问题来源 String URL = QuestionUrls[j]; // 得到碎片链接URL // System.out.println("url为:" + URL); String QuestionContent = FeatureExtraction.questionContent(doc) + "\n" + "Expanded information:" + FeatureExtraction.questionExpandInfo(doc); // 得到碎片内容 SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // 设置日期格式 String CrawlerTime = df.format(new Date()); // new // Date()为获取当前系统时间 System.out.println("CrawlerTime1 is :" + CrawlerTime); String AuthorID = "0"; String media_type = "text"; // 数据是文本类型的text // 判断数据过滤,关键词匹配和长度判断 InformationExtraction2Mysql ms = new InformationExtraction2Mysql(); String questionevaluation = ms.keywordAndLength(QuestionContent, keywordarray); // 创建sql语句 sql = "replace into fragment values (?, ?, ?, ?, ?, ?, ?, ?)"; Object[] questionobject = new Object[] { QuestionId, SourceType, URL, QuestionContent, CrawlerTime, AuthorID, media_type, questionevaluation }; mysqlCon.doSql(sql, questionobject); // i = mysqlCon.getUpdateCount(); // if (i != -1) { // System.out.println("数据插入成功!"); // } else { // System.out.println("数据插入失败!"); // } // 关闭链接 mysqlCon.getClose(); // 得到答案数据 int realanswernumber = FeatureExtraction.countRealAnswerNumber(doc); for (int m = 0; m < realanswernumber; m++) { // 得到答案的各字段信息,没有作者ID,爬取时间为当前解析数据的时间 String AnswerId = QuestionId + "_" + m; // 得到答案ID String AnswerContent = FeatureExtraction.answerContent(doc, m); // 得到碎片内容 // 判断数据过滤,关键词匹配和长度判断 String answerevaluation = ms.keywordAndLength(AnswerContent, keywordarray); // 创建object数组 Object[] answerobject = new Object[] { AnswerId, SourceType, URL, AnswerContent, CrawlerTime, AuthorID, media_type, answerevaluation }; mysqlCon.doSql(sql, answerobject); // i = mysqlCon.getUpdateCount(); // if (i != -1) { // System.out.println("数据插入成功!"); // } else { // System.out.println("数据插入失败!"); // } // 关闭链接 mysqlCon.getClose(); } } } } catch (Exception ex) { System.out.println("Error : " + ex.toString()); } }