zoukankan      html  css  js  c++  java
  • smp关键词提取任务日程

    6月28日 看完论文《融合LDA与TextRank的关键词抽取研究》,基本理解其思想。

    6月29日 看完第二篇论文《词语位置加权TextRank的关键词抽取研究》,理解其思想。

    7月1日 和包睿,礼明师兄确定交接事宜《关键字提取流程》。

    主题词抽取的流程:
    (1)分割博客文件 --- (镇宇)
    将1_BlogContent分割成单个单个的博客文件;
    文件命名为:博客编号(D0000001)
    文件内容为:博客编号(
    )博客标题(
    )博客内容
    分割的文件有1,000,000个, 分200个文件夹保存,
    文件夹的名为”D0000xxx-D0000xxx”,每个文件夹有5,000篇博客
    建议技巧:Spark
    (2)搭建文本检索系统(whoosh) -- 包睿
    对每个文件夹中博客搭建whoosh检索系统, 分有200个检索系统,
    格式:
    Id:博客编号
    Title:博客标题
    Content:博客内容
    keyWord:暂设为空, 即””
    提取SMPCUP2017_TrainingData_Task1.txt内容, 将对应的关键词存到对应的检索系统当中.共有14557个训练博客
    (3)统计关键词的特征 -- 包睿
    位置特征:
    是否出现在标题
    在博客内容中出现在第几句
    句中第几个词
    词性特征:
    名词/动词/名动词
    组合词特征:
    单节词/双节词/三节词
    名名组合/名动组合/动名组合
    (4)关键词提取算法 ----  柏琪
    根据关键词特征训练特征权重, 对词语赋予权重
    利用TextRank算法对词语进行排名
    (5)协同训练 ----  镇宇(待续)
    涉及到聚类, 词汇链构建, 命名实体识别

    7月4日 理解textrank算法思想,下载textrank包。

    7月5日 了解jieba词性标注分词原理及用法

    7月6日 弄清textrank包用法,修改算法。

    7月8日 开始实现lda算法,向镇宇师兄和靖达师兄lda工具的安装使用(疑问:选lda或gensim包,corpus,word_id,topic_id参数如何正确输入)。

    7月9日 完成TR算法(看懂代码),对其进行改进,代码优化简略。(lda相关问题得到解答,如使用gensim包,corpus,word_id,topic_id参数如何正确输入等)

    7月10日 打出lda算法,并与TR算法进行融合,加入数据预处理程序analysis,学会函数分类编程思想(类封装函数,用对象调用类(一些方法仅在类创建对象时调用,就不用每次调用对象时函数都被调用,比如说是去停用词的算法,就不用每次处理一篇文档都调用一次),提高算法效率),最高准确率为27.3%.

    7月11日 上午 做TR效果测试

        下午 改进lda算法,优化了lda效率;

          改进analysis预处理,让TR与lda输入单词数相同;

          加入“先分句后分词”预处理;

        晚上 做参数遍历,寻找最优参数设置;(lda:32%;TR:31.8%;lda+TR:())

          调整lda+TR融合算法,分为4种:

      1.  ex1 转移矩阵加权平均(0.5
      2.     ex2 转移矩阵相乘
      3.     ex3 最终结果相加
      4.     ex4 最终结果相乘

     经测试,最终确定第2种方法ex2 转移矩阵相乘的效果最好,准确率为33.9856490541%.

    7月12-13日 任务有5个:

    (1)不去掉“类”,“栈”,“3d”;(ok,准确率下降)

    (2)提取《SMPCUP2017_ValidationSet_Task1.txt》里的所有文件;(ok)

    (3)导入结巴自定义词典《trainSet.txt》,计算召回率,代码如下;(ok)

     1  # 计算导入自定义词典后,结巴分词结果召回率
     2     recall = 0
     3     text_set = []
     4     for i in xrange(len(filenames)):
     5         text_set.append([])
     6         for list in text:
     7             for w in list:
     8                 text_set[i].append(w)
     9 
    10     for t in xrange(len(text_set)):
    11         for w in set(text_set[t]):
    12             if w in result_list[t]:
    13                 recall+=1
    15    print '召回率',recall/(len(text_list)*5)

     

    (4)模糊匹配,若两个词均含有相同内容,保留长字去短字。(ok,,准确率提高到36.3%)

    (5)增加去停用词规则,过滤含数字/符号的单词(纯数字)。(ok)

    7月17日,《SMPCUP2017数据标注(1-1200).xlsx》计算词频。(ok,17号完成)

          加入组合词方法(词频不低于3的词和其左边的词和右边的词组合),效果不太好。

    7月18日,和子旋师兄聊关键词提取的方法(特征工程和word2vec的skip-gram模型);

         发现引入PositionAnalysis方法计算词的权重都一样,错误已修正;

         错误修正后,去掉lda,转移矩阵相乘(1×panalysis)准确率为46。3%;

         任务一提交,结果最好为56%(第3名)。

    7月19日,加权平均——权重归一化;

         融合textrank和PositionAnlysis方法(去除lda),调整转移矩阵和最终矩阵参数,准确率为47。5%;

         学习skitit-learn方法,做词二分类问题(是否是关键词);

    8月4日,整合了scikit-learn文本分类方法和位置信息,来训练分类器;

    8月6日 ,文本分类方法加入了词性特征和词的idf值特征,来训练分类器;

    8月9日,尝试用各种scikit-learn里的方法(除svm)训练分类器;

        开始的时候数据过拟合,后来将训练集70%做训练集,30%做测试集,发现adaboost(200)的效果较好(50%);

    8月10日,引入新的停用词表,将没有idf值的单词的idf赋为13,重新引入analisis方法里对词过滤的方法发现adaboost(250)的效果较好(54.6%);

    8月27日,和加拿大蒙特利尔大学聂建云教授交流后,想尝试采用learning to rank中的ranking svm算法试试效果。

  • 相关阅读:
    CLR的黑暗面——栈与引用对象
    delegate的另类玩法
    一个比较bt的xslt
    关于string
    jQuery核心讲解
    Linux环境进程间通信(二):信号(上)
    ubuntu10.10 轻松安装 Nvidia 官方驱动
    Linux环境进程间通信(二): 信号(下)
    Linux 信号signal处理机制
    java.lang.ProcessBuilder类和java.lang.Process类
  • 原文地址:https://www.cnblogs.com/flippedkiki/p/7152987.html
Copyright © 2011-2022 走看看