快速入门¶
在这篇文章中,我们会详细的讲解一个最简单的用例,让您快速的掌握OKNLP的基础使用方法。
基础使用方法¶
要使用OKNLP,主要需要以下三个步骤:
引入oknlp工具包
创建并加载模型
调用模型
接下来的代码将会逐步的进行演示。
引入工具包¶
你可以像引入其它Python库一样引入OKNLP工具包,它主要依赖于`onnxruntime`库。
import oknlp
如果在引入的过程中出现了错误,例如提示 OSError: libcublas.so.10: cannot open shared object file: No such file or directory ,请根据 安装方法 文档中的指示,检查你的安装步骤是否正确、是否已经安装好了工具包所必须的依赖。
在引入OKNLP工具包的过程中,还有可能会出现以下的 警告 ,不过这是正常的情况,并不会影响到程序的正常运行,也不会对运行结果产生影响。
>>> import oknlp
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
创建并加载模型¶
在使用OKNLP的算法之前,我们需要先创建并加载模型。在这里,我们以中文分词为例子进行演示。
model = oknlp.cws.get_by_name("bert")
在第一次加载模型时,OKNLP工具包会先下载模型的参数,并显示一个数据下载的进度条。而在之后的使用过程中,模型加载将直接使用之前下载好的参数。
下载好的模型参数会保存在用户目录下的``.oknlp``文件夹中。
调用模型¶
在模型加载完成后,可以像调用普通函数一样来调用模型。OKNLP的模型通常输入都是一个 Python 的 list 对象。例如在分词任务中,输入就是一个句子的 list 。
和其它传统的分词工具不同(例如 jieba ),OKNLP使用了神经网络模型,因此一次输入多个句子可以得到更好的运行吞吐量。
>>> result = model([
... "我爱北京天安门",
... "天安门上太阳升"
... ])
>>> result
[['我', '爱', '北京', '天安门'], ['天安门', '上', '太阳', '升']]
在目前的版本中,OKNLP的接口是同步阻塞的,而异步的调用接口将会在之后的版本中提供。
完整示例代码¶
1 2 3 4 5 6 7 8 9 10 11 | # 引入工具包
import oknlp
# 加载模型
model = oknlp.cws.get_by_name("bert")
result = model([
"我爱北京天安门",
"天安门上太阳升"
])
print(result)
|
输出结果
output
[['我', '爱', '北京', '天安门'], ['天安门', '上', '太阳', '升']]
线程 / 进程安全说明¶
OKNLP工具包提供的模型接口都是线程/进程安全的,这意味着你可以在多个线程/进程中同时调用同一个模型,并获得正确的结果。
在通常情况下,我们更建议您使用多线程来调用模型,这样可以获得更高的吞吐量和更小的系统资源消耗。