算法 自动采集列表(神策数据推荐系统的竞赛背景和竞赛内容介绍及应用)

优采云 发布时间: 2021-10-16 20:19

  算法 自动采集列表(神策数据推荐系统的竞赛背景和竞赛内容介绍及应用)

  1 比赛背景

  神测数据推荐系统是基于神测分析平台的智能推荐系统。基于客户需求和业务特点,利用机器学习算法,基于神测分析采集的用户行为数据,对咨询、视频、产品等进行个性化推荐,为客户提供不同场景下的智能应用,优化产品体验,提升点击率等核心业务指标。神策推荐系统是一个完整的学习闭环。采集的基础数据是通过机器学习的算法模型应用的。实时验证效果,指导数据源添加,算法优化反馈形成全流程、实时、自动、

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

  大赛链接:

  数据集

数据地址:[https://pan.baidu.com/s/1LBfqT86y7TEf4hDNCU6DpA](https://pan.baidu.com/s/1LBfqT86y7TEf4hDNCU6DpA)

密码:qa2u

  2 任务

  个性化推荐系统是神测智能系统的一个重要方面。准确理解信息主体是提高推荐系统有效性的重要手段。神策数据基于一个真实的商业案例,提供了上千条信息文章和关键词。参与者需要训练一个“关键词抽取”模型,抽取10个关键词万片信息文章。

  3 数据

  备注:报名参赛或入队后,可获得资料下载权限。

  提供下载的数据集包括两部分:1. all_docs.txt,108295条信息文章数据,数据格式为:ID 文章 title文章 text,中间是由\001分割。2. train_docs_keywords.txt,文章的1000条关键词标注结果,数据格式为:ID 关键词列表,中间用\t分隔。

  注:标记数据中每个文章的关键词不超过5个。关键词 都出现在 文章 的标题或正文中。需要说明的是,“训练集文章关键词形成的集合”和“测试集文章关键词形成的集合可能存在交集”。,但收录和收录之间并不一定存在关系。

  4 个人预赛第11名计划

  基于NLP中的无监督学习方法提取关键词。这是我第一次参加比赛。那时我是 NLP 的新手,所以我对这次比赛印象非常深刻。我将在这里与您分享。

  神策杯”2018年大学算法硕士排名B排名(13/583)

  4.1 评分情况4.2 数据分析:4.3 提高技巧,词性标注错误

  这就是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) 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-idf

use_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年高校算法大师赛第二名代码

  代码链接:文章 链接:

  团队:只有SCI毕业

  5.1 目录描述5.2 操作描述 运行Get_Feature.ipynb 得到train_df_v7.csv 和test_df_v7.csv。运行 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 描述解决问题的思路。使用jieba的tfidf方法筛选出Top 20候选人。工作是一个普通的二分类问题。特征可以分为以下两类: 使用LightGBM解决以上两个分类问题,然后根据LightGBM的结果为每个文本选择预测概率为Top2的词作为关键词输出。6 等级 6/622

  代码链接:

  (3)通过对title中的数据进行分析可以看出,如果title收录书名或者人名,则95%以上对应文章@的关键词 >. 这个应该跟大家的习惯(标签人的习惯)相关,片名中的内容通常对应电影、电视剧、歌曲等名称,这些名词和人名很可能会引起我们的注意开头,所以是关键词的概率非常高。

  @0.85,大约100次迭代后PR值可以收敛到一个稳定值。当阻尼系数接近 1 时,所需的迭代次数会急剧增加。并且排序不稳定。公式中S(Vj)前面的分数是指Vj指向的所有网页都应该平均分享Vj的PR值,这样你就可以对你链接的网页进行投票。

  Wji指的是Vi和Vj这两个句子的相似度。可以使用编辑距离和余弦相似度。textrank应用于关键词抽取时,与自动摘要抽取不同:1)词之间的关联没有权重,即Wji为1;2) 每个词与文档无关 所有词都有链接,但通过设置定长滑动窗口形式,窗口中词之间有链接。

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

  Umk 表示文档到主题的分布矩阵,Vnk 的转置表示主题到词的分布矩阵。LSA 使用 SVD 更本质地表达单词和文档,并将它们映射到低维空间。在限制使用文本语义信息的同时,LSA 大大降低了计算成本,提高了分析质量。但是计算复杂度很高,特征空间维数大,计算效率很低。当新文档进入现有特征空间时,需要对整个空间进行重新训练,以获取新增文档的分布信息。此外,还存在对频率分布不敏感和物理解释弱的问题。

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

  (4)第二位是通过tfidf选择20个候选集,然后给它们打上标签。特点:在整个数据集中被视为候选的频率关键词。这其实就是候选词在整个数据集中,tfidf在数据集中前20的频率(5)第三位不引入外部词典,利用词的内聚力和自由度从给定的词中寻找新词(6)第五位用的是pyhanlp,据说命名实体识别的准确率比较高。

  7 总结

  该任务属于词组挖掘或关键词挖掘。在接触NLP的过程中,很多同学都在研究如何从文本中挖掘关键词。经过近几年NLP技术的发展,大致总结了以下方法。其实也是通过上面分享的三个程序来运行的:

  8 更多信息

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线