2016-05-17 5 views
0

私はスタンフォードposttagerツールキットを使用して学術論文の単語リストにタグを付けています。ここでは、この部分の私のコードは次のとおりです。python stanford posttager、javaコマンドはしばらくの間実行した後に失敗しました

st = StanfordPOSTagger(stanford_tagger_path, stanford_jar_path, encoding = 'utf8', java_options = '-mx2048m') 
    word_tuples = st.tag(document) 

文書がnltk.word_tokenize由来の単語のリストであり、彼らはmormal学術論文から来るので、通常はある言葉(主に3000から4000)の数千。私は10000以上のファイルを処理する必要がありますので、これらの関数を呼び出しています。私のプログラムワード270個のファイルで設定された小規模なテストの罰金が、ファイルの数が大きくなったときに、プログラムは、このエラー(Javaヒープ領域の2G)を配る:このエラーはすぐに発生していないことを

raise OSError('Java command failed : ' + str(cmd)) 
OSError: Java command failed 

注意実行後、実行の時間の後に発生します。私は本当にその理由を知らない。これは3000〜4000語があまりにも多いためですか?助けをありがとうございました!(悪い版のため申し訳ありませんが、エラー情報が長すぎる)

答えて

0

私はあなたがそう

stanford.POSTagger([...], java_options="-mxSIZEm") 

Cfのようなタガーの設定によりdocsをJavaスタックを増加しようとしていると仮定デフォルトは1000です。

def __init__(self, [...], java_options='-mx1000m') 

テストするためには、それはデータセットのサイズに問題がある場合、あなたは文章の中にテキストをトークン化することができ、例えばPunkt Tokenizerを使用して、タグ付けした直後に出力します。

0

私はこのエラーに直面した後、コードに私の解決策です.Basically増加するheapsizeは、それを解決しました。

import os 
java_path = "C:\\Program Files\\Java\\jdk1.8.0_102\\bin\\java.exe" 
os.environ['JAVAHOME'] = java_path 

from nltk.tag.stanford import StanfordPOSTagger 
path_to_model = "stanford-postagger-2015-12-09/models/english-bidirectional-distsim.tagger" 
path_to_jar = "stanford-postagger-2015-12-09/stanford-postagger.jar" 
tagger=StanfordPOSTagger(path_to_model, path_to_jar) 
tagger.java_options='-mx4096m'   ### Setting higher memory limit for long sentences 
sentence = 'This is testing' 
print tagger.tag(sentence.split()) 
関連する問題