【市场分析】如何从NLP的角度对用户需求进行分析(一)

一、前言​​​​​​​

        随着中国经济的崛起,宠物行业以惊人的速度迅猛发展,宠物的角色也从单纯的赏玩转变为精神的寄托。养宠人群的不断扩大带来了宠物产品需求端膨胀,宠物产品行业受到资本市场的青睐逐渐兴起。

        然而供需之间存在的信息不对称往往是一个行业发展的绊脚石,不能好好理解受众的需求,势必会影响生产商的成长速度和成长方向。因此本文选择宠物产品行业新兴发展品类——宠物清洁产品,从大数据与自然语言处理(NLP)的角度深入挖掘用户对清洁类产品的需求。

二、社群类平台网络文本挖掘-豆瓣

        豆瓣小组是豆瓣网旗下的用户分享社区,其主要定位即“对同一话题感兴趣的人的聚集地”,包含影视、读书、音乐、旅行、人文、摄影等领域,这些小组构筑起了豆瓣网庞大的社群体系,形成了众多亚文化种类。其自发性讨论的社交模式以及审批制入组的运营模式能够极大程度上减少广告、水军等冗杂数据的可能性。

2.1 爬虫的实现

        豆瓣网站中的宠物用品大集合小组,是集合了9820位已养宠人群交流宠物产品的小组。通过Python利用Requests库和Bs4爬取其中前40页987个帖子标题及内容,实现代码如下:

import random
import csv
import time    # 引入时间库 定义请求间隔
import requests ##导入requests
from bs4 import BeautifulSoup ##导入BeautifulSoup库
ip_list=[
    '81.70.124.99:443', '114.250.63.38:443', '112.115.57.20:3128' #用多个ip地址请求request防止被ban
    ]
user_agent_list = [
     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30",
     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
     "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
     "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
     "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
     "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
     "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
     "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
     "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
    ]#用多个请求头request防止被ban

file=open("c://NLP//豆瓣小组.CSV", 'w',newline='')#你想保存的位置
csv_writer = csv.writer(file)
for i in range(40):#页码 爬取前40页信息
    url = 'https://www.douban.com/group/mooeoo/discussion?start='+str(i*25)
    UA = random.choice(user_agent_list)
    headers = {'User-Agent': UA}
    random_ip = random.choice(ip_list)
    proxy = {'http': random_ip}
    try:
        rec = requests.get(url, headers=headers,proxies=proxy)
        Soup = BeautifulSoup(rec.text, 'lxml')
        a_list = Soup.find_all('a',class_="",title=True)#取出所有的a标签
        for a in range(len(a_list)):#
            title = a_list[a]['title']  # 取出a标签的href 属性
            href = a_list[a]['href']
            print(title,"第%d页第%d个"%(i+1,a+1))
            title_1=[]
            title_1.append(title+"第"+str(i+1)+"页第"+str(a+1)+"个")
            title_1.append(href) #取出小组帖title
            csv_writer.writerows([title_1])
            title_1=[]
            time.sleep(0.8)#插入请求间隔,防止被ban
    except:
        print ('connect failed',random_ip)
        random_ip = random.choice(ip_list)
csv_file.close()

        为防止被豆瓣反爬机制检测,选择使用多请求头和间隔请求的方式,将采集后垃圾数据与多次重复数据进行清洗后共采集到有效数据878条,数据整合后维度如图:

标题内容采集时间发帖人
自己开个大宠爱和N1猫砂的车 第4页第5个2021-01-14猫车老司机
【车团】宠馨宝香波护毛素!!走起 第5页第1个2021-01-14遇见
猫架 猫碗 猫垫子 全新颜色超多 第5页第12个2021-01-15Natalie
真正的软便克星!第5页第16个2021-01-16SEVEN

 2.2数据预处理&数据探索

        利用Python的pandas我们对数据进行基本的描述性统计,并利用Jieba库进行分词,将数据进行标注后得到:

import pandas as pd
data=pd.DataFrame(df["标题内容"])
data.head(10)
data.info()
data.describe(include=["object","float"])

from collections import Counter
import jieba

with open('宠物用品.txt',encoding="utf-8") as f:
    words = f.read()
Counter(list(jieba.cut(words))).most_common(20)

        分词后利用字典去除常用停用词如“的”,“之”“,了”等后绘制词云图:

filename = "宠物用品.txt"
with open(filename) as f:
 mytext = f.read()

def stopwordslist():
    stopwords = [line.strip() for line in open('stopdict.txt',encoding='UTF-8').readlines()]
    return stopwords #加载停用词字典

def seg_depart():
    for word in mytext:
        if word not in stopwords:
            if word != '\t':
                outstr += word
            outstr += " "
    return outstr #获得去除停用词后词列


from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")

     

    为了更清晰地分析豆瓣小组已养宠人群发言中的诉求,我们将这237个词语再进行汇总分类,以便更好地看到豆瓣已养宠人群对宠物日常各方面的关注情况,可以将结果大致分为宠物食品、宠物清洁、产品价位、保健护理、品牌店铺、日用工具、宠物美容七大类,并统计各类产品的词频。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值