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的简单使用(文本向量化) 的相关文章

  • 字幕重新格式化以完整句子结尾

    我有以下 srt 字幕 文件 import pysrt srt 01 00 02 14 000 gt 00 02 18 000 I understand how customers do their choice So 02 00 02 1
  • 如何在旧数据库中的 Django 中进行 INNER JOIN ?

    抱歉 我的问题可能很简单 但我是 Django 的新手 真的很困惑 我有一个丑陋的旧表 我无法更改 它有 2 个表 class Salespersons models Model id models IntegerField unique
  • Pandas 用单位插值数据

    大家好 几年来我一直在寻找 Stackoverflow 它对我帮助很大 以至于我以前不需要注册 但今天我遇到了一个使用 Python 与 Pandas 和 Quantities 也可能是 unum 或 pint 的问题 我尽力发表清晰的帖子
  • 如果文件不存在,使用 python 添加一行

    我有一个 xml 文件如下
  • 动态添加字段到数据类对象

    我正在编写一个库来访问 REST API 它返回带有用户对象的 json 我将其转换为 dict 然后将其转换为数据类对象 问题是并非所有字段都是固定的 我想动态添加其他字段 未在我的数据类中指定 我可以简单地为我的对象分配值 但它们不会出
  • 仅选择多索引 DataFrame 的一个索引

    我正在尝试仅使用多索引 DataFrame 中的一个索引创建一个新的 DataFrame A B C first second bar one 0 895717 0 410835 1 413681 two 0 805244 0 813850
  • df.drop(如果存在)

    下面是一个函数 它接受一个文件并删除列名row num start date end date 问题是并非每个文件都有这些列名 因此该函数返回错误 我的目标是更改代码 以便删除这些列 如果存在 但如果某个列不存在则不会返回错误 def re
  • 使用 pandas 删除停用词

    我想从数据框的列中删除停用词 列内有需要拆分的文本 例如我的数据框如下所示 ID Text 1 eat launch with me 2 go outside have fun 我想应用停用词text column所以应该分开 我试过这个
  • Django 星级评定系统和 AJAX

    我正在尝试在 Django 网站上实现星级评级系统 在我的模型中存储评级是排序的 就像在页面上显示分数一样 但我希望用户能够对页面进行评分 基本上从 1 到 5 而无需刷新或更改页面 我发现了以下内容 并且喜欢这里明星的风格 http jv
  • 在 Mac 上运行 Tkinter

    我是一个绝对的新手 我正在尝试为我的学校项目制作 Python GUI 所以我决定使用 Tkinter 当我尝试导入 Tkinter 时 它会抛出以下消息 gt gt gt import tkinter Traceback most rec
  • 为什么在我的例子中 For 循环比 Map、Reduce 和 List 理解更快

    我编写了一个简单的脚本来测试速度 这就是我发现的结果 实际上 for 循环在我的例子中是最快的 这真的让我感到惊讶 请查看下面 正在计算平方和 这是因为它在内存中保存列表还是有意为之 谁能解释一下这一点 from functools imp
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • PyInstaller,规范文件,导入错误:没有名为“blah”的模块

    我正在尝试通过构建 python 脚本py安装程序 http www pyinstaller org 我使用以下命令来配置 生成规范文件并构建 wget pyinstaller zip extracted it python Configu
  • Django的注释框架和CSRF

    据我了解 Django的评论框架 https docs djangoproject com en 1 4 ref contrib comments 专为匿名公众评论而设计 就像您通常在博客或文章下面看到的那样 换句话说 任何人都可以发表评论
  • Numpy 附加到一个空数组

    第一种情况 gt gt gt import numpy as np gt gt gt x np array 0 gt gt gt x np append x 1 gt gt gt x array 0 1 x包含 2 个元素 这是为什么 第二
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 在 folium 中显示栅格数据(不处理任何数据值)。

    我正在尝试使用 folium 显示栅格类型数据 numpy 数组 这是我到目前为止所拥有的 import folium from folium plugins import ImageOverlay import numpy as np f
  • 如何使用DecisionTreeClassifier平衡分类?

    我有一个数据集 其中类别不平衡 课程是0 1 or 2 如何计算每个类别的预测误差然后重新平衡weights相应地在 scikit learn 中 如果您想完全平衡 将每个类别视为同等重要 您可以简单地通过class weight bala
  • Python递归限制与堆栈大小?

    我了解递归中每个递归调用如何堆栈在堆栈上 如果超出堆栈限制 则会出现堆栈溢出 那么为什么Python的sys getrecursionlimit 返回一个数字 递归调用的最大深度 这不取决于我在该递归函数中所做的事情吗 或者它是否以某种方式
  • Python BeautifulSoup 循环表数据

    这里对 Python 非常陌生 我正在尝试从此页面捕获一些数据这一页 https us diablo3 com en item helm 我正在尝试获取两个列表中捕获的项目名称和项目类型 我稍后可以弄清楚如何将它们连接到一张表中 任何帮助都

随机推荐

  • 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 启