赞
踩
方法一:
https://github.com/hanxiao/bert-as-service 详情参考该github
使用肖涵博士的bert-as-service,这里笔者使用的为python3.5,tensorflow1.13版本,同时还需要pip安装如下几个包,
pip install bert-serving-server
pip install bert-serving-client
因为bert还需要调用预训练好的中文模型,因此也需要下载,这里给一个下载的百度云盘
链接:https://pan.baidu.com/s/1ijpQ5urwW5T2wH6FqKYIvg
提取码:9v0a
随后在cmd进入bert-serving-start.exe所在的文件夹,一般这个文件夹在python安装路径下的Scripts文件夹下
如上所示随后再输入bert-serving-start -model_dir E:/chinese_L-12_H-768_A-12
这样就开启了bert-as-service,但是注意这个cmd窗口千万不要关闭,之后的操作将转到pycharm中进行,自己创建一个py文件然后输入如下代码,如果产生了向量矩阵则说明配置成功。
from bert_serving.client import BertClient
bc = BertClient()
bc.encode([‘你好‘])
即可输出“你好”的词向量表示,但是我们一般情况下是使用一个txt文本来直接转化词向量的,所以仅仅这样是不够的
笔者这里用如下代码来转化词向量:
这样可以将1.txt中的每一行文字转化成词向量表示的矩阵,但是仍然有一个问题,bert默认最大句子的长度为32,去除首尾CLS和SEP则只剩下30个字符,因此这里在处理文本时会出现只能处理一行30个字符的情况,超过30个部分则不会算进去,所以如何在cmd下修改这个bert-as-service的参数是一个问题。
更新:评论区新提出修改参数方法--可以在启动时设置输入序列长度,例如: bert-serving-start -max_seq_len 512 -cpu -model_dir E:\\project\\NLP\\chinese_L-12_H-768_A-12
方法二:
另外还有另外一种将文本转化成词向量的方法,即通过自己download Bert源码来修改代码完成操作
通过在源码中直接调用Bert.encode方法来完成词向量的转化,同时可以在args.py这个配置文件中修改配置来使得上述提到的问题得以解决,如下所示修改序列的最大长度。
这个方法暂时还有一点问题,当输入的文本资源过大时会使得程序报错,因此这里只是给出一个想法,大家可以自己试试,笔者将在之后解决后再更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。