当前位置: 首页 > ds >正文

数据分析编程第八步:文本处理

8.1 数据介绍

情感词典 sentiment_lexicon.csv

字段名含义
Word单词
Sentiment_Score情感打分,正面情绪最高 5 分,负面情绪最低 -5 分

8.2 找出客户反馈信息中的高频词汇

第一步:读数,把反馈信息中的字符统一成小写,且去掉两端的空白字符

A
1=file(“sales.csv”).import@tc(customer,feedBack)
2=A1.run(feedBack=trim(lower(feedBack)))

A1 的运行结果:

A2 trim() 函数去掉字符两端的空白符,lower 函数把字符串变成小写。

A2 的运行结果:

第二步:将反馈信息变成单词序列,然后按单词分组统计出现的频次

A
3=A2.conj(feedBack.words())
4=A3.groups(~:value;count(1):Count)
5=A4.sort(-Count)

A3 feedBack.words()表示将 feedBack 变成单词序列,conj() 函数将序列的序列合并成一个大序列

A3 的运行结果:

A4 将 A3 按单词分组汇总,统计每个单词出现的频次

A4 的运行结果:

A5 按单词出现的频次逆序排序,出现频次高的排在前面

A5 的运行结果:

第三步:去掉无意义的词汇

从 A5 的结果可以看出,大量的介词、连词、定冠词等无业务意义的词汇出现频次很高,需要将这些词汇剔除:

A
6[the,to,for,in,i,and,is,my,a,this,was,than,as,after,no,you,would,s,by,never,of,with,up,me,during,it,t,be,on,will,even,please,d,v,or,your]
7=A6.sort()
8=A5.select(!A7.contain@b(value))

A8 从 A5 中选出 value 不在 A7 中的记录,A7.contain@b(value) 中 @b 选项表示,当 A7 按 value 有序时,采用二分法查找,效率更高。

A8 的运行结果:

这种过滤掉无意义词汇后更简洁的结果,能立即突显客户关注的核心议题——产品、质量、服务与交付。企业可利用这些信息,精准识别客户讨论最频繁的业务维度。

8.3 分析客户对产品的满意度

顾客对产品满意还是不满意?情感分析可以帮助回答这个问题。让我们实现一个简单的基于词典的方法:

第一步:读取销售数据中的客户名称和客户反馈,并整理客户反馈内容,转换成单词序列,内容同上例

A
1=file(“sales.csv”).import@tc(customer,feedBack)
2=A1.run(feedBack=trim(lower(feedBack)))
3=A2.derive(feedBack.words():Words)

A3 将 feedBack 转成单词序列,并存储在新添加的字段 Words 中。

A3 的运行结果:

双击任意行的 Words 字段值,可以看到:

第二步:读取情感词典

A
4=file(“sentiment_lexicon.csv”).import@ct()

A4 的运行结果:

第三步:将情感词典和客户反馈单词序列关联,计算平均情感得分

A
5=A3.derive(A4.align@b(Words:~,Word).avg(ifn(~.Sentiment_Score,0)):Sentiment_Score)

A5 A4.align@b(Words:~,Word) 的含义: 将 A4 和 Words 字段关联,关联值是 Words 的当前成员和 A4 的 Word 字段。.avg(ifn(~.Sentiment_Score,0)) 表示对关联后的结果算平均得分,其中 ifn(~.Sentiment_Score,0) 表示如果 ~.Sentiment_Score 为 null,则取 0,以防有些单词不在词典中。

A5 的运行结果:

第四步:给客户情感得分评级

A
6=A5.derive(if(Sentiment_Score>0.2:“positive”,Sentiment_Score<-0.2:“negative”;“neutral”): Sentiment)

A6 最终得分大于 0.2 的视为 positive, 小于 0.2 的视为 negative,其余均视为 neutral。

A6 的运行结果:

该分析可让您快速了解客户情绪概况。例如,您可能会发现:

  • 65% 的反馈为正面,20% 为负面,15% 为中立
  • 某些产品的负面反馈明显多于其他产品
  • 特定地区的客户反馈往往更加积极
  • 客户情绪随时间推移呈现改善趋势

这些洞察能帮助您:

  • 定位需要改进的环节
  • 追踪产品服务优化后的成效

8.4 客户讨论主题分析

除了情感倾向,您可能还想了解客户讨论的具体主题。我们可以实施一个基于关键词的简易主题分类方案:

第一步:读取销售数据中的客户名称和客户反馈,并整理客户反馈内容,转换成单词序列,内容同上例

A
1=file(“sales.csv”).import@tc(customer,feedBack)
2=A1.run(feedBack=trim(lower(feedBack)))
3=A2.derive(feedBack.words().sort():Words)

第二步:产生一个简易的主题词汇表

A
4=[[“price”,“cost”,“expensive”,“cheap”,“affordable”,“fees”,“cheaper”,“charged”,“refund”,“money”,“worth”,“penny”,“buy”,“lower”,“higher”,“overpriced”,],
[“quality”,“durable”,“broke”,“lasting”,“sturdy”,“drops”,“randomly”,“drains”,“interface”,“leak”,“error”,“inconsistency”,“slower”,“freezes”,“resetting”,“overheats”,“compatibility”,“unresponsive”],
[“service”,“support”,“help”,“response”,“staff”,“update”,“released”,“process”,“apology”,“inconvenience”,“patience”,“delivery”,“waited”,“rude”,“follow”,“available”,“late”]]
5= [“price”,“quality”,“service”]
6=A4.new(~.sort():Keys, A5(A4.#):Topics)

A6 的运行结果:

双击其中一行的 Keys 字段,可看到:

第三步:从 A6 中查找和 A3 中的每一个 Words 对应的 Topics,因为 A3 中的 Words 是一个单词的序列,所以可能会存在多个 Topics 的现象

A
7=A3.derive(Words.(A6.select@1(Keys.contain@b(Words.~)).Topics):topic_matches)

A7 select@1的含义是:查找到一条符合条件的记录,就不再继续往下查找

A7 的运行结果:

第四步:从 topic_matches 里找出出现频次最高的 topic 作为 main_topic

A
8=A7.derive(topic_matches.select(~).groups(~:topics;count(1):c).maxp@a(c).id(topics):main_topic)

A8 maxp@a 的选项 @a 的含义:如果最大值有并列的情况,则均选出。

A8 的运行结果:

http://www.xdnf.cn/news/19718.html

相关文章:

  • flex布局order改变排列顺序
  • 前沿科技竞速:脑机接口、AI芯片与半导体生态上的新突破
  • Product Hunt 每日热榜 | 2025-08-31
  • 记录我的第一次挖洞
  • 蓝牙BLE modem调制里面phase manipulation什么意思
  • Proteus8 仿真教学全指南:从入门到实战的电子开发利器
  • 【数据可视化-103】蜜雪冰城门店分布大揭秘:2025年8月数据分析及可视化
  • Dify之插件开发之Crawl4ai 爬虫打包与发布
  • SERL——针对真机高效采样的RL系统:基于图像观测和RLPD算法等,开启少量演示下的RL精密插拔之路(含插入基准FMB的详解)
  • 【STM32】中断软件分支处理( NVIC 和 GIC)
  • Rviz-Gazebo联动
  • C语言数据结构之双向链表
  • 详细介绍 JMeter 性能测试
  • Mac idea 格式化代码快捷键
  • 第 94 场周赛:叶子相似的树、模拟行走机器人、爱吃香蕉的珂珂、最长的斐波那契子序列的长度
  • 【C++】什么是智能指针及应用
  • 六大关键步骤:用MES系统重构生产计划管理闭环
  • 从能耗黑洞到精准智控:ASCB2智慧空开重构高校宿舍用电能效模型
  • 均值滤波和中值滤波的简介、C语言实现和实测
  • Adobe Photoshop 2025 最新下载安装教程,附PS2025下载
  • 【项目】多模态RAG必备神器—olmOCR重塑PDF文本提取格局
  • 智慧水利系统解决方案-水利信息化平台
  • linux连接服务器sftp无法输入中文
  • 直播预告 | Excelize 跨语言实战
  • 代码随想录二刷之“回溯”~GO
  • Linux系统中yum包管理器安装软件时遇到的网络连接问题
  • 线上API接口响应慢?一套高效排查与定位问题的心法
  • 【frontend】w3c的发展历史ToDo
  • 基于Springboot + vue3实现的时尚美妆电商网站
  • MySQL 之索引的结构、分类与语法