[自然语言处理入门]Ch12. demo_train_parser, 出现java内存溢出现象


书中第12章,12.5小结,P340-P341,运行示例程序pyhanlp-master/tests/book/ch12/demo_train_parser.py,报jpype._jclass.OutOfMemoryError: Java heap space 错。
本人电脑win10,64位,使用的是python版本的hanlp,python3.7并且使用的是Anaconda3所提供的,处理器2.3Ghz,内存8G

(2) 另外,还是在这个程序内,训练parser耗费的时间很多,图中显示1191秒之后程序还会运行很长时间才会出现如上错误,并自然退出,想请教一下大家在运行这个程序时是否也是训练非常耗时间?想确认一下是不是我的电脑配置不够.

(3) 在这个程序中 from tests.test_utility import ensure_data 这句总是报错,我已经查询过作者hankcs大大回答类似的问题帖,但是我在该程序原目录中运行总是出现报错 no module named “test_utility”,按照hankcs所说检查了PYTHONPATH以及使用的是pycharm自动加入系统路径,仍有这种报错。我现在的解决办法是,把test_utility代码内容整个复制到demo_train_parser.py中,因此demo_train_parser.py中不用from tests.test_utility import ensure_data,直接使用ensure_data 函数即可。
我检查了一下,找不到模块test_utility的原因可能是:from tests.test_utility import ensure_data 时由于anaconda3自带了一个名为tests的库,jetbrains://pycharm/navigate/reference?project=pyhanlp-master&path=E:/Anaconda3/Lib/site-packages/tests/init.pyfrom tests.test_utility import ensure_data时会自动从anaconda3的tests调用,因此就没有test_utility模块了,想请教一下大家这种重名调用的问题该如何解决。

谢谢大家!谢谢hankcs!

1 Like

迭代 1/20 100.00% 耗时 772 秒。UAS=83.23 LAS=80.84 最高分!保存中…

任何项目用tests命名测试代码是惯例做法,不清楚为什么anaconda会被冒天下之大不韪地装上一个叫tests的库。建议卸载这个库或删除相应文件夹。

1 Like

谢谢解答!! 20次迭代已完成。但是还想请教一下,每次运行这个程序都必须重新训练一遍吗?迭代20次得到的模型是否可以直接使用呢?感谢您拨冗指教!

KBeamArcEagerDependencyParser.train最后一个参数就是保存路径。

我测试的是java版的示例,直接运行demo

也是报内存溢出的异常