详细的思路可以参照小论文树立0317

关键词分为以下几类:

t/****一些通用的过滤词,这些通用的过滤词可以使用和节目一起出现的词语,结合tf-idf看出来么?*****/
    public static String[] tvTerms={"观看","收看","节目","电视","表演","演出"};
    public static String[] channelTerms={"央视","中央电视台","春晚","春节联欢晚会"};
    public static String[] commentTerms={"赞","好看","精彩","失望","感动","吐槽","无聊"};
 对于每一个节目:

节目演员、节目类别

以及基于节目演员和节目类别的拓展,这个具有天然的权重

过滤策略:

  1. 如果同时包含title和节目涉及的演员,label True

  2. 如果同时包含title和节目类别,label True

  3. 如果节目名称被双引号包围,label True

  4. 对于其他keywords,计算权重之和,如果权重之和大于阈值,label True

  5. 阈值的确定:(先不管keywords)<不过后面权重的木有做下去>
  6. 关于权重确定的java工程
    package com.bobo.baseline;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList; import com.bobo.features.ActorsFeature;
    import com.bobo.features.CategoryFeature;
    import com.bobo.features.ExpandFeature;
    import com.bobo.features.GeneralRulesFeatures;
    import com.bobo.features.TitleFeature;
    import com.bobo.myinterface.MyFileFilter;
    import com.bobo.util.Constants;
    import com.bobo.util.FileUtil; public class KeywordAndRulesMatherBaseLine {
    private ArrayList<File> dealedList=new ArrayList<File>();
    private ArrayList<File> keywordsOutList=new ArrayList<File>();
    public static void main(String[] args) {
    KeywordAndRulesMatherBaseLine baseLine=new KeywordAndRulesMatherBaseLine();
    baseLine.init();
    baseLine.labelForAll();
    System.out.println("整體執行完畢");
    }
    private void init()
    {
    // 得到所有标注过的数据
    FileUtil.showAllFiles(new File(Constants.DataDir+"/"+"raw_data"), new MyFileFilter(".dealed"), dealedList);
    for(int i=;i<dealedList.size();i++){
    String dealedPath=dealedList.get(i).getAbsolutePath();
    String outPath=dealedPath.substring(,dealedPath.lastIndexOf("."))+".keywordsMatch";
    keywordsOutList.add(new File(outPath));
    } } public void labelForAll(){
    for(int i=;i<dealedList.size();i++){
    if(dealedList.get(i).getAbsolutePath().contains("时间都去哪儿")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorShijian,Constants.categoryGequ,"时间都去哪儿");
    }else if(dealedList.get(i).getAbsolutePath().contains("团圆饭")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorTuanyuan,Constants.categoryMoshu,"团圆饭");
    }else if(dealedList.get(i).getAbsolutePath().contains("说你什么好")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorShuoni,Constants.categoryXiangsheng,"说你什么好");
    }else if(dealedList.get(i).getAbsolutePath().contains("我就这么个人")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorWojiu,Constants.categoryXiaopin,"我就这么个人");
    }else if(dealedList.get(i).getAbsolutePath().contains("我的要求不算高")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorWode,Constants.categoryGequ,"我的要求不算高");
    }else if(dealedList.get(i).getAbsolutePath().contains("扶不扶")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorFubu,Constants.categoryXiaopin,"扶不扶");
    }else if(dealedList.get(i).getAbsolutePath().contains("人到礼到")){
    labelForFile(dealedList.get(i),keywordsOutList.get(i),
    Constants.ActorRendao,Constants.categoryXiaopin,"人到礼到");
    }
    System.out.println(keywordsOutList.get(i)+"处理完毕!");
    } } public void labelForFile(File dealedFile,File keywordsFile, String[] actors,
    String[] categorys, String title){
    FileReader fr=null;
    BufferedReader br=null;
    FileWriter fw=null;
    BufferedWriter bw=null;
    PrintWriter pw=null;
    String line=null;
    try{
    fr=new FileReader(dealedFile);
    br=new BufferedReader(fr);
    fw=new FileWriter(keywordsFile);
    bw=new BufferedWriter(fw);
    pw=new PrintWriter(bw); while((line=br.readLine())!=null){
    String[] lineArr=line.split("\t");
    String weiboText=lineArr[lineArr.length-];
    pw.println(lineArr[]+"\t"+labelForSingle(weiboText, actors,
    categorys, title)+"\t"+weiboText); }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    try {
    br.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    pw.flush();
    pw.close();
    }
    } public Integer labelForSingle(String weiboText, String[] actors,
    String[] categorys, String title) {
    for (String actor : actors) {
    if (weiboText.contains(actor)) {
    return ;
    }
    } for (String cate : categorys) {
    if (weiboText.contains(cate)) {
    return ;
    }
    } for (String word : Constants.tvTerms) {
    if (weiboText.contains(word)) {
    return ;
    }
    } for (String word : Constants.commentTerms) {
    if (weiboText.contains(word)) {
    return ;
    }
    }
    if(!weiboText.contains("《")||!weiboText.contains(title)){
    return ;
    }else{
    int symbolIndex=weiboText.indexOf("《");
    int titleIndex=weiboText.indexOf(title);
    if(titleIndex==symbolIndex+){
    return ;
    } }
    return ;
    }
    } package com.bobo.util; public class Constants {
    public final static String RootDir="H:/paper_related/socialTvProgram";
    public final static String DataDir="/media/新加卷/小论文实验/data/liweibo";
    //时间都去哪儿
    public final static String[] ActorShijian={"王铮亮"};
    //我的要求不算高
    public final static String[] ActorWode={"黄渤"};
    //团员饭
    public final static String[] ActorTuanyuan={"YIF","yif","Yif","王亦丰"};
    //说你什么好
    public final static String[] ActorShuoni={"曹云金","刘云天"};
    //我就这么个人
    public final static String[] ActorWojiu={"冯巩","曹随峰","蒋诗萌"};
    //扶不扶
    public final static String[] ActorFubu={"杜晓宇","马丽","沈腾"};
    //人到礼到
    public final static String[] ActorRendao={"郭子","郭冬临","邵峰","牛莉"}; /***节目类别*****/
    public final static String[] categoryGequ={"歌","唱"} ;
    public final static String[] categoryXiaopin={"小品"};
    public final static String[] categoryMoshu={"魔术"};
    public final static String[] categoryXiangsheng={"相声"}; /****一些通用的过滤词*****/
    public static String[] tvTerms={"观看","收看","节目","电视","表演","演出"};
    public static String[] channelTerms={"央视","中央电视台","春晚","春节联欢晚会"};
    public static String[] commentTerms={"赞","好看","精彩","吐槽","无聊","不错","给力","接地气"}; }

    关键词匹配作为baseLine进行特征提取的java工

  7. 衡量指标的python工程
  8. #!/usr/python
    #!-*-coding=utf8-*-
    import numpy as np import myUtil from sklearn import metrics root_dir="/media/新加卷/小论文实验/data/liweibo/raw_data" def loadAllFileWithSuffix(suffix):
    file_list=list()
    myUtil.traverseFile(root_dir,suffix,file_list)
    return file_list #inFilePath对应的是节目目录下的keywordsMatch文件,其格式是 真实分类“\t”预测分类“\t”微博文本内容
    def testForEachFile(inFilePath):
    y_true=list()
    y_pred=list()
    print(inFilePath)
    with open(inFilePath) as inFile:
    for line in inFile:
    y_true.append(int(line.split("\t")[]))
    y_pred.append(int(line.split("\t")[]))
    precision=metrics.accuracy_score(y_true,y_pred)
    recall=metrics.recall_score(y_true,y_pred)
    accuracy=metrics.accuracy_score(y_true,y_pred)
    f=metrics.fbeta_score(y_true,y_pred,beta=)
    print("precision:%0.2f,recall:%0.2f,f:%0.2f,accuracy:%0.2f"% (precision,recall,f,accuracy))
    return (precision,recall,accuracy,f) #依次对每个文件调用testForEachFile,计算precison,recall,accuracy,f
    def testForAll(inFileList):
    mean_precision=0.0
    mean_recall=0.0
    mean_accuracy=0.0
    mean_f=0.0
    for inFilePath in inFileList:
    (precison,recall,accuracy,f)=testForEachFile(inFilePath)
    mean_precision+=precison
    mean_recall+=recall
    mean_accuracy+=accuracy
    mean_f+=f
    listLen=len(inFileList)
    mean_precision/=listLen
    mean_recall/=listLen
    mean_accuracy/=listLen
    mean_f/=listLen
    print("所有节目各项目指标的平均值:")
    print("mean_precision:%0.2f,mean_recall:%0.2f,mean_f:%0.2f,mean_accuracy:%0.2f"% (mean_precision,mean_recall,mean_f,mean_accuracy))
    return(mean_precision,mean_recall,mean_accuracy,mean_f) def main():
    fileList=loadAllFileWithSuffix(['keywordsMatch'])
    testForAll(fileList) if __name__=='__main__':
    main()

    keywordsMatch作为baseLine的工程

    最终的结果为:

  9. /media/新加卷/小论文实验/data/liweibo/raw_data/人到礼到/人到礼到.title.sample.annotate.keywordsMatch
    precision:0.87,recall:0.84,f:0.89,accuracy:0.87
    /media/新加卷/小论文实验/data/liweibo/raw_data/团圆饭/团圆饭.title.sample.annotate.keywordsMatch
    precision:0.81,recall:0.98,f:0.79,accuracy:0.81
    /media/新加卷/小论文实验/data/liweibo/raw_data/我就这么个人/我就这么个人.title.sample.annotate.keywordsMatch
    precision:0.94,recall:0.97,f:0.96,accuracy:0.94
    /media/新加卷/小论文实验/data/liweibo/raw_data/我的要求不算高/我的要求不算高.title.sample.annotate.keywordsMatch
    precision:0.91,recall:0.94,f:0.93,accuracy:0.91
    /media/新加卷/小论文实验/data/liweibo/raw_data/扶不扶/扶不扶.title.sample.annotate.keywordsMatch
    precision:0.72,recall:0.69,f:0.81,accuracy:0.72
    /media/新加卷/小论文实验/data/liweibo/raw_data/时间都去哪儿/时间都去哪儿.title.sample.annotate.keywordsMatch
    precision:0.72,recall:0.62,f:0.73,accuracy:0.72
    /media/新加卷/小论文实验/data/liweibo/raw_data/说你什么好/说你什么好.title.sample.annotate.keywordsMatch
    precision:0.93,recall:0.98,f:0.92,accuracy:0.93
    所有节目各项目指标的平均值:
    mean_precision:0.84,mean_recall:0.86,mean_f:0.86,mean_accuracy:0.84

    关键词简单匹配的测路额

论文keywords和规则匹配的baseline的更多相关文章

  1. Latex: 添加IEEE论文keywords

    参考: How to use \IEEEkeywords Latex: 添加IEEE论文keywords 方法: \begin{IEEEkeywords} keyword1, keyword2. \e ...

  2. 烂泥:haproxy学习之手机规则匹配

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 今天我们来介绍下有关haproxy匹配手机的一些规则配置. 一.业务需要 现在根据业务 ...

  3. Nginx接收的host值会影响alias的规则匹配

    一般内网接收的HTTP请求都是内网唯一的网关传过来的,nginx的alias匹配会直接使用网关穿过的host值,而不是从URL解析出来的,从而导致的问题是,容器的alias相关Server_name规 ...

  4. nginx里面的location 规则匹配

    nginx location语法 ~ # 区分大小写的正则匹配 location ~ \.(gif|jpg|png|js|css)$ { #规则D } ~* # 不区分大小写的正则匹配(和~的功能相同 ...

  5. Nginx location规则匹配

    ^~   标识符匹配后面跟-一个字符串.匹配字符串后将停止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就停止对后续的正则匹配 = 精 ...

  6. haproxy 规则匹配到了就停止,不会继续匹配下一个

    acl url_web_wwm path_beg -i /scan use_backend zjtest7_com if url_web_wwm acl url_static path_end .ht ...

  7. 论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS

    这篇论文提出了SIF sentence embedding方法, 作者提供的代码在Github. 引入 作为一种无监督计算句子之间相似度的方法, sif sentence embedding使用预训练 ...

  8. nginx 针对特定地区的ip进行规则匹配

    使用geoip模块,加载ip库 geoip_country GeoIP.dat; geoip_city GeoLiteCity.dat; 转自http://ju.outofmemory.cn/entr ...

  9. Windows Store App 全球化 资源匹配规则

    上面几个小节通过示例介绍了如何引用资源以及设置应用语言来显示不同语言的信息,这些示例都只是添加了简体中文和英语两种语言来显示资源,而在一些复杂的应用程序中,字符串资源可能会被定义成多种语言,文件资源也 ...

随机推荐

  1. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)

    秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  2. vue-sticky组件详解

    sticky简介 sticky的本意是粘的,粘性的,使用其进行的布局被称为粘性布局. sticky是position属性新推出的值,属于CSS3的新特性,常用与实现吸附效果. 设置了sticky布局的 ...

  3. 通过编写串口助手工具学习MFC过程——(五)添加CheckBox复选框

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  4. css禁止鼠标双击选中文字

    div{ -moz-user-select:none;/*火狐*/ -webkit-user-select:none;/*webkit浏览器*/ -ms-user-select:none;/*IE10 ...

  5. 计算机系统结构总结_Scoreboard and Tomasulo

    Textbook:<计算机组成与设计——硬件/软件接口>  HI<计算机体系结构——量化研究方法>          QR 超标量 前面讲过超标量的概念.超标量的目的就是实现指 ...

  6. 源码编译Redis Desktop Manager | 懒人屋

    原文:源码编译Redis Desktop Manager | 懒人屋 源码编译Redis Desktop Manager  2.3k  字    10  分钟    2019-10-10 文章背景 本 ...

  7. 【源码解读】cycleGAN(三):数据读取

    源码地址:https://github.com/aitorzip/PyTorch-CycleGAN 数据的读取是比较简单的,cycleGAN对数据没有pair的需求,不同域的两个数据集分别存放于A,B ...

  8. arcgis server10.2发布地图服务报错

    发布地图服务时,读取了本机电脑中的切片方案.发布服务,报打包成功,但发布失败错误. 解决办法:给arcgis账户,赋予读写权限即可.重复发布服务,成功发布.

  9. react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置

    现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...

  10. fpga新建nios

    [FPGA]基于Qsys的第一个Nios II系统设计 (2013-12-12 21:50:08) 转载▼ 标签: fpga niosii qsys helloword quartusii 分类: 嵌 ...