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

前言:
此篇博客用于记录调用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.rhkb.cn/news/474344.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G的SUCI、SUPI、5G-GUTI使用场景及关系

使用场景(来源于对23.501、23.502、33.501、23.003的理解) 1、UE初始注册时,根据HN Public Key把SUPI加密成SUCI,并发送初始注册请求 2、AMF转发SUCI给AUSF和UDM进行认证,并获取解密后的SUPI 3、AMF根据SUPI生成一个5G-GUTI,并保…

2. kafka 生产者

一. 生产者消息发送流程 在消息发送的过程中,涉及到了两个线程:main线程和Sender线程。Producer发送的消息会分别经过Interceptors(拦截器),Serializer(序列化器),Partitioner(分区器)最终到达RecordAccumulator,Recor…

web应用安全和信息泄露预防

文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…

智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁

近日,贵州省贵阳市中级人民法院对余华英拐卖儿童案做出了一审宣判,判处其死刑,剥夺政治权利终身,并处没收个人全部财产。这一判决不仅彰显了法律的威严,也再次唤起了社会对拐卖儿童犯罪的深切关注。 余华英自1993年至2…

计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用 计算机编程中的测试驱动开发(T…

【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】

目录 一、全局锁 二、表级锁 1.表锁 2.元数据锁 3.意向锁 三、行级锁 1. 行锁 2.间隙锁 3.临建锁 锁是处理并发情况下,对数据的一致性的关键因素,也是并发情况下对效率影响非常大的。 1、全局锁:锁定表中所有数据。 2、表级锁:…

thinkphp6 入门(2)--视图、渲染html页面、赋值

use think\facade\View;View::assign([name > ThinkPHP,email > thinkphpqq.com]);View::assign(data,[name > ThinkPHP,email > thinkphpqq.com]); View::fetch(index);助手函数 view(index, [name > ThinkPHP,email > thinkphpqq.com ]); 模板输出 {$na…

百度智能云 VectorDB 优势数量 TOP 1

近日,IDC 发布了《RAG 与向量数据库市场前景预测》报告,深入剖析了检索增强生成(RAG)技术和向量数据库市场的发展趋势。报告不仅绘制了 RAG 技术的发展蓝图,还评估了市场上的主要厂商。在这一评估中,百度智…

MySQL索引的底层实现原理是什么?

MySQL索引的底层实现主要基于B树数据结构。B树是一种平衡多路查找树,具有以下特点: 1、树的所有叶子节点都位于同一层: 这确保了从根节点到每个叶子节点的路径长度相同,保证了查询效率的一致性。 2、节点中的数据按键值大小有序…

手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导

手写数字识别(神经网络入门) 文章目录 手写数字识别(神经网络入门)实验概述实验过程数据准备模型实现线性变换层前向传播反向传播更新参数整体实现 激活函数层(ReLU)前向传播反向传播整体实现 Softmax层&am…

在MATLAB中导入TXT文件的若干方法

这是一篇关于如何在MATLAB中导入TXT文件的文章,包括示例代码和详细说明 文章目录 在MATLAB中导入TXT文件1. 使用readtable函数导入TXT文件示例代码说明 2. 使用load函数导入TXT文件示例代码说明 3. 使用importdata函数导入TXT文件示例代码说明 4. 自定义导入选项示例…

ks 小程序sig3

前言 搞了app版的快手之后 (被风控麻了) 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程, github也有开源的工具代码 自行搜索 因为我们需要调试代码,所以就用了下开源的工具 (可以用chrome的F12功能&a…

解决Spring Boot整合Redis时的连接问题

前言 在使用Spring Boot整合Redis的过程中,经常会遇到连接问题,尤其是当Redis服务部署在远程服务器上时。 问题描述 当你尝试连接到Redis服务器时,可能会遇到以下错误: org.springframework.data.redis.connection.PoolExcept…

算法--“汽车加油”问题.

def greedy():n 100 # 汽车满油后可行驶的最大距离d [50, 80, 39, 60, 40, 32] # 加油站的距离k len(d) # 加油站的数量# 检查是否有加油站距离超过汽车的最大行驶距离for dist in d:if dist > n:print(no solution)returnnum 0 # 加油次数current_position 0 # 当…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日,2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办,电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合,满足高…

sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!

Less-5 上来先进行查看是否有注入点,判断闭合方式,查询数据列数,用union联合注入查看回显位,发现到这一步的时候,和前四道题不太一样了,竟然没有回显位??? 我们看一下源…

【qt】控件3

1.setToolTip和setToolTipDuration setToolTip这个函数用来设置提醒内容 setToolTipDuration这个函数用来设置提醒时间 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->help->setToolTip("按下这个按键就可以提…

STM32 使用 STM32CubeMX HAL库实现低功耗模式

STM32 使用 HAL 库的低功耗模式测试使用 ...... 矜辰所致前言 上次画了一个 STM32L010F4 最小系统的板子,也做了一些基本测试,但是最重要的低功耗一直拖到现在,以前在使用 STM32L151 的时候用标准库做过低功耗的项目,现在都使…

js实现导航栏鼠标移入时,下划线跟随鼠标滑动

话不多说&#xff0c;上代码&#xff1a; html代码&#xff1a; <div class"nav clearfix"><div class"bottomLine"></div><ul class"clearfix"><li class"nav__item"><a href"./index.html&…

React教程第二节之虚拟DOM与Diffing算法理解

1、什么是虚拟DOM 虚拟DOM 是javascript的一个对象&#xff0c;是内存中的一种数据结构&#xff0c;以树的形式存储UI的状态&#xff0c;树中的每个节点都代表着真实的DOM&#xff0c;用来描述我们希望在页面看到的 HTML结构&#xff1b; 现在的MVVM 框架&#xff0c;大多使用…