【关键词提取】第二篇:数据集、实现代码介绍

原文地址:http://www.cnblogs.com/lessmore/category/1009890.html 转载请保留本行,欢迎交流。

目录:

  1. 第一篇:综述
  2. 第二篇:数据集、实现代码介绍
  3. 第三篇:特征设计
  4. 第四篇:候选词生成(上)
  5. 第五篇:候选词生成(下)
  6. 第六篇:性能比较

这一篇博客将介绍我的关键词提取系统使用的数据集,和我实现的代码结构,如果读者希望在阅读博客的同时查看数据、运行代码,这将是一个很好的指南。

2.1 数据集介绍

本文中用于训练、测试的数据来自于SemEval 2017 Task 10。共有500篇来自计算机科学、材料科学和物理学等领域的论文,每篇包含选用的部分段落和关键词标注信息。其中350篇用作训练集,剩余150篇用作测试集。每篇论文选段均为200词左右纯文本,不包括标题、摘要等结构信息,对测试集进行简单统计,每篇标注的关键词约20个。可以看出,数据集具有以下特点,文本长度较短,但是标注的关键词数量远远高于通常值,这对机器学习有利于获得更好的结果。这里有两张文本和对应关键词标注的截图,可以得到直观的感受。
数据示例-文本 数据示例-标注
大家可以从SemEval 2017 Task 10 的官方网站得到更多关于数据集的信息。

2.2 实现代码介绍

我的系统对于实现关键词提取,采取两个步骤,首先生成候选词,然后在候选词上用分类模型选出关键词。我们在生成候选词阶段采用了两种方法,提取名词短语和CRF 标注方法,并在第六章比较了两者的性能。

代码再这里src,是用python 3实现的,使用了NLTK, sklearn等库,一些数据没有包括在内,例如词向量,以及训练数据。
代码的目录及各文件含义说明如下:

根目录:
--main.py 运行文件

--ekrsy/ 代码文件夹
----init.py
----base.py 实现Document和KeyPhrase两个类
----feature.py 实现提取特征的各种函数
----util.py 封装一些工具方法
----glove.py 封装从文件读取词向量借口
----test.py 一些测试方法
----log.py 定义日志格式
----crf_tool.py 实现CRF++标注的数据转换和调用模型做标注
----candidate.py 实现提取候选词的函数
----model.py 实现各种分类模型
----corpus.py 封装文档集类

--data/ 放置使用的数据文件
----train/ 训练数据集
----dev/ 测试数据集
----crf/ crf标注使用CRF++的配置文件
----extern_resource/ 外部资源数据
------freq 维基百科英文文章计算的词频
------idf 维基百科计算的逆文档频率
------ieee IEEE texonomy 分类列表
------glove.6B.50d.txt GLOVE训练的词向量数据

具体代码细节在这一系列文章中都不会再涉及,如果需要跑结果代码应该很好懂。

这篇文章介绍了我们实现的关键词提取系统使用的数据集和实现代码结构。接下来将介绍特征设计,候选词生成等内容。

posted @ 2017-05-27 21:25  小小的港湾  阅读(5200)  评论(1编辑  收藏  举报