当前位置:   article > 正文

基于开源模型对文本和音频进行情感分析_emtion2vec是什么

emtion2vec是什么

应用场景

  1. 从商品详情页爬取商品评论,对其做舆情分析;
  2. 电话客服,对音频进行分析,做舆情分析;
  3. 通过对商品的评论分析,作为对供应商打分/商品个性化排序等依据;

模型选用

  • 文本,选用了通义实验室fine-tune的structBERT 模型,基于大众点评的评论数据进行训练,使用预训练模型进行推理,CPU 能跑,支持模型微调,基本上不用微调了,因为他是基于电商领域的数据集进行训练的,基本够用,training dataset 使用了大众点评等平台数据,可本地部署;

参考论文:

title: Incorporating language structures into pre-training for deep language understanding
author:Wang, Wei and Bi, Bin and Yan, Ming and Wu, Chen and Bao, Zuyi and Xia, Jiangnan and Peng, Liwei and Si, Luo
journalarXiv preprint arXiv:1908.04577,
year:2019

版本依赖:

modelscope-lib 最新版本

推理代码:

  1. semantic_cls = pipeline(Tasks.text_classification, 'damo/nlp_structbert_sentiment-classification_chinese-base')
  2. comment0 = '非常厚实的一包大米,来自遥远的东北,盘锦大米,应该不错的,密封性很好。卖家的服务真是贴心周到!他们提供了专业的建议,帮助我选择了合适的商品。物流速度也很快,让我顺利收到了商品。'
  3. result0 = semantic_cls(input=comment0)
  4. if result0['scores'][0] > result0['scores'][1]:
  5. print("'" + comment0 + "',属于" + result0["labels"][0] + "评价")
  6. else:
  7. print("'" + comment0 + "',属于" + result0["labels"][1] + "评价")
  8. comment1 = '食物的口感还不错,不过店员的服务态度可以进一步改善一下。'
  9. result1 = semantic_cls(input=comment1)
  10. if result1['scores'][0] > result1['scores'][1]:
  11. print("'" + comment1 + "',属于" + result1["labels"][0] + "评价")
  12. else:
  13. print("'" + comment1 + "',属于" + result1["labels"][1] + "评价")
  14. comment2 = '衣服尺码合适,色彩可以再鲜艳一些,客服响应速度一般。'
  15. result2 = semantic_cls(input=comment2)
  16. if result2['scores'][0] > result2['scores'][1]:
  17. print("'" + comment2 + "',属于" + result2["labels"][0] + "评价")
  18. else:
  19. print("'" + comment2 + "',属于" + result2["labels"][1] + "评价")
  20. comment3 = '物流慢,售后不好,货品质量差。'
  21. result3 = semantic_cls(input=comment3)
  22. if result3['scores'][0] > result3['scores'][1]:
  23. print("'" + comment3 + "',属于" + result3["labels"][0] + "评价")
  24. else:
  25. print("'" + comment3 + "',属于" + result3["labels"][1] + "评价")
  26. comment4 = '物流包装顺坏,不过客服处理速度比较快,也给了比较满意的赔偿。'
  27. result4 = semantic_cls(input=comment4)
  28. if result4['scores'][0] > result4['scores'][1]:
  29. print("'" + comment4 + "',属于" + result4["labels"][0] + "评价")
  30. else:
  31. print("'" + comment4 + "',属于" + result4["labels"][1] + "评价")
  32. comment5 = '冰箱制冷噪声较大,制冷慢。'
  33. result5 = semantic_cls(input=comment5)
  34. if result5['scores'][0] > result5['scores'][1]:
  35. print("'" + comment5 + "',属于" + result5["labels"][0] + "评价")
  36. else:
  37. print("'" + comment5 + "',属于" + result5["labels"][1] + "评价")
  38. comment6 = '买了一件刘德华同款鞋,穿在自己脚上不像刘德华,像扫大街的。'
  39. result6 = semantic_cls(input=comment6)
  40. if result6['scores'][0] > result6['scores'][1]:
  41. print("'" + comment6 + "',属于" + result6["labels"][0] + "评价")
  42. else:
  43. print("'" + comment6 + "',属于" + result6["labels"][1] + "评价")

运行结果:

'非常厚实的一包大米,来自遥远的东北,盘锦大米,应该不错的,密封性很好。卖家的服务真是贴心周到!他们提供了专业的建议,帮助我选择了合适的商品。物流速度也很快,让我顺利收到了商品。',属于正面评价
'食物的口感还不错,不过店员的服务态度可以进一步改善一下。',属于正面评价
'衣服尺码合适,色彩可以再鲜艳一些,客服响应速度一般。',属于正面评价
'物流慢,售后不好,货品质量差。',属于负面评价
'物流包装顺坏,不过客服处理速度比较快,也给了比较满意的赔偿。',属于正面评价
'冰箱制冷噪声较大,制冷慢。',属于负面评价
'买了一件刘德华同款鞋,穿在自己脚上不像刘德华,像扫大街的。',属于负面评价

  • 音频,选用了通义实验室 fine-tune的emotion2vec微调模型,CPU 能跑,可本地部署;

参考论文:

title: Self-Supervised Pre-Training for Speech Emotion Representation
author:Ma, Ziyang and Zheng, Zhisheng and Ye, Jiaxin and Li, Jinchao and Gao, Zhifu and Zhang, Shiliang and Chen, Xie
journal:arXiv preprint arXiv:2312.15185
year:2023

开源地址:

Official PyTorch code for extracting features and training downstream models with emotion2vec: Self-Supervised Pre-Training for Speech Emotion Representation

版本依赖:

modelscope >= 1.11.1

funasr>=1.0.5

推理代码:

  1. from funasr import AutoModel
  2. model = AutoModel(model="iic/emotion2vec_base_finetuned", model_revision="v2.0.4")
  3. wav_file = f"{model.model_path}/example/test.wav"
  4. res = model.generate(wav_file, output_dir="./outputs", granularity="utterance", extract_embedding=False)
  5. print(res)
  6. scores = res[0]["scores"]
  7. max_score = 0
  8. max_index = 0
  9. i = 0
  10. for score in scores:
  11. if score > max_score:
  12. max_score = score
  13. max_index = i
  14. i += 1
  15. print("音频分析后,情感基调为:" + res[0]["labels"][max_index])

运行结果

rtf_avg: 0.263: 100%|██████████| 1/1 [00:02<00:00,  2.64s/it]
[{'key': 'rand_key_2yW4Acq9GFz6Y', 'labels': ['生气/angry', '厌恶/disgusted', '恐惧/fearful', '开心/happy', '中立/neutral', '其他/other', '难过/sad', '吃惊/surprised', '<unk>'], 'scores': [0.06824027001857758, 0.030794354155659676, 0.20301730930805206, 0.09666425734758377, 0.12219445407390594, 0.06753909587860107, 0.13648174703121185, 0.11873088777065277, 0.1563376784324646]}]


音频分析后,情感为:恐惧/fearful

Process finished with exit code 0

总结

对于行业内的预训练模型,使用模型能力进行预处理,同时结合产品规则进行精细化筛选,基本能满足中小团队的需求;如果该预训练模型能使用 CPU 完成推理,那成本就更加容易控制了;可以开发相应的服务接口提供给业务系统使用;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/136362
推荐阅读
相关标签
  

闽ICP备14008679号