bert serving的简单使用(文本向量化)

2023-10-26

不涉及原理,只是快速开始使用
更详细的请参考官方文档
https://bert-as-service.readthedocs.io/en/latest/index.html

可用环境

python==3.7
pip install bert-serving-server bert-serving-client tensorflow==1.13.1 protobuf==3.19.0

1. 下载预训练模型

(下载可能需要一些时间,等待的时候可以先去下一步把python库安了)
可以直接去github下载
https://github.com/google-research/bert
在这里插入图片描述
解压后的文件有5个(我使用的是BERT-Base, Uncased这个预训练模型)
在这里插入图片描述

2. 安装python库

pip install bert-serving-server
pip install bert-serving-client

3. 启动服务

在命令行输入

bert-serving-start -model_dir D:\Documents\Code\PythonCode\bert\model\ -num_worker=1

这条指令启动了位于-model_dir地址的bert模型,提供一个工作通道
注意:地址填绝对地址,相对地址可能会出问题(有的人出错,有的人不出错)

启动成功会显示
在这里插入图片描述
一定是显示all set , ready to serve request!才算启动成功

和jupyter notebook一样,在使用Bert的过程中这个命令行窗口要保持开启

4. 使用

from bert_serving.client import BertClient
print(“::0”)
bc = BertClient()
ans = bc.encode([‘First do it’, ‘then do it right’, ‘then do it better’])
print(len(ans[0]))
print(“::1”)

在这里插入图片描述
encode是将句子转换为固定长度向量返回,小型的模型的向量长度为768,大型的为1024

encode接收两种数据形式
一种是list[str],一个列表,里面是为分词的句子,之后得到的矩阵每一行对应一个句子
比如

[‘First do it’, ‘then do it right’, ‘then do it better’]

另一种是list[list[str]],一个列表,里面是分词完毕的句子词语的列表,同样得到的矩阵也是一行对应一个句子
比如

[[‘First’, ‘do’, ‘it’], [‘then’, ‘do’, ‘it’, ‘right’], [‘then’, ‘do’, ‘it’, ‘better’]]

关于坑

tensorflow版本

一开始安装的是最新的2.2版本,启动服务的时候报错

TypeError: cannot unpack non-iterable NoneType object

卸载当前的tensorflow,重新安装tensorflow
或者直接覆盖

pip install tensorflow==1.13.0rc1

内存问题(num_worker)

官方给的教程写的基本指令是num_worker=4
我电脑太渣,瞬间CPU和内存飙满,但是也不给个报错MemoryError,废了好大的劲才发现是内存问题
这种有可能是卡在中间,也不报错,所以一定要记住all set , ready to serve request!才算启动成功

一开始还是要从num_worker=1开始
一般启动过程中会有几秒资源占用很高,过去之后会降下来

最长序列长(max_seq_len)

如果你提供给他的句子比较长,可能会出现下面这个警告
在这里插入图片描述
bert默认句子最长是25,超过了的词直接被放弃,
举个栗子
这里有一个长句(句子随便找的)

“In the special period, Shanghai will take advantage of ChinaJoy platform on industry collaboration, international cooperation and create better business environment for the industry, according to the organizers including local government bureaus.”

一共32个词,它只会取前25个作为特征来生成向量

如何解决
回到上面的第3步,
更改启动参数
加一条“max_seq_len=40”
比如

bert-serving-start -model_dir D:\Documents\Code\PythonCode\bert\model\ -num_worker=1 -max_seq_len=40

如果你不知道自己的数据最长多少,那就设置成None,动态调节,但相应的计算量就上去了,像我这样电脑渣的,
小风扇呼呼转,分分钟CPU、内存爆炸给你看。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bert serving的简单使用(文本向量化) 的相关文章

  • Pickle 没有 __reduce__ 方法的 dict 子类不会加载成员属性

    我需要确保dict只能接受某种类型的对象作为值 它也必须是可挑选的 这是我的第一次尝试 import pickle class TypedDict dict dict type None def init self dict type ar
  • 将列表转换为字符串并返回

    我有一个虚拟机 它从嵌套在列表中的元组读取指令 如下所示 0 4738 0 36 0 6376 0 0 存储这种机器代码程序时 文本文件是最简单的 必须写成字符串 这显然很难转换回来 是否有任何模块可以将字符串读入列表 以可读的方式存储列表
  • python sqlite ValueError:无法解析日期时间字符串

    我有一个 txt 文件 用于填充 sqlite 表 FoodConsumed tb class FoodConsumed Tb db Model tablename foodconsumed tb id db Column db Integ
  • 使用 selenium 3.8.1 设置 chrome 代理的问题

    我曾经在 chrome 上设置代理 如下面的代码所示 但是当我更新到 selenium 3 8 1 时 代理停止工作 我没有收到任何错误 它只是不使用代理服务器 我不知道为什么 我的 chromedriver 也是最新的 options w
  • pycharm自动将制表符转换为空格

    我正在使用 pycharm IDE 进行 python 开发 它对于 django 代码来说工作得很好 因此怀疑将制表符转换为空格是默认行为 但是在 python IDE 中到处都会出现错误 因为它无法自动将制表符转换为空格 有没有办法实现
  • R 中的 Python 链接式数据整理

    我是 Python 新手 来自 R 环境 我喜欢 R 的一件事是能够编写代码 在一个可读的代码块中对数据进行多种转换 但对我来说 在 Python 中找到这种风格的代码非常困难 我想知道你们中的一些人是否可以指导在哪里可以找到有关该特定风格
  • 替换 pytest 中的测试用例继承?

    背景 在 Python 中unittest https docs python org 3 library unittest html在框架中 在一组基本测试上使用继承来将整套测试应用于新问题 并且偶尔添加其他测试是一种相当常见的习惯用法
  • 如何从 BNF 生成随机程序

    我知道我的问题听起来有点模糊 但我在网上找不到任何教程 我不是在寻求答案 而是寻求更多的解释 BNF 的一个例子
  • Python 中的双 SSH 隧道

    今天 我在命令行中使用 ssh 将端口从远程服务器转发 使用中间服务器到我的本地计算机 这是我在 shell 中使用的命令 ssh user remote server L 2443 localhost 433 此 ssh 会话使用 ssh
  • 如何获取 Tkinter 标签文本?

    我正在制作一个用户将从中选择的地址列表 并且将返回地址文本 我需要使用Tkinter Label因为Tkinter Listbox不允许换行 关键是没有 get Label 类中的类似方法 我知道我可以做类似的事情 v StringVar
  • 有没有办法可以保留子线程的上下文局部变量?

    目前 我创建了一个库来记录后端调用 例如对boto3 and requests库 然后根据一些数据 例如响应的状态代码等 填充全局 数据 对象 我原来有data对象作为全局的 但后来我意识到这是一个坏主意 因为当应用程序并行运行时 data
  • 使用 Matplotlib 和 TeX 实现均匀间距

    我正在为数学课绘制一些图表 但我无法在绘图图例中正确地获得和平定义的间距 我目前正在使用 对于 TeX 中的单个空间 但会遇到一种情况 其中一个空间比另一个空间稍远 这可能是由于左边的方程占用了多少空间 这是我的代码 import matp
  • 调整 MLPRegressor 超参数

    我一直在尝试调整 MLP 模型的超参数来解决回归问题 但总是收到收敛警告 这是我的代码 def mlp model X Y estimator MLPRegressor param grid hidden layer sizes 50 50
  • Scikit-learn 中的 GridSearchCV 输出问题

    我想执行超参数搜索以在 sklearn 中选择预处理步骤和模型 如下所示 pipeline Pipeline combiner PolynomialFeatures dimred PCA classifier RandomForestCla
  • Python:UnboundLocalError:赋值前引用的局部变量“count”[重复]

    这个问题在这里已经有答案了 我不明白我的 Python 代码有什么问题 它给了我以下错误 Traceback most recent call last File main py line 77 in
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 无法在 BeautifulSoup 中获得正确的链接

    我正在尝试解析一些 HTML 并且想提取与特定模式匹配的链接 我正在使用find使用正则表达式的方法 但它没有给我正确的链接 这是我的片段 有人可以告诉我我做错了什么吗 from BeautifulSoup import Beautiful
  • f2py:公开“已使用”模块的参数

    我认为这个问题已经在某个地方得到解决 但我花了大量的时间四处寻找答案 包括深入研究源代码 我试图将问题放在第一段中 其余部分显示了问题的基本示例 我正在尝试编译一个包含USE指向另一个更通用的模块的语句 我更愿意将使用的模块分开 以便它可以
  • 传递到 Flask 的可能路线列表?

    我正在学习 Flask 有一个关于动态路由的问题 是否可以传入接受的路由列表 我注意到any转换器具有潜力 但很难找到使用中的示例 基本上我有不同的端点组 它们应该在它们之间触发相同的操作 这就是我的意思 cities New York L
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下

随机推荐

  • Drools规则引擎

    Drools规则引擎 Drools规则引擎 1 Drools简介 2 Drools入门案例 2 1 业务场景 2 2 maven坐标 2 3 编写xml配置文件 多方法 2 4 创建drl规则文件 2 5 单元测试 3 Drools基础语法
  • 东宝商城项目(三)——用户注册功能的实现(后端)

    本文是我做项目过程中记录的学习笔记 用于记录项目开发流程 第一次做项目有很多不懂的地方 本文可读性暂时很差 我目前的学习目标是走完项目开发流程 知道独立开发一个项目并让项目上线需要经历哪些步骤 需要学到哪些知识点 现将遇到的问题记录如下 发
  • 100流明相当于多少w_20平米客厅用多少瓦的LED灯合适?怎么选择合适的亮度?

    说到照明用灯 离不开三个要素 亮度 照度和色温 亮度大家都明白意思 指的是眼睛所感受到的光线刺激强度 照度则是指单位面积获得的亮度 色温则可以理解为指灯光的颜色 常见如白光 暖光和暖白 下面详细说一下这三者与平常家庭用灯的关系和搭配 一 L
  • 【数学建模】动态规划作业

    目录 一 作业1爬楼梯 二 作业二机器人走格子 三 机器人走有障碍的格子 四 投掷头子的N种方法 五 编辑距离 一 作业1爬楼梯 作业1 爬楼梯 题目来源 力扣70 爬楼梯 链接 https leetcode cn com problems
  • 投资理财笔记——理财的心理建设 & 基金概念入门

    文章目录 理财的心理预期 基金概念入门 理财的心理预期 学习投资理财的目的 是为了更清晰的认识到自己买的理财产品是什么 它的风险有哪些 是否能够承担这样的风险 其目的并不是在于赚更多的钱 因为风险和收益是成正比的 目的在于更清晰的认识 认识
  • 作为2019年的Java程序员,如何能快速进阶成长?

    面试候选人的时候 有个比较常见的问题 对于一份工作 你最关注哪些因素 回答往往是薪资待遇 公司氛围 公司发展前景 工作强度等 个人比较欣赏的答案是 个人能力的成长 想收获一个薪资好 公司发展前景好的工作机会 关键和根本还是取决于个人的能力
  • 考研:研究生考试(五天学完)之【政治考试】之研究生学霸重点知识点总结之考试内容各科占比及其知识结构重点(马概、毛中特、史纲、思修)

    考研 研究生考试 五天学完 之 政治考试 之研究生学霸重点知识点总结之考试内容各科占比及其知识结构重点 马概 毛中特 史纲 思修 目录
  • Python中的logger和handler到底是个什么鬼

    原文地址 http www cnblogs com anpengapple 最近的任务经常涉及到日志的记录 特意去又学了一遍logging的记录方法 跟java一样 python的日志记录也是比较繁琐的一件事 在写一条记录之前 要写好多东西
  • 小程序的应用生命周期、页面生命周期

    一 应用生命周期 小程序从启动 gt 运行 gt 销毁的过程 应用生命周期函数 应用生命周期函数在 app js 中声明 执行顺序如下 onLaunch 小程序初始化完成时触发 全局只触发一次 先于所有页面周期函数执行 onShow 小程序
  • IT公司智力题(持续跟新中)

    请听题 用赵本山在 买车 的语气 1 有1000瓶药物 但是其中有一瓶是有毒的 小白鼠吃了一个星期以后就会死掉 请问 在一个星期内找出有毒的药物 最少需要多少只小白鼠 解答 用二进制的思路去思考 1000瓶药代表了1000种状态 那么100
  • 边界值分析法:

    测试用例一 测试用例介绍 等价类划分法 边界值分析法 重点知识目标 测试用例的定义 测试用例核心要素 等价类划分法 边界值分析法 能力目标 掌握测试用例的定义 掌握测试用例核心要素 掌握等价类划分法 掌握边界值分析法 测试用例核心要素 用例
  • 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记

    一 图像识别问题简介及经典数据集 图像识别问题希望借助计算机程序来处理 分析和理解图片中的内容 使得计算机可以从图片中自动识别各种不同模式的目标和对象 图像识别问题作为人工智能的一个重要领域 在最近几年已经取得了很多突破性的进展 其中 卷积
  • Java基础学习系列--(二)static关键字概述

    2 1 概述 以前我们定义过如下类 public class Student 成员变量 public String name public char sex 男 女 public int age 无参数构造器 public Student
  • 最新重磅!ChatGPT插件商店全开放!我发现了未来互联网的新入口

    四月初 当ChatGPT首次提出联网和插件计划并放出测试Demo的时候 曾着实让人们惊艳了一把 从当时的内部测试来看 ChatGPT不仅能够比搜索引擎更加智能地来帮你查找最新信息 还能够变身为 App Store 成为万能应用生态的总入口
  • 论文笔记 -- SOFT: Softmax-free Transformer with Linear Complexity

    文章目录 SOFT Softmax free Transformer with Linear Complexity Background Motivation 投影相关工作 Contribution Related work 对于自注意力矩
  • oracle 查询schema下的所有表, 字段, 和注解 的SQL

    oracle 查询schema下的所有表 字段 和注解 SELECT a TABLE NAME b column name c COMMENTS b data type b DATA LENGTH b NULLABLE FROM selec
  • Go语言基础【函数】

    函数 定义一个函数 func 函数名 形参列表 返回列表 函数体 函数有以下几种定义方式 第一种 func 函数名字 第二种 func 函数名字 返回值 return 返回值 第三种 func 函数名字 参数列表 第四种 func 函数名字
  • No suitable driver found for jdbc:mysql://127.0.0.1:3306 问题

    Exception in thread main java sql SQLException No suitable driver found for jdbc mysql 127 0 0 1 3306 at java sql Driver
  • athas热更新代码

    热更新 热更新有什么用 比如 生产环境有一个逻辑不小心写错了 导致资产损失 如果修改代码 重新发布到生产环境 需要的时间比较长 而且生产环境重启 也可能会影响到其他的用户 热更新 可以不用重启环境 修改代码对应的字节码 达到修改功能的目的
  • bert serving的简单使用(文本向量化)

    不涉及原理 只是快速开始使用 更详细的请参考官方文档 https bert as service readthedocs io en latest index html 文章目录 可用环境 1 下载预训练模型 2 安装python库 3 启