新浪微博热门评论抽取规则

package weiboextractor;

import java.util.HashSet;
import java.util.Set;

import org.apache.log4j.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
 * 
* @ClassName: WeiboExtrator 
* @Description: 微博抽取
* @author zeze
* @date 2016年11月27日 上午12:09:49 
*
 */

public class WeiboExtrator {

    private static Logger logger = Logger.getLogger(WeiboExtrator.class);

    // 热评翻页抽取
    public int weiboExtratorPageNum(StringBuilder html) {
        int num = 1;
        Document doc = Jsoup.parse(html.toString());

        // 没有热门评论,直接返回
        Elements rt = doc.select("div[class=c]");
        if (!rt.text().contains("返回评论列表")) {
            logger.info("没有转发");
            return 0;
        }

        if (doc.select("[id=pagelist]").text().contains("页")) {// 存在翻页
            String pnum = doc.select("[id=pagelist]").get(0).text();
            pnum = pnum.substring(pnum.indexOf("/") + 1).replace("页", "");
            num = Integer.parseInt(pnum);

        } else {
            logger.info("热门评论小于10");
        }
        logger.info("热门评论页数:" + num);
        return num;
    }

    public Set<String> weiboExtratorCommentList(StringBuilder html) {
        Set<String> commentList=new HashSet<String>();
        String zname = null;// 评论的用户名
        String zid = null;// 评论的用户ID
        String zzan = null;// 点赞数
        String zmid = null;// 评论的消息id
        String ztime = null;// 评论时间
        String zsource = null;// 来源
        String ztext = null;// 转发的内容
        int cnt = 0;
        Document doc = Jsoup.parse(html.toString());
        Elements RTList = doc.select("div[class =c]");
        for (Element result : RTList) {// 解析列表
            // 点赞数
            zzan = result.select("span[class=cc]").text();
            if (zzan.equals("")) {// 过滤没有点赞标签
                continue;
            }
            zzan = zzan.trim().substring(1).replace("[", "").replace("]", "").replace(" 回复", "");
            if (result.select("a").size() > 0) {
                zname = result.select("a").get(0).text();// 转发的用户名
                zid = result.select("a").get(0).toString();// 转发的用户id
                if (zid.indexOf("u/") == 10) {// 正常的用户id
                    zid = zid.substring(zid.indexOf("\">") - 10, zid.indexOf("\">"));
                } else {
                    zid = zid.substring(zid.indexOf("/") + 1, zid.indexOf("\">"));
                }
            }
            if (result.text().contains("查看更多热门"))
                continue;
            // 转发时间和来源
            String tmp = result.select("span[class=ct]").text();
            ztime = tmp.substring(0, tmp.indexOf("来自")).replace(" ", "");
            zsource = tmp.substring(tmp.indexOf("来自") + 2);
            // 转发的消息id
            zmid = result.select("span[class=cc]").toString();
            zmid = zmid.substring(zmid.indexOf("attitude") + 9, zmid.indexOf("attitude") + 18);
            // 转发的内容
            ztext = result.text();
            if (ztext.contains("//@")) {
                ztext = ztext.substring(ztext.indexOf(":") + 1, ztext.indexOf("//@")).replace(" ", "");
            } else {
                ztext = ztext.substring(ztext.indexOf(":") + 1, ztext.indexOf("   举报   ")).replace(" ", "");
            }
            // 用户ID,用户名,消息ID,消息内容,来源,赞数,发布时间
            // zid,zname,zmid,ztext,zsource,zzan,ztime
            cnt++;
            String wString = zid + "|" + zname + "|" + zmid + "|" + ztext + "|" + zsource + "|" + zzan + "|" + ztime;
            commentList.add(wString);
            //logger.info(cnt + ":" + wString);
        }
        return commentList;
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文微博观点要素抽取是NLPCC2013评估任务之一,旨在从中文微博文本中提取出观点要素。观点要素是表达观点的关键词或短语,能够直接反映出微博作者的态度或观点。 该任务的关键挑战在于微博文本的特点,包括文本长度短、语言表达不规范以及存在大量的网络用语和俚语等。因此,任务的难点在于如何准确地从这些文本中抽取出观点要素,并正确地识别和分类不同类型的观点要素。 解决这一问题的方法主要分为两个步骤。第一步是观点要素的抽取,可以采用基于规则的方法或机器学习的方法。基于规则的方法通过人工编写规则来识别和提取观点要素,但是这种方法需要大量的人工工作,并且不适用于具有复杂结构的观点要素。机器学习的方法则通过训练一个分类器来自动进行观点要素的抽取,可以利用大量的标注数据进行模型的训练,但对于标注数据的获取和特征的选择也提出了一定的挑战。 第二步是观点要素的分类。观点要素可以分为不同的类别,如情感词、评价对象和评价词等。根据不同的应用场景和需求,可以采用不同的分类方法,如基于规则的方法、基于规则和统计的方法以及基于深度学习的方法等。 总体而言,中文微博观点要素抽取是一个具有挑战性的任务,需要综合运用自然语言处理、机器学习和分类方法等技术来解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值