Nlp 斯坦福解析器处理时间和内存消耗

Nlp 斯坦福解析器处理时间和内存消耗,nlp,stanford-nlp,Nlp,Stanford Nlp,我正在从命令行使用Stanford解析器: java -mx1500m -cp stanford-parser.jar;stanford-parser-models.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser -outputFormat "penn" edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz {file} 当我在一个包含27个单词的句子上运行该命令时,Java进

我正在从命令行使用Stanford解析器:

java -mx1500m -cp stanford-parser.jar;stanford-parser-models.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser -outputFormat "penn"  edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz {file}
当我在一个包含27个单词的句子上运行该命令时,Java进程将消耗100MB内存,解析需要1.5秒。 当我在一个包含148个单词的句子上运行该命令时,Java进程将消耗1.5GB的内存,解析需要1.5分钟

我使用的机器是Windows7和intel i5 2.53GH

这些处理时间合理吗?
解析器是否有官方的性能基准

如前所述,您的问题在于句子分割,因为您的数据允许任何输入(有/没有正确的标点符号)。但不知何故,你有资本是件好事。所以你可以试试下面的方法,用大写字母来分割句子

免责声明:如果你的句子以
I
开头,那么下面的食谱不会有多大帮助=)

“有些事情必须改变,必须重新安排对不起,我没有 我想伤害我的小女孩我无法承受这个重量 这沉重的世界是如此的晚安,晚安,晚安,晚安 晚安,晚安,晚安,晚安,晚安希望 一切都会好起来的,爱这么多,学这么多,但我 不会在那里教你哦,我知道我可以接近但我试着 我很抱歉我不是故意伤害我的孩子
女孩,我无法承受如此沉重的世界的重量 晚安晚安晚安晚安晚安晚安晚安, 晚安晚安晚安晚安晚安晚安晚安晚安, 晚安,希望一切顺利,是的,谢谢你。”

在Python中,您可以尝试以下方法来分段句子:

sentence = "Something gotta change It must be rearranged I'm sorry, I did not mean to hurt my little girl It's beyond me I cannot carry the weight of the heavy world So good night, good night, good night, good night Good night, good night, good night, good night, good night Hope that things work out all right So much to love, so much to learn But I won't be there to teach you Oh, I know I can be close But I try my best to reach you I'm so sorry I didn't not mean to hurt my little girl It's beyond me I cannot carry the weight of the heavy world So good night, good night, good night, good night Good night, good night, good night, good night Good night, good night, good night good night, good night Hope that things work out all right, yeah Thank you."

temp = []; sentences = []
for i in sentence.split():
  if i[0].isupper() and i != "I":
      sentences.append(" ".join(temp))
      temp = [i]
  else:
    temp.append(i)
sentences.append(" ".join(temp))
sentences.pop(0)
print sentences

然后,按照下面的步骤分析句子。

(1)假设27个单词的时间为1.5秒,听起来很合理。你会期望可能的语法分析会增加很多,每个句子有更多的单词。问题是你们为什么要分析一个148个单词的句子?对于自然语言处理来说,这可能不是一个非常自然的句子。(2) 没有人喜欢对NLP工具进行基准测试,它体积庞大,除非你使用一些分布式计算技巧,否则不会是实时的。同意@2er0:148可能是一个太长的句子。你能告诉我们这个句子吗?谢谢,@2er0和雷诺。我想你回答了我的问题。我只是想确认1.5秒到27个单词的句子是合理的,并且我没有做完全错误的事情。我同意148个字的句子是不合理的。我之所以要分析这么长的句子,是因为我有一个可以接收任何输入的系统。当句子末尾没有点标点时,NLP引擎无法正确分割它们-这就是为什么我有时会得到这么长的句子。句子太长了,所以我需要将其分割为2条注释:“有些事情必须改变它必须重新安排对不起,我不是有意伤害我的小女孩我无法承受这个沉重的世界的重量所以晚安晚安晚安晚安晚安晚安晚安晚安晚安晚安晚安晚安希望一切都会好起来爱你,要学的东西太多了,但我不会在那里教你哦,我知道我可以接近你,但我尽我最大的努力去接近你我很抱歉我不是故意伤害我的小女孩我无法承受沉重的世界的重量所以晚安,晚安,晚安,晚安,晚安,晚安晚安,晚安晚安,晚安晚安,晚安,晚安,晚安晚安,晚安希望一切顺利,是的,谢谢。”