斯坦福解析器内存不足

2024-10-01 09:16:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python代码在Ubuntu中运行Stanford解析器。我的文本文件是500MB,我正试图解析它。我有一个32GB的RAM。我在增加JVM的大小,但我不知道它是否真的在增加,因为每次我都会遇到这个错误。请帮帮我

WARNING!! OUT OF MEMORY! THERE WAS NOT ENOUGH  ***
***  MEMORY TO RUN ALL PARSERS.  EITHER GIVE THE    ***
***  JVM MORE MEMORY, SET THE MAXIMUM SENTENCE      ***
***  LENGTH WITH -maxLength, OR PERHAPS YOU ARE     ***
***  HAPPY TO HAVE THE PARSER FALL BACK TO USING    ***
***  A SIMPLER PARSER FOR VERY LONG SENTENCES.      ***
Sentence has no parse using PCFG grammar (or no PCFG fallback).  Skipping...
Exception in thread "main" edu.stanford.nlp.parser.common.NoSuchParseException
    at edu.stanford.nlp.parser.lexparser.LexicalizedParserQuery.getBestParse(LexicalizedParserQuery.java:398)
    at edu.stanford.nlp.parser.lexparser.LexicalizedParserQuery.getBestParse(LexicalizedParserQuery.java:370)
    at edu.stanford.nlp.parser.lexparser.ParseFiles.processResults(ParseFiles.java:271)
    at edu.stanford.nlp.parser.lexparser.ParseFiles.parseFiles(ParseFiles.java:215)
    at edu.stanford.nlp.parser.lexparser.ParseFiles.parseFiles(ParseFiles.java:74)
    at edu.stanford.nlp.parser.lexparser.LexicalizedParser.main(LexicalizedParser.java:1513)

Tags: thetonoparsernlpjvmjavaat
1条回答
网友
1楼 · 发布于 2024-10-01 09:16:00

您应该将文本文件分成小块,并一次一个地将它们交给解析器。因为解析器为一次给出的整个“文档”创建内存中的表示(比磁盘上的文档大几个数量级),所以尝试一次性给它一个500MB的文档是一个非常糟糕的主意。在

你也应该避免使用超长的“句子”,如果随意的或网络上的文本缺少句子分隔符,或者你在给它提供大表格或胡言乱语时,很容易出现这种情况。避免这个问题的最安全的方法是设置一个限制最大句子长度的参数,例如-maxLength 100。在

您可能想尝试一下神经网络依赖性解析器,它可以更好地扩展到大型任务:http://nlp.stanford.edu/software/nndep.shtml。在

相关问题 更多 >