百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

听懂用户们在说什么——UGC文本分析怎么做?

csdh11 2025-02-15 15:09 9 浏览

编辑导语:文本分析对于用户研究来说十分重要,本文作者分享了UGC文本分析的具体方法逻辑,从获取评论数据、预处理评论数据、分析评论数据、主题分析展开阐述,感兴趣的一起来学习一下吧,希望对你有帮助。

如果你的评论区仅有10条用户评论,你可以很轻松地了解他们对这个产品/商品的态度如何以及表达了什么想法。但是,如果是100条,是不是需要稍微花点时间,变得吃力了?

如果是1000条,恐怕需要附上一些数据筛选的方式,一条一条看就不太适合了。即使1000条可以勉强人力处理,但问题是,如果评论的数量扩大到了10000条,别说读懂了,就连翻页都得好长时间,人力就捉襟见肘了。

这时候你需要运用一些文本分析的方法,来帮助你读懂海量的评论文本究竟在表达什么。

一、获取评论数据

最朴实无华的方式当然是Crtl C+Crtl V,将每一条数据手动复制到Excel表格当中。但正如上文所言,人力是有上限的,请让我结合自身经验来分享一下高效点的方法。

1. 如果你想通过编程的方法

在大家都是技术大佬的内网,我不敢班门弄斧,只简单地推荐一下学习路径、科普一下相关概念。

做网络爬虫最易用的语言应该非python莫属,因为上手的门槛很低,在掌握了一系列基本语法,会定义函数后,就可以安装beautiful soup库来开始爬虫之旅。网络上的免费课程非常地多,让人眼花缭乱。

如果你自制力足够,学习能力够强,其实随便一搜,python的基础语法对你来说一定不算难。但如果你学习的时候需要一些交互,趣味对你来说是必要的话,我会推荐你选择风变编程的课程,在线编程,即学即反馈是它的最大优点。学习时间上来看,30小时是足够了的。

2. 如果你想通过无代码的方法

市面上越来越多的不用使用代码就可以实现网络爬取的工具,让本懒人很是快乐。

1)八爪鱼采集器

八爪鱼应该是目前中文互联网曝光度最高的网络抓取工具。

  • 优点:具有一定数量现成的采集模版,有专门的问题解决qq群。
  • 缺点:自定义采集做得并不是很好用,具有一定的上手门槛。

2)后羿采集器

很低调但是很好用的一款网络爬虫工具。

  • 优点:智能采集很智能,识别准确度高,同时自定义流程上手也较为简单。
  • 缺点:价格昂贵,免费版的网速实在令人汗颜。

3)集搜客

  • 优点:集文本分析的部分功能于一体,可以一站式实现较多需求;
  • 缺点:爬虫功能实在不好用,远不如后裔采集器。

如果你的爬取要求不是很复杂的那种,个人推荐使用后羿采集器来爬取,慢就慢点,大不了,开着电脑给它挂一晚上?

二、预处理评论数据

1. 评论内容分词与去词

1)分词是什么,为什么这样做

Why?我爬取下来了咋还要分词,「分词」又是个什么东东?速速听我说来,我们都知道,计算机和人脑的区别在于理性与感性,计算机为了更高效地处理数据,需要做出一些更符合计算机运行逻辑的加工,分词就是其中一种。

举个栗子:我今天驾驶宝马的汽车前往商场了。

经过分词处理后:我/今天/驾驶/宝马/的/汽车/前往/商场/了。

就是这样,经过了分词的文本,将更利于计算机来进行统计分析。

在分词系统的推荐上,我认为NLPIR-ICTCLAS汉语分词系统会比较好使,这是它的官网,有下载地址以及简单的功能介绍。

2)去词呢

与分词同一步调的,是「去词」。去词一般来说是去除停用词(Stopwords),意指可以忽略的词。在文本分析中,一些特定的词语或字不提供信息价值(或提供很少),而为了提高效率,产出更可直接用于解读的分析结果,我们会选择在正式的文本分析前,将它们去除掉。

同样举个栗子,这里经过分词的句子:我/今天/驾驶/宝马/的/汽车/前往/商场/了。

经过去除停用词后,它变成了:我/今天/驾驶/宝马/汽车/前往/商场(一些停用词表中,「我」以及「今天」都在其列,为了方便理解,举的例子并未去除这两个词)。

就是这样,去除停用词的目的在于提高信息密度,提高计算机分析产生结果的效率以及方便人为解读结果。

去词一般不会成为一项专门的流程,而是被混在分词过程中。停用词表是需要额外准备(一般分词的系统中也会自带停用词表),百度一搜,会有很多的停用词表,csdn和github上也可以随意下载,不做赘述。

三、分析评论数据

做完评论文本数据的预处理后,就进入到具体的分析阶段了。文本分析的方法与目的是高度相关的,因此难以全部囊括,就简单聊几个通用的、容易上手的。

注:下文几个分析方法并不存在直接的次序关系。

1. 情感分析

「情感分析」,顾名思义是用来判断文本情感倾向的,一般来说会分为积极、中性与消极情感,也可以根据打分的高低,分一分极端积极/消极的情况。

但是如果想要细化到喜怒哀惧悲嗔爱就难以通过简单的三方工具做到了,需要自己构建词库,暂且不提,菜鸟本人也在修炼ing。

用一些工具/平台来实现情感分析,那么精度只能说差强人意而已,不能做到尽善尽美,简单推荐罢。

  1. 首先是很古老的一个软件,rost cm6。是由武汉大学在很久之前编写的,据我所知往后的(十)几年里并没有进行任何更新。
  2. 上文提到的可以用于网络爬取的集搜客也可以进行情感分析,而且据它介绍,自己的情感分析准度要比rost cm6高上不少以期获得用户的青睐。

好用的软件只推荐这两个,因为市面上能直接拿来用的工具实在太少。但是如果加一步调用api的话,其实百度开放平台/讯飞开放平台/腾讯云智以及一些大神们都有很成熟的解决方案,想必精度也会更高。

2. 词频分析

讲道理,词频分析很难称得上什么高大上的分析方法,只是把词语出现的频率直白地展现出来而已。一段文本在经历过去除停用词、分词之后,便都是落单的词语了,数数数出来就行。上文提到的NLPIR分词系统、rost cm6、集搜客都能很轻松地做到。

额外提一嘴,在这个过程中,词频分析的精度取决于分词的精度。如果你发现词频分析的结果不是很让人满意,不妨多试试几套分词系统,然后也可以自定义一下词库,避免特定的词语被分开。

举个栗子:「夏日泳池」「冬日泳池」作为某个酒店专门的两个泳池,我们会更期待他们以组合的形式而非「夏日」「冬日」以及「泳池」的形式出现。

至于如何让词频分析可视化一点,好看一点,自然是做一张大家都熟悉的词云图,这里推荐Wordart


https://wordart.com/create,纯净免费无广告,便民实用。

3. 网络语义共现

「语义网络共现」的目的在于可视化的展现词语与词语之间的关系。而生成一个语义网络共现图的的基础在于建立起词语的共现矩阵。行文至此,感受到不动用编程手段的话,能使用的工具越发寥寥。

关于语义网络共现,仍然需要祭出rost cm6,它有一个很方便的功能,可以一键式生成语义网络。

一键生成的语义网络会有两个问题:

  1. 一是精度不够好,因为rost cm6本身的分词做得不是很好,自然影响到后续的共现矩阵的构建,可以导入已经分好词的文件代替它,可以做到一定程度上的优化;
  2. 第二个是图片不够美观,这个问题的优化措施是,将rost cm6生成的共现矩阵导出,再将这个表格导入到Gephi软件中生成语义网络共现图,会好看很多。

(图源google)

四、主题分析

或许再难避开编程手段,我做到主题分析的这一步,使用的是Python的现成代码,做简单的调参来满足自己的需求。功能实现的主要过程离不开一个模型,其名为「lda」。

「lda」的功能描述为试图找到两类物体或事件的特征的一个线性组合,以能够特征化或区分它们(据百度)。

亲测在短文本分析的领域,无论是中文还是英文都表现地挺差的,搜索了解到,原因可能出现在

短文本的特征稀疏性上。

因此,在面对短文本居多的评论领域,不太推荐使用lda来做主题聚类分析。

所以,如果是游记类的长文本,可以尝试用lda主题聚类来做分析,但在短文本的数据集中,lda的表现难称优秀。而我在这一方面也并未具备见解性的看法,便不斗胆做推荐分享了。

本文由 @ 我叫徐知鱼 原创发布于人人都是产品经理,未经作者许可,禁止转载

题图来自 unsplash,基于 CC0 协议

相关推荐

探索Java项目中日志系统最佳实践:从入门到精通

探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...

用了这么多年的java日志框架,你真的弄懂了吗?

在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...

物理老师教你学Java语言(中篇)(物理专业学编程)

第四章物质的基本结构——类与对象...

一文搞定!Spring Boot3 定时任务操作全攻略

各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...

你还不懂java的日志系统吗 ?(java的日志类)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

谈谈枚举的新用法--java(java枚举的作用与好处)

问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...

你还不懂java的日志系统吗(javaw 日志)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

Java 8之后的那些新特性(三):Java System Logger

去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...

Java开发中的日志管理:让程序“开口说话”

Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...

吊打面试官(十二)--Java语言中ArrayList类一文全掌握

导读...

OS X 效率启动器 Alfred 详解与使用技巧

问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...

Java中 高级的异常处理(java中异常处理的两种方式)

介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...

【性能调优】全方位教你定位慢SQL,方法介绍下!

1.使用数据库自带工具...

全面了解mysql锁机制(InnoDB)与问题排查

MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...

看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...