gpt4 book ai didi

java - 提高基于斯坦福标注器的程序的性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:48 24 4
gpt4 key购买 nike

我刚刚在 Java 中实现了一个使用斯坦福词性标注器的程序。

我使用了一个几 KB 大小的输入文件,由几百个单词组成。我什至将堆大小设置为 600 MB。

但它仍然很慢,有时会用完堆内存。我怎样才能提高它的执行速度和内存性能?我希望能够使用几 MB 作为输入。

  public static void postag(String args) throws ClassNotFoundException

{

try

{

File filein=new File("c://input.txt");

String content = FileUtils.readFileToString(filein);

MaxentTagger tagger = new MaxentTagger("postagging/wsj-0-18-bidirectional-distsim.tagger");

String tagged = tagger.tagString(content);

try
{
File file = new File("c://output.txt");
if (!file.exists())
{
file.createNewFile();
}

FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write("\n"+tagged);
bw.close();

}
catch (IOException e)
{
e.printStackTrace();
}

} catch (IOException e1)
{
e1.printStackTrace();
}

}

最佳答案

主要的第一条建议是使用 wsj-0-18-left3words-distsim.tagger(或者可能更好,english-left3words-distsim.tagger 在最近的版本中,用于一般文本),而不是 wsj-0-18-bidirectional-distsim.tagger。虽然双向标记器的标记性能略微更好,但它的速度要慢大约 6 倍,并且使用大约两倍的内存。图 FWIW:在 2012 MacBook Pro 上,当提供足够的文本来“预热”时,left3words 标记器将以每秒大约 35000 个单词的速度标记文本。

关于内存使用的另一条建议是,如果您有大量文本,请确保以合理大小的 block 将其传递给 tagString(),而不是全部作为一个巨大的字符串,因为整个字符串将被立即标记化,增加了内存需求。

关于java - 提高基于斯坦福标注器的程序的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com