爬取微博评论并提取主要关键词(二)

3 篇文章 0 订阅
2 篇文章 0 订阅

    在实现了微博评论爬取之后,可以对微博评论提取关键词了。
    具体思路是找自然语言处理包,在网上查了半天,中文包目前就看到推荐的snownlp以及jieba。看了一下它们各自的案例介绍,感觉snownlp里面的功能还是没有jieba里面的丰富,特别是不知道snownlp如何自定义分词,而jieba可以比较简单的添加自定义分词以及词性,于是就选了jieba包。

    首先我就针对其中一条微博的评论做了文本处理,代码如下:

import jieba
import jieba.analyse
import jieba.posseg as pseg
import re

jieba.suggest_freq('月子',True) 
jieba.add_word('月子',tag='n') 
jieba.suggest_freq('无创',True) 
jieba.add_word('无创',tag='n') 
jieba.suggest_freq('子宫',True) 
jieba.add_word('子宫',tag='n') 
jieba.suggest_freq('月嫂',True) 
jieba.add_word('月嫂',tag='n') 
jieba.suggest_freq('例假',True) 
jieba.add_word('例假',tag='n') 
jieba.suggest_freq('二胎',True) 
jieba.add_word('二胎',tag='n')
jieba.suggest_freq('打掉',True) 
jieba.add_word('打掉',tag='v') 
jieba.suggest_freq('月子中心',True) 
jieba.add_word('月子中心',tag='n') 
jieba.suggest_freq('怀孕',True) 
jieba.add_word('怀孕',tag='v') 
jieba.suggest_freq('备孕',True) 
jieba.add_word('备孕',tag='n') 
jieba.suggest_freq('预产期',True) 
jieba.add_word('预产期',tag='n') 
jieba.suggest_freq('保胎',True) 
jieba.add_word('保胎',tag='n')  
jieba.suggest_freq('引产',True) 
jieba.add_word('引产',tag='n') 
jieba.suggest_freq('避孕',True) 
jieba.add_word('避孕',tag='n') 
jieba.suggest_freq('顺产',True) 
jieba.add_word('顺产',tag='n') 
jieba.suggest_freq('一胎',True) 
jieba.add_word('一胎',tag='n') 
jieba.suggest_freq('头胎',True) 
jieba.add_word('头胎',tag='n') 
jieba.suggest_freq('陪护',True) 
jieba.add_word('陪护',tag='n')

wordlist=[] 
typelist=[] 
for i in range(len(record_list)):
    a=re.sub("[A-Za-z0-9\!\%\[\]\,\。\$\:\<\>\=\'\/\.\-\"\;\@\回复\_\#]", "", str(record_list[i]))
    words=pseg.cut(a)
    for w in words: 
        wordlist.append(w.word) 
        typelist.append(w.flag) 
all_dic=pd.DataFrame(columns=['word','type','count']) 
all_dic['word']=wordlist 
all_dic['type']=typelist 
all_dic['count']=1 
all_dic=all_dic[all_dic['type']!='x']##剔除标点符号 
 
df_word_count=all_dic[['word','type','count']].groupby(['word','type'],as_index=False).sum() 
##上面的方式得到所有非标点符号的分词以及其词性type和总的计数值count,也许有更简单的方法... 
df_word_count_n=df_word_count[df_word_count['type']=='n']##得到所有名词 
df_word_count_n.sort_values(by=['count'],ascending=False,inplace=True)##对所有名词按照count由高到低排序 
#df_word_count_n.head()##得到高频的名词 
 
df_word_count_a=df_word_count[df_word_count['type']=='a']##得到所有形容词 
df_word_count_a.sort_values(by=['count'],ascending=False,inplace=True)##对所有名词按照count由高到低排序 
 
df_word_count_d=df_word_count[df_word_count['type']=='d']##得到所有副词 
df_word_count_d.sort_values(by=['count'],ascending=False,inplace=True)
df_word_count_v=df_word_count[df_word_count['type']=='v']##得到所有动词 
df_word_count_v.sort_values(by=['count'],ascending=False,inplace=True)

    做文本处理,实际上很多时候还是得人工多看,然后把一些关键词放入词库(特别是医疗方向的词库,暂时没有看到合适的词库),然后分词进行词频统计。如果不进行自定义分词(特别是医疗行业分词,专业性极强,在大部分公开中文自然语言处理包里面都不会有相关词组),那么分词得出的结论一般是‘医生’,‘不’,‘是’,‘月’,‘中心’等等毫无意义的词。
    自定义词组后,得到结果如下:

参考:https://blog.csdn.net/qq_21238927/article/details/80172619
https://blog.csdn.net/flysky1991/article/details/73948971
https://blog.csdn.net/yibo492387/article/details/78783041
http://www.cnblogs.com/jiayongji/p/7119065.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微博作为全球最大的中文社交媒体平台之一,每天都会发布大量的文字信息,其中包括无数的用户评论。利用Python爬虫技术,我们可以快速地获取并整理这些评论信息,进而生成一份详细的生词云图,从而方便用户针对不同的关键词进行分析和学习。 首先,我们需要使用Python库中的beautifulsoup4和requests来爬取微博评论数据。这些库可以帮助我们快速地获取到经过封装的HTML代码,从而抓取所需数据。接着,我们可以使用jieba和wordcloud两个Python库以及一些其他的数据处理和可视化工具,来对抓取的评论进行处理,并生成云图。 具体来说,我们需要通过编写Python代码,实现以下几个主要步骤: 第一步,我们需要获取微博评论数据。使用requests库可以访问目标网页并获取到所有页面的HTML代码。如果该网页需要登录,我们可以使用selenium实现自动化登录。 第步,我们需要处理评论数据。首先利用beautifulsoup4解析获取到的HTML代码,提取出我们所需的评论数据。接着使用jieba将评论进行分词,统计每个词语的出现频率,并将结果以字典形式保存。 第三步,我们需要生成云图。使用wordcloud库来生成词云,可以快速方便的将处理后的数据可视化展现。可以自定义云图的样式和主题,并根据需要调整字体、颜色等参数。 最后,我们可以将云图保存为图片或PPT等格式,并使用其他数据处理和分析工具来进一步分析抓取到的微博评论数据,以及对所涉及的关键词进行学习和研究。 ### 回答2: Python语言可以帮助我们实现自动化爬取社交媒体上的数据,比如微博评论。我们可以通过Python的第三方库BeautifulSoup、requests等,将微博评论的HTML代码解析出来,并将其中的文本数据提取出来。接着,我们可以用jieba分词库对微博评论中的文本进行分词,将其转化为一组词语,方便后续的统计分析。 在分词之后,我们可以用Python的第三方库WordCloud将这些词语进行可视化。WordCloud库能够实现词云的制作,词云是将大量的单词云朵状的排列在一起,形成类似云的形状的一种图案。在词云中,单词的大小和出现的频率成正比,频率越高的单词会出现在词云的中心位置,而频率较低的单词则会出现在词云的边缘位置。 制作微博评论生词云的步骤,大致包括以下几步:爬取微博评论,用jieba分词将文本转化为一组词语,统计每个词语出现的频率,然后用WordCloud库对词频进行可视化,生成生动形象的词云图。 除此以外,Python还可以结合其他第三方库和工具,对生成的词云图进行更深入的操控,比如设置词云的形状、颜色、字体等等,使得结果更加个性化且符合需求。 ### 回答3: Python是一种程序语言,其强大的网络爬虫库使得它成为研究微博评论的理想工具。使用Python爬取微博评论的过程包括三个主要步骤:登录微博,抓取评论数据和生成词云。 首先,登录微博是必不可少的,因为只有登录成功才能访问评论的数据。这可以通过使用selenium等库自动模拟用户登录进行实现。完成登录后,我们可以获取所需的微博ID和评论页面URL。 第步是抓取评论数据。我们可以使用Python库如beautifulsoup和requests等,访问评论页面,提取所需评论数据并保存到本地文件或数据库中。我们还要确保我们抓取到足够量的数据,以便于后续处理。 最后,我们需要将评论数据转化为词云。Python中有一些非常强大的词云生成库,例如wordcloud和jieba库,可以帮助我们将大量文本数据转化为美观的词云。我们可以按照自己的设计风格来生成词云,如调整文字颜色,字号和布局等。 综上所述,使用Python爬取微博评论生成词云的过程相对较为简单,但其中要注意一些具体的细节和技巧,例如如何处理中文文本、如何提取评论数据等。需要掌握一定的措施来处理这些问题,并根据需要进行优化,以达到最好的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值