【会话文本nlp】对话文本解析库pyconverse使用教程版本报错、模型下载等问题解决超参数调试

news/2024/11/20 22:41:18/

前言:
此篇博客用于记录调用pyconverse库解析对话文本时遇到的问题与解决思路,以供大家参考。

文章目录

  • pycoverse介绍
  • 代码github链接
  • 问题解决
    • 1 [cannot import name ‘cached_download‘ from ‘huggingface_hub‘ 问题解决](https://blog.csdn.net/weixin_41492426/article/details/143215577)
    • 2 [ModuleNotFoundError: No module named ‘huggingface_hub.snapshot_download‘](https://blog.csdn.net/weixin_48030475/article/details/134940914)
    • 3 [Python 解决报错:OSError: [E050] Can‘t find model ‘en_core_web_md‘. It doesn‘t seem to b](https://blog.csdn.net/qq_45956730/article/details/129109559)
    • 4 模型下载失败问题
      • 4.1 先到官网下载模型
      • 4.2 替换成模型下载后位置
    • 5 [nltk 报错](https://blog.csdn.net/zhq426/article/details/102838084)
  • 运行结果截图展示
    • 常见文本解析基本功能
    • 文本分段参数调试
  • 心得

pycoverse介绍

对话分析在塑造金融/联络中心等各个行业的卓越客户体验方面发挥着越来越重要的作用,主要是为了更深入地了解客户,更好地满足他们的需求。这个名为PyConverse的库试图提供工具和方法,可以使用各种NLP技术从多个角度理解对话。

在哪里可以使用pycoverse?

主要用例面向呼叫中心呼叫分析,但Converse提供的大多数工具也可以在其他地方使用。
每一次通话中都隐藏着许多见解,Converse使您能够提取这些见解,并从运营效率、代理效率和监控客户体验等角度计算各种关键绩效指标。
如果你想回答这样的问题:1.发言者在对话中表现出的总体情绪是什么?2.代理商和客户之间是否有过死气沉沉的时期(沉默期)?如果是,多少钱?3.客服对客户有同理心吗?4.平均代理响应时间/平均保持时间是多少?5.通话中说了什么?

pycoverse可以做什么?

 1. 情绪识别2. 移情陈述识别3. 对通话文本分段4. 从通话片段中识别话题5. 计算各种类型的发言人属性:1. 语言属性,如:字数/每句话的字数/否定词等。2. 识别沉默和打断的时段3. 问题识别(识别疑问句)4. 识别无意义的语气词、助词等6. 通过语言属性评估说话者的整体性质,并判断说话者是否:1.健谈,口语流利2.非正式/个人/社交3.目标导向或前瞻/着眼未来/关注过去4.识别抑制因素7.文本摘要(抽象摘要)

代码github链接

converse代码库

【converse代码云盘下载链接】
下载链接: https://caiyun.139.com/m/i?2i3pdpZud0agc 提取码:okvg 复制内容打开中国移动云盘手机APP,操作更方便哦

问题解决

1 cannot import name ‘cached_download‘ from ‘huggingface_hub‘ 问题解决

如下,安装huggingface_hub==0.25.2即可解决

pip install huggingface_hub==0.25.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

2 ModuleNotFoundError: No module named ‘huggingface_hub.snapshot_download‘

报这个错需要升级setence-transformers版本,setence-transformers=2.6不会报错。
但由于pyconverse中需要setence-transformers=2.1,因此我的解决方法是:

在源码site-packages/sentence-transformers/utils.py中,注释掉:
from huggingface_hub.snapshot_download import REPO_ID_SEPARATOR

(不使用远程下载模型,而是自己去官网的镜像地址下载模型,参考4)
在这里插入图片描述

3 Python 解决报错:OSError: [E050] Can‘t find model ‘en_core_web_md‘. It doesn‘t seem to b

报这个错是因为没有安装en_core_web_sm,直接安装en_core_web_sm包即可,由于pyconverse要求Spacy=2.3.5,需要对应en_core_web_sm版本为2.3.0,这里直接给出下载地址:

【en_core_web_sm 2.3.0.tar.gz云盘下载链接】
链接: https://caiyun.139.com/m/i?2i3pdmZfU3Mou 提取码:koss 复制内容打开中国移动云盘手机APP,操作更方便哦
【en_core_web_sm 3.3.0.tar.gz云盘下载链接】
链接: https://caiyun.139.com/m/i?2i3pdJ0QDDfbh 提取码:fgr3 复制内容打开中国移动云盘手机APP,操作更方便哦

下载后,直接pip install en_core_web_sm 2.3.0.tar.gz即可!

4 模型下载失败问题

解决报错“OSError: We couldn‘t connect to ‘https://huggingface.co‘ to load this file”
我的解决方法是:

4.1 先到官网下载模型

https://hf-mirror.com/

在这里插入图片描述

  • all-MiniLM-L6-v2下载:
    在这里插入图片描述
  • valhalla/distilbart-mnli-12-6下载:

在这里插入图片描述

4.2 替换成模型下载后位置

在源码site-packages/pyconverse/utils.py中,将模型位置替换成自己下载后的模型位置,如:
/mnt/d/model_repository/all-MiniLM-L6-v2
/mnt/d/model_repository/valhalla/distilbart-mnli-12-6

注:我是将下载后的模型路径直接写死(虽然不太优雅) ,不通过传参的形式,否则会报错
model = SentenceTransformer(model_name_or_path='/mnt/d/model_repository/all-MiniLM-L6-v2')

在这里插入图片描述

5 nltk 报错

  • 原因是需要下载stopwords.zip,存放到具体位置:
\\wsl.localhost\Ubuntu-22.04\home\yhy\nltk_data\corpora\stopwords.zip
  • 关于存放位置的查看:
打开交互式命令行,输入:
>>> import nltk
>>> nltk.download()

在这里插入图片描述

注意:
将下载器里的serverIndex 
https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
改为: 
http://www.nltk.org/nltk_data/

在这里插入图片描述

如上,Download Directory中的位置即为我们的存放位置!

【stopwords.tip云盘下载链接】
链接: https://caiyun.139.com/m/i?2i3pd9YmUq98u 提取码:jn4g 复制内容打开中国移动云盘手机APP,操作更方便哦

运行结果截图展示

常见文本解析基本功能

  • 找寻电话文本中被打断和沉默的片段
    在这里插入图片描述

  • 找寻电话文本中的语气词/助词
    在这里插入图片描述

  • 找出疑问句式
    在这里插入图片描述

  • 获取语句的情绪
    在这里插入图片描述

  • 获取/分析每个说话人的心理相关性
    在这里插入图片描述

  • 将电话内容分割成更大的文本块(通过语句语义相似性和文本挖掘算法)
    注:此处超参数为默认设置,即w=15,k=10(超参数设置在文章下一部分会提到)
    在这里插入图片描述

文本分段参数调试

可以理解为一个聚类算法,聚类中心数量需要人为指定。此处文本分段需要调试的超参数为w和k【其中w为初始“伪句子块”的固定大小,k为块比较方法中使用的块的大小(以句子为单位)】

在这里插入图片描述
如下,为m=100,k=90时,模型输出的文本分段结果:(可以发现分段数量明显减少,因为初始分块颗粒度增大了,可以理解为聚类中心数量减少了)
在这里插入图片描述

关于m和k的选择需要根据需求、实际情况和实验验证来决定!(我目前也在探索中)

心得

  1. 调用别人写好开源的python包,受到各种版本制约,必要时可以调整源码;
  2. 由于debug时可能无法进入到库函数源码,调试时可以在源库中添加print语句(现在有很多开源包,比如:专门用于文本分析、情感分析的包,版本也不一定稳定)

http://www.ppmy.cn/news/1548593.html

相关文章

微积分第五版课后习题答案详解PDF电子版 赵树嫄

(一) 习题解答与注释 该部分基本上对《微积分》(第五版) 中的习题给出了解答, 并结合教与学作了大量注释。通过这些注释, 读者可以深刻领会教材中基本概念的准确含义, 开阔解题思路, 掌握解题方法, 避免在容易发生错误…

Wireshark中的length栏位

注:Ethernet II的最小data length为46,如果小于,会补全到46. 1.指定网卡抓取的,链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

Vue实现响应式导航菜单:桌面端导航栏 + 移动端抽屉式菜单

在现代Web开发中,为了提升用户体验,响应式设计已成为必备技能。本文将通过Vue.js,创建一个响应式导航菜单,桌面端显示顶部导航栏,移动端则切换为抽屉式菜单,并具备点击遮罩关闭的功能。以下是具体实现步骤。…

MSTP知识点

多生成树协议 在 MSTP(Multiple Spanning Tree Protocol)中,根桥(root)、指定端口(designated port)、备用端口(alternate port)等角色都是确保网络中没有循环并且流量能…

【漏洞复现】某全新H5购物商城系统存在前台任意文件上传漏洞(RCE)

漏洞描述 该源码采用HTML5技术开发,可以完美适配各种移动设备,以及iOS和Android系统。同时,易支付接口更为商家提供了便捷的交易功能,让顾客可以轻松通过手机进行网络支付,享受到更加便捷的购物体验。该源码界面设计十分简洁、清爽,同时还保证了购物流程的顺畅和简便。无…

爬虫日常练习

1.反webdriver自动化检测爬取 有的网站会有检测webdriver的反爬手段,这时候就需要做一些操作防止被网页检测到,下面直接给出固定代码段方法: from selenium.webdriver.support.ui import WebDriverWait# 配置 ChromeOptions 防止被检测 optio…

lua调用C语言函数,在函数中进行类型检查

使用lua_is*函数族进行检查(除了lua_type之外的另一种方式) Lua C API提供了一系列lua_is*函数,如lua_isnumber、lua_isstring、lua_isboolean等,用于检查栈上元素的类型。示例代码如下,假设我们有一个C函数&#xff0…

LabVIEW三针自动校准系统

基于LabVIEW的智能三针自动校准系统采用非接触式激光测径仪对标准三针进行精确测量。系统通过LabVIEW软件平台与硬件设备的协同工作,实现了数据自动采集、处理及报告生成,大幅提高了校准精度与效率,并有效降低了人为操作误差。 一、项目背景…