python数据分析:内容数据化运营(中)——基于潜在狄利克雷分配(LDA)的内容主体挖掘

该博客介绍了如何使用Python的LDA(潜在狄利克雷分配)进行主题建模,通过TF-IDF分析和jieba分词处理新闻数据,将文本数据归类到不同主题,如政治、体育和房地产。案例展示了如何预测新文本的主题,并讨论了主题模型在SEO优化、内容运营和趋势分析等领域的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例背景

本案例是从一堆新闻文件中建立相应的主题模型,然后得到不同模型的主题特点,并通过对新文本数据集的预测得到其可能的主题分类。

相关知识

TF-IDF

TF-IDF(term frequency–inverse document frequency)是一种针对关键字的统计分析方法,用来评估关键字或词语对于文档、语料库和文件集合的重要程度。关键字的重要程度跟它在文档中出现的次数成正比,但同时跟它出现的频率呈反比。这种加权的形式能有效避免常用词对于关键字搜索结果的影响,提高搜索结果与关键字之间的相关性。
TF-IDF的主要思想是:如果某个关键字在一篇文档中出现的频率(TF, Term Frequ-ency)高,并且在其他文档中很少出现,那么认为该关键字具有良好的区分不同文档的能力,也就越重要。

词性标注

所谓词性标注是给每个词语确定一个词性分类。例如,“我爱Python数据分析与数据化运营”分词后的结果可能是“我|爱|Python|数据分析|与|数据|化|运营”,其中每个词都有专属的分类:

  • 我:代词
  • 爱:动词
  • Python:英语
  • 数据分析:习用语
  • 与:介词
  • 数据:名词
  • 化:名词
  • 运营:名动词,具有名词功能的动词

在运营中,有很多场景需要做词性标注,然后基于标注的词性可以做进一步应用。例如统计竞争对手新闻稿的主要词语分布、分词结果筛选和过滤、配合文章标签的提取等。

案例数据

案例数据来自搜狐新闻2012年6月到7月的部分新闻数据,涵盖了新闻、家居、体育等主题频道。压缩包中有10个新闻文件,每个文件中包含多条新闻,每条新闻的格式相同,包含新闻URL、页面ID、页面标题和页面内容4部分。以下是文件内容格式示例:

<doc>
<url>页面URL</url>
<docno>页面ID</docno>
<contenttitle>页面标题</contenttitle>
<content>页面内容</content>
</doc>

python实现

导入模块

# tar压缩包库
import tarfile
import os
# 带词性标注的分词模块
import jieba.posseg as pseg
# gensim的词频统计和主题建模模块
from gensim import corpora, models
# 用于处理xml格式文件
from bs4 import BeautifulSoup

解压文件

#### 解压缩文件 #####
if not os.path.exists('./news_data'):  # 如果不存在数据目录,则先解压数据文件
    tar = tarfile.open('news_data.tar.gz')  # 打开tar.gz压缩包对象
    names = tar.getnames()  # 获得压缩包内的每个文件对象的名称
    for name in names:  # 循环读出每个文件
        tar.extract(name, path='./')  # 将文件解压到指定目录
    tar.close()  # 关闭压缩包对象

内容汇总

# 全角转半角
def str_convert(content):
    '''
    将内容中的全角字符,包含英文字母、数字键、符号等转换为半角字符
    :param content: 要转换的字符串内容
    :return: 转换后的半角字符串
    '''
    new_str = ''
    for each_char in content:  # 循环读取每个字符
        code_num = ord(each_char)  # 读取字符的ASCII值或Unicode值
        if code_num == 12288:  # 全角空格直接转换
            code_num = 32
        elif (code_num >= 65281 and code_num <= 65374):  # 全角字符(除空格)根据关系转化
            code_num -= 65248
        new_str += chr(code_num)
    return new_str

# 解析文件内容
def data_parse(data):
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值