神策杯 2018高校算法大师赛(个人、top2、top6)方案总结

公众号: ChallengeHub

1、竞赛背景

神策数据推荐系统是基于神策分析平台的智能推荐系统。它针对客户需求和业务特点,并基于神策分析采集的用户行为数据使用机器学习算法来进行咨询、视频、商品等进行个性化推荐,为客户提供不同场景下的智能应用,如优化产品体验,提升点击率等核心的业务指标。

神策推荐系统是一个完整的学习闭环。采集的基础数据,通过机器学习的算法模型形成应用。效果实时验证,从而指导添加数据源,算法优化反馈形成一个全流程、实时、自动、可快速迭代的推荐闭环。

本次竞赛是模拟业务场景,以新闻文本的核心词提取为目的,最终结果达到提升推荐和用户画像的效果。

比赛链接:https://js.dclab.run/v2/cmptDetail.html?id=242

数据集数据地址:https://pan.baidu.com/s/1LBfqT86y7TEf4hDNCU6DpA    密码:qa2u

2、任务 

个性化推荐系统是神策智能系统的一个重要方面,精准的理解资讯的主题,是提升推荐系统效果的重要手段。 神策数据以一个真实的业务案例作为依托,提供了上千篇资讯文章及其关键词,参赛者需要训练出一个”关键词提取”的模型,提取10万篇资讯文章的关键词。

3、数据

备注:报名参赛或加入队伍后,可获取数据下载权限。

提供下载的数据集包括两个部分: 1. all_docs.txt,108295篇资讯文章数据,数据格式为:ID 文章标题 文章正文,中间由\001分割。 2. train_docs_keywords.txt,1000篇文章的关键词标注结果,数据格式为:ID 关键词列表,中间由\t分割。

说明: 标注数据中每篇文章的关键词不超过5个。关键词都在文章的标题或正文中出现过。需要注意的是,“训练集文章的关键词构成的集合”与“测试集文章的关键词构成的集合”,这两个集合可能存在交集,但不一定存在包含与被包含的关系。

4、个人初赛第十一名方案

基于NLP中的无监督学习方法来提取关键词,这也是自己第一次参加比赛,当时刚接触NLP,所以对这次比赛印象深刻,在此给大家分享出来

神策杯”2018高校算法大师赛 B榜排名(13/583)

4.1 得分情况

  • 01_snow_textrank.py:暂定

  • 02_jieba_tfidf.py:377.5|415(custom)

  • 03_jieba_textrank.py:204.5

  • 04_jieba_postag.py:425.0

  • 05_jieba_postag.py:334.5

  • 06_jieba_ensemble.py:515

  • analysis_for_06.py:607.5

4.2 数据分析:

  • 1-40000:影视新闻

  • 40001-44060:体育新闻

  • 44061-54060:健康新闻

  • 54061-64060:军事新闻

  • 64061-74060:正文文本

  • 74061-84060:教育新闻

  • 98296-108295:饮食菜谱

4.3 提升技巧

  • 词性相同的情况下,选取长度大的关键词

    已解决,效果有明显提升,这也符合常理,词长度在3-5之间,一般在一个标题中是一个重要词汇

  • 存在错别字

  • 无“手机品牌”字典

    已解决:尝试增加这部分词典

  • 像“杰森·斯坦森”、“《摇曳庄的幽奈小姐:蒸汽迷宫》”这些词,jieba分词存在缺陷

    已解决:需要对包含特殊符号的句子做处理,效果有提升

  • 标题中没有关键词

   待提升:发现这种标题的规律,需要从正文中提取

这种标题一般有个特点就是:含有标点符号,比如:

老公遭曝光?邓莎回应质疑:他身材比我好散了吧

亚姐出身被前夫冷落?过档TVB专门“搞事”,视后非她莫属了?

高秋梓100斤是真的吗?小姐姐托举黄渤很容易,却举不起她!

哺乳期间怎么忌口?真的没有那么复杂

  • 词性标错

这个是导致tf-idf提取关键字误差较大的原因

4.5 核心代码:

# -*- coding: utf-8 -*-
# @Author  : quincyqiang
# @File    : analysis_for_06.py
# @Time    : 2018/9/5 14:17
import pickle
import pandas as pd
from tqdm import tqdm
from jieba.analyse import extract_tags,textrank # tf-idf
from jieba import posseg
import random
import jieba
jieba.analyse.set_stop_words('data/stop_words.txt') # 去除停用词
jieba.load_userdict('data/custom_dict.txt') # 设置词库'''nr 人名 nz 其他专名 ns 地名 nt 机构团体 n 名词 l 习用语 i 成语 a 形容词 nrt v 动词 t 时间词
'''test_data=pd.read_csv('data/test_docs.csv')
train_data=pd.read_csv('data/new_train_docs.csv')
allow_pos={'nr':1,'nz':2,'ns':3,'nt':4,'eng':5,'n':6,'l':7,'i':8,'a':9,'nrt':10,'v':11,'t':12}
# allow_pos={'nr':1,'nz':2,'ns':3,'nt':4,'eng':5,'nrt':10}
tf_pos = ['ns', 'n', 'vn', 'nr', 'nt', 'eng', 'nrt','v','a']def generate_name(word_tags):name_pos = ['ns', 'n', 'vn', 'nr', 'nt', 'eng', 'nrt']for word_tag in word_tags:if word_tag[0] == '·' or word_tag=='!':index = word_tags.index(word_tag)if (index+1)<len(word_tags):prefix = word_tags[index - 1]suffix = word_tags[index + 1]if prefix[1] in name_pos and suffix[1] in name_pos:name = prefix[0] + word_tags[index][0] + suffix[0]word_tags = word_tags[index + 2:]word_tags.insert(0, (name, 'nr'))return word_tagsdef extract_keyword_ensemble(test_data):ids,titles=test_data['id'],test_data['title']with open('data/test_doc.pkl','rb') as in_data:test_docs=pickle.load(in_data)labels_1 = []labels_2 = []use_idf=0for title, doc in tqdm(zip(titles, test_docs)):title_keywords = []word_tags = [(word, pos) for word, pos in posseg.cut(title)]  # 标题# 判断是否存在特殊符号if '·' in title:word_tags = generate_name(word_tags)for word_pos in word_tags:if word_pos[1] in allow_pos:title_keywords.append(word_pos)title_keywords = [keyword for keyword in title_keywords if len(keyword[0]) > 1]title_keywords = sorted(title_keywords, reverse=False, key=lambda x: (allow_pos[x[1]], -len(x[0])))if '·' in title :if len(title_keywords) >= 2:key_1 = title_keywords[0][0]key_2 = title_keywords[1][0]else:# print(keywords,title,word_tags)key_1 = title_keywords[0][0]key_2 = ''labels_1.append(key_1)labels_2.append(key_2)else:# 使用tf-idfuse_idf += 1# ---------重要文本-----primary_words = []for keyword in title_keywords:if keyword[1] == 'n':primary_words.append(keyword[0])if keyword[1] in ['nr', 'nz', 'nt', 'ns']:primary_words.extend([keyword[0]] * len(keyword[0]))abstract_text = "".join(doc.split(' ')[:15])for word, tag in jieba.posseg.cut(abstract_text):if tag == 'n':primary_words.append(word)if tag in ['nr', 'nz', 'ns']:primary_words.extend([word] * len(word))primary_text = "".join(primary_words)# 拼接成最后的文本text = primary_text * 2 + title * 6 + " ".join(doc.split(' ')[:15] * 2) + doc# ---------重要文本-----temp_keywords = [keyword for keyword in extract_tags(text, topK=2)]if len(temp_keywords)>=2:labels_1.append(temp_keywords[0])labels_2.append(temp_keywords[1])else:labels_1.append(temp_keywords[0])labels_2.append(' ')data = {'id': ids,'label1': labels_1,'label2': labels_2}df_data = pd.DataFrame(data, columns=['id', 'label1', 'label2'])df_data.to_csv('result/06_jieba_ensemble.csv', index=False)print("使用tf-idf提取的次数:",use_idf)if __name__ == '__main__':# evaluate()extract_keyword_ensemble(test_data)
© 2021 GitHub, Inc.

以下整理来自国内大佬无私的风向

5、“神策杯”2018高校算法大师赛第二名代码

代码链接:https://github.com/bigzhao/Keyword_Extraction
文章链接:https://bigzhao.github.io/2018/10/26/keyword-exaction/

队伍:发SCI才能毕业

5.1 目录说明

jieba:修改过的jieba库。

字典:存放jieba词库。PS:词库来源于搜狗百度输入法词库、爬虫获取的明星词条和LSTM命名实体识别结果。

all_docs.txt: 训练语料库

train_docs_keywords.txt:我把明显错误的一些关键词改回来了,例如D039180梁静茹->贾静雯、D011909泰荣君->泰容君等

classes_doc2vec.npy:gensim默认参数的doc2vec+Kmeans对语料库的聚类结果。

my_idf.txt:计算得来的语料库的idf文件。

lgb_sub_9524764012949717.npy LGB的某一次预测值,用于特征生成

stopword.txt:停用词

Get_Feature.ipynb:特征生成notebook,对训练集和测试集生成对应的文件

lgb_predict.py:预测并输出结果的脚本。需要train_df_v7.csv和test_df_v7.csv。

train_df_v7.csv,test_df_v7.csv:Get_Feature.ipynb 跑出来的结果,notebook有详细特征说明

word2vec模型下载地址:https://pan.baidu.com/s/1krH0ThIqvldmF5gfOZ6s7A 提取码:tw0m。

doc2vec模型下载地址:链接:https://pan.baidu.com/s/17ZYAbTeqsXXq-hE3z3QqmA 提取码:0ciw.

5.2 运行说明

  1. 运行Get_Feature.ipynb获取train_df_v7.csv和test_df_v7.csv.

  2. 运行lgb_predict.py 获取结果sub.csv。

numpy 1.14.0rc1
pandas 0.23.0
sklearn 0.19.0
lightgbm 2.0.5
scipy 1.0.0

5.3 解题思路方案说明

  1. 利用jieba的tfidf方法筛选出Top20的候选关键词

  2. 针对每条样本的候选关键词提取相应的特征,把关键词提取当作是普通二分类问题。特征可以分为以下两类:

  3. 样本文档自身特征:例如文本的长度、句子数、聚类结果等;

  4. 候选关键词自身特征:关键词的长度、逆词频等;

  5. 样本文本和候选关键词的交互特征:词频、头词频、tfidf、主题相似度等;

  6. 候选关键词之间的特征:主要是关键词之间的相似度特征。

  7. 候选关键词与其他样本文档的交互特征:这里有两个非常强的特征,第一是在整个数据集里被当成候选关键词的频率,第二个与点击率类似,算在整个文档中预测为正样本的概率结果大于0.5的数量(在提这个特征的时候我大概率以为会过拟合,但是效果出乎意料的好,所以也没有做相应的平滑,或许是因为结果只选Top2的关键词,这里概率选0.5会有一定的平滑效果,具体操作请看lgb_predict.py的31-42行)。

  8. 利用LightGBM解决上述二分类问题,然后根据LightGBM的结果为每条文本选出预测概率Top2的词作为关键词输出即可。

6、第六名方案 Rank 6 / 622

代码链接:https://github.com/RHKeng/ShenCeCup

  • 1 比赛简介(Datacastle)
    (1)比赛介绍:比赛根据神策数据提供的一千篇资讯文章及其关键词,参赛者需要训练出一个”关键词提取”的模型,提取10万篇资讯文章的关键词。
    (2)评价指标:提交的预测结果中,每篇文章最多输出两个关键词。预测结果跟标注结果命中一个得 0.5 分,命中两个得一分。英文关键词不区分大小写。

  • 2 问题分析
    通过初步分析,本次比赛训练集和测试集的样本比例大致是1:100,因此选择采用无监督的模型(tfidf/tfiwf,textRank,主题模型LSI/LDA)进行关键词提取。依据比赛背景,我将其分成两个步骤,首先根据资讯文章和标题选取关键词候选集,然后选择其中两个概率最大的关键词。

  • 3 数据分析
    (1)训练集和测试集的样本比例1:100
    (2)通过分析标注数据以及标题的关系可以看出,1000篇标注文章中,只有20篇左右文章的关键词是不在标题中,而且80%左右文章至少有两个关键词是在标题中,可以看出标题的重要性。大家看到一篇资讯文章,通常会首先关注标题,因为标题会概括出这个文章的主要内容。

    (3)通过分析标题中的数据可以看到,如果标题中含有书名号或者是人名,95%以上都是对应文章的关键词。这个应该跟每个人的习惯(打标签人的习惯)有关,书名号中的内容通常会对应影片,电视剧,歌曲等的名称,这些名词和人名很大概率会在一开始吸引我么的注意,因此是关键词的概率就很大。

  • 4 样本构造
    由于采用的是无监督模型,因此,可以我把官方提供的一千条标注样本作为线下验证集,来验证模型的精度和效果,基本上可以做到线上线下一致。而对于线上提交结果,我将一千条标注数据的标签作为结巴分词的自定义词,用以提高分词的准确度。

  • 4.1 数据预处理
    分词预处理过程

    1. 对于jieba分词,去除了一些常用的停用词(从网上找的),避免后期一些停用词对模型精度产生影响,停用词主要包括英文字符、数字、数学字符、标点符号及使用频率特高的单汉字等。比如的,呢。

    2. 将一千条标注数据的标签作为结巴分词的自定义词,用以提高分词的准确度。主办方有说明过,“训练集文章的关键词构成的集合”与“测试集文章的关键词构成的集合”,这两个集合可能存在交集,但不一定存在包含与被包含的关系。

    3. 在网上找到搜狗的词典,给jieba分词添加用户词典,提高分词准确度。

    4. 利用哈工大ltp分词接口进行分词,同样作为模型样本,用于弥补jieba分词的分词错误。
      5. 利用ltp的接口,同时识别jieba分词和ltp分词的结果中的名词甚至是人名,用于后期的规则。

  • 4.2 增大title中词语的权重
    在这里,采用的是简单的title复制的方式,对于一条样本,利用句号将n个相同的title和context进行字符串拼接,然后分词并用于后期tfidf的计算,这样就可以达到增大title中词语的权重。这里n的确定,每一条样本的n是不一样的,依据context中句子的个数乘上一定的比例来确定n。(通过训练集,也就是我的线下验证集来确定比例,这个比例,从实际场景来说,就是人们对title关注度的反映)

  • 5 模型选择
    对比无监督的模型(tfidf/tfiwf,textRank,主题模型LSI/LDA)的效果,最终采用tfidf作为基础模型进行关键词候选集的选取。

  • 5.1 tfidf
    tfidf(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
    TF(词频)就是某个词在文章中出现的次数,TF(词频) = 某个词在文章中出现的次数 / 该篇文章的总词数;IDF(逆向文档频率)为该词的常见程度,IDF 逆向文档频率 =log (语料库的文档总数 / (包含该词的文档总数+1)),如果一个词越常见,那么其分母就越大,IDF值就越小。

  • 5.2 Tfiwf
    TF不变,IWF是文档所有词语词频之和/该单词词频

  • 5.3 Pagerank(此处列出只为引出下面的textrank)
    需要知道有哪些网页链接到网页A,也就是要首先得到网页A的入链,然后通过入链给网页A的投票来计算网页A的PR值。这样设计可以保证达到这样一个效果:当某些高质量的网页指向网页A的时候,那么网页A的PR值会因为这些高质量的投票而变大,而网页A被较少网页指向或被一些PR值较低的网页指向的时候,A的PR值也不会很大,这样可以合理地反映一个网页的质量水平。

    Vi表示某个网页,Vj表示链接到Vi的网页(即Vi的入链),S(Vi)表示网页Vi的PR值,In(Vi)表示网页Vi的所有入链的集合,Out(Vj)表示网页Vj链接到其他网页的数量,d表示阻尼系数,是用来克服这个公式中“d *”后面的部分的固有缺陷用的:如果仅仅有求和的部分,那么该公式将无法处理没有入链的网页的PR值,因为这时,根据该公式这些网页的PR值为0,但实际情况却不是这样,所有加入了一个阻尼系数来确保每个网页都有一个大于0的PR值,根据实验的结果,在0.85的阻尼系数下,大约100多次迭代PR值就能收敛到一个稳定的值,而当阻尼系数接近1时,需要的迭代次数会陡然增加很多,且排序不稳定。公式中S(Vj)前面的分数指的是Vj所有出链指向的网页应该平分Vj的PR值,这样才算是把自己的票分给了自己链接到的网页。

  • 5.4 textrank
    一种用于文本的基于图的排序算法,仅利用单篇文档本身的信息即可实现关键词提取,不依赖于语料库。(调用jieba的接口)

    Wji是指Vi和Vj两个句子之间的相似度,可以采用编辑距离和余弦相似度等。当textrank应用到关键词提取时,与自动摘要提取不同:1)词与词之间的关联没有权重,即Wji是1;2)每个词不是与文档中所有词都有链接,而是通过设定固定长度滑动窗口形式,在窗口内的词语间有链接。

  • 5.5 主题模型
    主题模型认为在词与文档之间没有直接的联系,它们应当还有一个维度串联起来,这个维度就是主题。主题模型就是一种自动分析每个文档,统计文档内词语,根据统计的信息判断当前文档包含哪些主题以及各个主题所占比例各为多少。主题模型是一种生成模型,一篇文章中每个词都是通过“以一定概率选择某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到的;

    主题模型常用的方法是LSI(LSA)和LDA,其中LSI是采用SVD(奇异值分解)的方法进行暴力破解,而LDA则是通过贝叶斯学派方法对分布信息进行拟合。通过LSA或LDA算法,可以得到文档对主题的分布和主题对词的分布,可以根据主题对词的分布(贝叶斯方法)得到词对主题的分布,然后通过这个分布和文档对主题的分布计算文档与词的相似性,选择相似性高的词列表作为文档的关键词。

  • 5.5.1 LSA
    潜在语义分析(Latent Semantic Analysis, LSA),也叫做Latent Semantic Indexing, LSI. 是一种常用的简单的主题模型。LSA是基于奇异值分解(SVD)的方法得到文本主题的一种方式。

    Umk代表了文档对主题的分布矩阵,Vnk的转置代表了主题对词语的分布矩阵。
    LSA通过SVD将词、文档进行更本质地表达,映射到低维的空间,并在有限利用文本语义信息的同时,大大降低计算的代价,提高分析质量。但是计算复杂度非常高,特征空间维度较大的,计算效率十分低下。当一个新的文档进入已有特征空间时,需要对整个空间重新训练,才能得到新加入文档后的分布信息。此外,还存在对频率分布不敏感,物理解释性薄弱的问题。

  • 5.5.2 pLSA
    在LSA的基础上进行了改进,通过使用EM算法对分布信息进行拟合替代了使用SVD进行暴力破解。
    PLSA中,也是采用词袋模型(词袋模型,是将一篇文档,我们仅考虑一个词汇是否出现,而不考虑其出现的顺序,相反,n-gram考虑了词汇出现的先后顺序),文档和文档之间是独立可交换的,同一个文档内的词也是独立可交换的。在PLSA中,我们会以固定的概率来抽取一个主题词,然后根据抽取出来的主题词,找其对应的词分布,再根据词分布,抽取一个词汇。

  • 5.5.3 LDA
    LDA 在 PLSA 的基础上,为主题分布和词分布分别加了两个 Dirichlet 先验分布。PLSA中,主题分布和词分布都是唯一确定的。但是,在LDA中,主题分布和词分布是不确定的,LDA的作者们采用的是贝叶斯派的思想,认为它们应该服从一个分布,主题分布和词分布都是多项式分布,因为多项式分布和狄利克雷分布是共轭结构,在LDA中主题分布和词分布使用了Dirichlet分布作为它们的共轭先验分布。
    在 LDA 中,主题的数目没有一个固定的最优解。模型训练时,需要事先设置主题数,训练人员需要根据训练出来的结果,手动调参,再优化主题数目。

    我们可以根据数据的多项式分布和先验分布求出后验分布,然后将这个后验分布作为下一次的先验分布,不断迭代更新。求解方法一般有两种,第一种是基于Gibbs采样算法求解,第二种是基于变分推断EM算法求解。

  • 5.6 小结
    模型对比:tf-idf的idf值依赖于语料环境,这给他带来了统计上的优势,即它能够预先知道一个词的重要程度,而textrank只依赖文章本身,它认为一开始每个词的重要程度是一样的,但是用到了词之间的关联性(将相邻的词链接起来)。主题模型LSA和LDA都依赖于语料库,在新的一篇文档进来后需要重新训练,但是主题模型可以充分利用到文本中的语义信息。Tfidf和textrank都可以用jieba的接口,而主题模型可以用sklearn中gensim的接口。
    在我们的本次比赛,虽然说可以看出来整个数据集是有一定的主题的,包括娱乐,体育等,但是从关键词标签来看,这个跟主题名称并没有很大的关联,而是跟标题关联性很大,所以tfidf虽然是简单的统计,但是却可以发挥很大的效果(增大title的权重)。

  • 5.7 规则
    结合前面的分析,加入一系列人工规则,利用tfidf模型得到的10个关键词候选集确定最终概率最大的两个关键词label(人工规则,其实就是给模型加入人的主观性,有助于提高模型精度)
    1.利用re正则表达式获取title中书名号的内容作为重要度最高的候选集;
    2.利用训练集标签构建keyword_set,利用jieba对title分词结果构建jieba_title_set,将10个候选集中同时存在于keyword_set和jieba_title_set中的作为重要度第二高的候选集;
    3.将10个候选集中同时存在于jieba_title_name_list和ltp_title_name_list中的关键词作为重要度第三高的候选集;
    4.将10个候选集中存在于jieba_title_name_list的关键词作为重要度第四高的候选集;
    5.将10个候选集中位于title内且词性为名词的关键词作为重要度第五高的候选集;
    6.将10个候选集中位于keyword_set的关键词作为重要度第六高的候选集;
    7.将10个候选集中位于title中,词性为非名词的关键词作为重要度第七高的候选集;
    8.其余的候选集作为重要度最低的候选集;

  • 6 赛后总结
    这次我是第一次接触跟文本相关的比赛,所以入门了挺多关于文本处理的操作,包括如何分词,如何做数据预处理(去除停用词,提高分词准确性),如何针对特定问题选择相关的模型作为基础模型(tfidf/tfiwf,textRank,主题模型LSI/LDA),以及怎么针对问题对结果进行优化。这次比赛由于跟其他比赛有重叠,所以用在这上面的时间并不是特别多,在前期从几十名不断优化做到第二之后(640分,总分1000),思路有点短路,然后其他比赛时间也相对紧张,所以后面就很少再做改进了,最终A/B榜都是排名第六,模型还是具有鲁棒性的。答辩过后,看到了其他选手的分享,才知道自己在思路上具有一定的局限性,所以没做到前三(前三采用有监督模型,四到六采用无监督模型),下面来总结一下本次比赛的不足以及其他选手的亮点。
    (1)由于是单人赛,而且没有跟其他选手或朋友交流,在一定思路做到极限后没有开拓新的思路,这个确实比较可惜。这次比赛区分答辩选手前后排的根本是,采用的是有监督模型还是无监督模型。官方后面的解释,他们是想引导选手从无监督的角度来做,所以测试集的样本数远远大于训练集的数量,而且训练集的数量只有1000条,因为神策公司是要借鉴选手的模型落地到实际的产品中,也对实时性有一定的要求,此时无监督模型可以在保持一定精度的前提下大大减少训练和预测的时间,有助于算法的落地。
    (2)在答辩的时候,记得评委曾经提问过,为啥我没想到二分类,我的回答是陷入了思维局限了,确实,这也可以看出来,一个人的力量说白了还是很有限的。我在本次比赛做了一堆规则,其实如果将规则对应到一个二分类模型来说,这样二分类模型所学到的东西肯定是比人为定义规则间的优先级要好。一个规则,其实可以对应到二分类模型中的一个甚至是多个特征(比如书名号,可以提取成是否是书名号中的内容这一个特征),这样二分类模型自然会根据样本学习到规则间的相对重要度并体现到结果中。此外,人为做规则,能做的规则是有限的,然而如果是二分类模型,可以提取很多特征(提取候选词的tfidf、LDA等特征,也是一种变相的模型stacking融合了),特征如果是对标签是有区分度的,那么很有可能是可以给模型增加额外信息,提高模型的精度。
    (3)第一名的选手,采用的是二分类模型,直接将标题作为候选集,然后根据是否在标签集中打01标签,提取特征,用lightgbm做二分类,选择概率较大的两个词作为最终提交的label。比较有特色的特征,计算词word2vec与句子doc2vec向量的余弦距离
    部分特征:

    (4)第二名是通过tfidf选20个候选集,然后再打标签,特色特征:在整个数据集里被当成候选关键词的频率,这个其实就是该候选词在整个数据集中tfidf在前20的频率
    (5)第三名未引入外部词典,使用词的凝聚度和自由度从给定文档中发现新词。
    (6)第五名使用pyhanlp包来进行命名实体识别,识别人名,据说准确度比较高。

7、总结

  • 基于无监督方法:LDA,TFIDF,TextRank

  • 基于Feature Engineering:基于无监督生成候选词,然后构建特征训练二分类模型

  • 基于深度学习的关键词提取:span、bio、bmes crf序列标注等方法

欢迎扫码关注ChallengeHub公众号

欢迎加入ChallengeHub学习交流群

神策杯 2018高校算法大师赛(个人、top2、top6)方案总结相关推荐

  1. 高薪寻人 | 2018 “神策杯”高校算法大师赛 6 强诞生,【招人】进行时……

    近日,2018 "神策杯"高校算法大师赛在北京落下帷幕. 此次比赛共提交近 3000 份优秀作品,近 600 支队伍激情参与,神策数据专家团队通过作品评估.成果展示.现场路演等层层 ...

  2. 2018 “神策杯”高校算法大师赛 6 强诞生,【招人】进行时……

    近日,2018 "神策杯"高校算法大师赛在北京落下帷幕. 此次比赛共提交近 3000 份优秀作品,近 600 支队伍激情参与,神策数据专家团队通过作品评估.成果展示.现场路演等层层 ...

  3. 有奖竞赛 | “神策杯”高校算法大师赛揭幕,寻找最强文本处理大神

    人类,面临着一个资讯爆炸的时代. 全球的数据量以每年 58% 的速度增长,网站数突破 10 亿,微信公众号总量突破 1000 万. IDC 报告显示,预计到 2020 年,全球数据总量将超过 40 Z ...

  4. 2018年算法工程师薪酬报告出炉:平均年薪50.21万,点燃寒冬的一把火

    2018年算法工程师薪酬报告出炉:平均年薪50.21万,点燃寒冬的一把火(解优人才网记者风精报道) 从1956年美国达特茅斯会议首次提出"人工智能"的概念,到如今新一轮科技革命和产 ...

  5. 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解

    以下所有AC题解程序来自"仙客传奇"团队. A. 口算训练 题解链接: ABDFHK "字节跳动杯"2018中国大学生程序设计竞赛-女生专场 B. 缺失的数据范 ...

  6. 蓝桥杯 2018年省赛真题 (Java 大学C组)

    蓝桥杯 2018 年省赛真题(Java 大学 C 组 ) #1 哪天返回 #2 猴子分香蕉 #3 字母阵列 #4 第几个幸运数 #5 书号验证 #6 打印大X #7 缩位求和 #8 等腰三角形 #9 ...

  7. 天马杯全球高校科技创新大赛

    大赛介绍 "天马杯全球高校科技创新大赛"(以下简称大赛),是由马上消费金融股份有限公司主办的高校级别的科技主题杯赛.在新时代国家信息化发展"数字中国"大战略背景 ...

  8. 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究

    由北京智源人工智能研究院主办,国家天文台.数据评测平台biendata联合举办的天体分类数据竞赛于2020年1月开赛.本次比赛旨在鼓励大众参与到天文学的探索当中,利用最新的人工智能算法分析望远镜收集到 ...

  9. 今天,“场景赋能•驱动有数”,神策数据 2018 数据驱动大会在京成功举办

    10 月 16 日,以"场景赋能•驱动有数"为主题的神策数据 2018 数据驱动大会在北京丽亭华苑酒店如期举行,来自全球大数据各大行业的领袖人物聚首北京,融合国际前沿技术与行业经验 ...

最新文章

  1. 澳大利亚悉尼大学徐畅教授招收深度学习方向全奖博士生
  2. arcgis api for flex 开发入门(九)webservices 的使用
  3. 在网页中显示数字时钟
  4. 【FI】SAP ODN简介
  5. administrator
  6. ms sql 带自增列 带外键约束 数据导入导出
  7. VS各个版本的密钥及下载地址
  8. 当不知轴承型号时如何寻找轴承故障频率_知课堂 | 快速计算轴承特征频率
  9. 仅为0.9兆 谷歌金山词霸1.5版本正式发布
  10. macOS 手动清理垃圾文件
  11. EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码
  12. 山东省淄博市谷歌高清卫星地图下载
  13. 软件测试基础学习 - Linux文件及文件内容查找命令总结
  14. 楚留香ai识别人脸_楚留香手游AI捏脸怎么弄_楚留香手游AI捏脸方法步骤_玩游戏网...
  15. 硬盘分区修复和碎片整理命令
  16. 安卓禁用硬件加速_[转]Android如何关闭硬件加速
  17. RestartOnCrash-自动重启崩溃或挂起的应用程序
  18. RTS/CTS机制以及RTS threshold
  19. 周金瑞10.29/30国际黄金、白银TD、美原油美盘操作建议
  20. 【微信小程序】添加插件 并配置

热门文章

  1. 想要做好自媒体?大周给你分享几点心得
  2. 已解决:出现了自己签名的证书。 错误: 证书通用名 “www.doctorcom.com” 与所要求的主机名 “raw.githubusercontent.com” 不符。
  3. gzip压缩文件损坏的修复方法
  4. vc运行库或.net framework装不上的通用解决方法
  5. 【预测】中国2015年将陷入20年来最严重的失业潮和减薪潮!
  6. 【已解决】将CentOS7系统安装至U盘(一):系统安装与使用
  7. 10个提供免费矢量图形的网站
  8. parallels 激活window7
  9. 自己写的粗糙的Excel数据驱动Http接口测试框架(一)
  10. 如何免费开通微信公众号留言功能(下)