0%

2019-10-04 cocoNLP 使用踩坑实录

2019-10-04 cocoNLP 使用踩坑实录

NLP 推荐:funNLP cocoNLP

在 github 上找到一个 nlp 的包,只可惜只有 python 版的,因此去速成了一下。在这个过程中踩了很多坑,特此记录。

使用的包叫 cocoNLP ,具有强大的中文分词功能,可以抽取自然语言中的邮箱、手机号、身份证号、手机归属地、运营商、地址信息等等,是一个十分强大的 NLP 包。

包本身是用 python 写的,不过在使用过程中我发现,它的一个依赖HanLP 是基于 jtype 用 python 来调用 java 包的。这也就是说,要使用这个包,本身要具有 python 和 java 的环境才行。作为一个程序猿我自然都是有的。

好的,下面开始讲讲踩坑。

踩坑一:Could not reserve enough space for object heap error

表面上看是 jvm 的内存不足,搜出来的结果也大多是这个。

实际上的问题是,32 位的 python 只能调用 32 位的 java,所以会无法申请到足够的空间来运行。

python 的版本问题是本次的核心。

解决问题的办法就是更换 python 版本为 64 位。

踩坑二:ImportError: No module named “_Jtype”

表面上是找不到_Jtype,实际上问题还是和上面一样,就是版本问题。

在这里要注意一个细节,对于电脑上有多个版本 python 的人尤其要注意。在 pip 的时候,pip 使用的 python 版本。

在这里我可以猜测,pip 会下载调用自身的 python 版本对应的包。也就是说,如果 pip 是被 32 位 python 调用,那么下载下来的包就是 32 位的。因此,这里的坑就在于,pip 要使用对应版本的 python。最简单的方法就是直接 cd 到对应 pip 目录下载执行 pip

踩坑三:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

是的没错,这个问题实际上和上面还是一样的。是 32 位的 python 调用 64 位的 java 失败。因此更换 python 版本就行了。

踩坑四:ValueError: 配置错误: 数据包……\data 不存在,请修改配置文件中的 root

依赖 HanLP 中的 data 没有下载,前往https://github.com/hankcs/HanLP下载即可

并在 python-3.6.8\Lib\site-packages\pyhanlp\static\hanlp.properties 文件中修改根路径。注意,此处貌似有两个配置文件,修改没有.in 后缀的那个

总结

综上,最大的问题就在于要统一 python 和 java 和系统的位数。以前下载 python 的时候没注意下载成了 32 位的,这才导致了那么多坑。

本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/2e6ce36c.html
版权声明:转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!