コード例 #1
0
 /**
  * 填写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 + "的信息已经保存到数据库...");
     }
   }
 }
コード例 #2
0
  /**
   * 填写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 + "知识碎片分面对应关系填写完毕...");
    // }
    // }
  }
コード例 #3
0
  /** 填写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());
    }
  }