在 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://wp.cmyr.ltd/archives/coconlp-record-of-using-pitfalls
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。