近期在服务器上新装了个LTP库,运行时报错KeyError: ‘transformer_config’
如图
搞了半天,终于从官方文档找到了原因,是模型版本的问题。如果你的Linux系统是在内网的,则可能需要单独下载跟自己ltp版本所对应的模型。官方注明了LTP 4.1.X 与旧版本 v1,v2 模型不兼容,需要更换成v3版本
https://github.com/HIT-SCIR/ltp/blob/master/MODELS.md
注意:
ltp 库读取 .tgz 格式的模型时会自动将其解压到同一路径下的***-tgz-extracted文件夹中,但更换 tgz 模型文件后,此文件夹并不会被自动覆盖,需要预先删除后,重新运行一下你写的python文件即可自动重新解压。
如果你的Linux是内网,则需要修改一下源码,源码所在位置是/你安装的python路径/python3/lib/python3.7/site-packages/ltp
下的frontend.py
文件(老版本为ltp.py
)[Windows的可以通过一样的方式去修改]
(1)34 行左右的 model_map 参数。
根据你要使用的模型版本(base, small, tiny),把对应的变量修改为模型文件(tgz 文件)路径。
例如,要使用本地 base 版本模型,可以像下列的base这样修改:
model_map = {
'base': '/home/software/base.tgz',
'small': 'http://39.96.43.154/ltp/v3/small.tgz',
'tiny': 'http://39.96.43.154/ltp/v3/tiny.tgz'
}
(2)93 行左右的 path 模型版本参数。
官方源码默认使用 small 版本模型,所以使用 small 模型时不需要修改
修改源码中的 path: str = ‘small’,将 path 变量的值改为要使用的模型类型。
例如要使用 base 版本模型,就像下图这样修改:
懒人建议下载small版本的就好了,根据官方数据,效果差的不多,下载量要少三分之一。
经过本人实际测试small比base快3倍,不过精度会降一点,像东大街北大街这种,base能识别出来,但small就只剩’大街’了,可根据实际需要选择。
至此,解决了bug程序可以正常运行!