2013-03-31 13 views
8

JavaでスタンフォードPOSタグを使用するプログラムを実装したばかりです。Stanford-taggerベースのプログラムのパフォーマンスを向上

数百ワードからなる数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(); 
    } 

} 

答えて

7

アドバイスのメイン1枚ではなくwsj-0-18-bidirectional-distsim.taggerよりも、(一般的なテキストのために、最近のバージョンでは、おそらくより良いか、english-left3words-distsim.taggerwsj-0-18-left3words-distsim.tagger使用することです。双方向タガーのタギング性能は、より細かくはですが、約6倍遅く、約2倍のメモリを使用します。図FWIW:2012年のMacBook Proでは、left3wordsタガを「ウォームアップ」するのに十分なテキストが与えられると、1秒間に約35000語のテキストがタグ付けされます。

メモリ使用に関するもう1つのアドバイスは、大量のテキストがある場合は、妥当なサイズのチャンクでtagString()に渡すようにしてください。一度に、メモリ要件を追加します。

+0

ありがとうございました。 Left3wordsを使用します:) – Ameer

関連する問題