[Python笔记] 用LDA(隐含狄利克雷分布)抽取主题分布+用户特征生成

实习的时候有个任务,利用大样本关联多种特征二分类预测,其中有部分特征为文本特征,简单处理过后可取得一定收益,便考虑使用gensim库里的lda抽取样本在文本特征上的主题分布生成新的特征,具体实现如下:

问题背景

在进行特征挖掘时,有一类表现尚好的特征为样本APP相关信息,其内容皆为文本,特征文本内容分为3种,apkname唯一标识、appname和apptags(以逗号分隔),欲将每个样本所包含的APP相关信息经清洗融合为单一文本,作为代表该样本的文本建立主题模型,最终用lda得到每个样本在top主题上的概率分布,作为样本新的特征使用。
特征的样式……编个例子,如下:

apkname appname apptags
com.bilibili.fgo.qihoo 命运-冠位指定-FGO 正版IP 网游 ACT 回合 二次元

数据样本量:约300万
数据中app种类:约28万

预处理

特征文本内容分为3种,apkname唯一标识、appname和apptags,为生成特征文本,欲将apkname以"."分隔,appname需进行分词以及特殊符号清洗将其融入tag。

import numpy as np
import pandas as pd
#import pyLDAvis.gensim
import json
import warnings
import gensim
import string
from gensim import corpora, models
import os, sys
import gc
import logging
from logzero import logger
logging.basicConfig(format="%(asctime)s:%(levelname)s:%(message)s",
                    level=logging.INFO)
warnings.filterwarnings('ignore')  # To ignore all warnings that arise here to enhance clarity

from gensim.models.coherencemodel import CoherenceModel
app = pd.read_csv('../input/user_apklabels.csv',nrows=None, usecols=['apklabels'])
print(app.shape[0] - app.isnull().sum())
app = app[~app.isnull()]
#app['is_num_apkname']=[s.isalnum() for s in app['apklabels'].astype(str).values]
#app = app[app['is_num_apkname']==False]
app.shape[
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值