2

文章にタグを付けるために使用するサーバーと対話します。このサーバーは、ポート でローカルに起動されます2020

たとえば、以下で使用されているクライアントを介してJe mange des pâtes .ポートで送信すると、サーバーが応答し、結果は常に 1 行のみになり、入力が空でない場合は常に 1 行になります。2020Je_CL mange_V des_P pâtes_N ._.

現在、このサーバーを介して 9,568 個のファイルにタグを付ける必要があります。最初の 9,483 個のファイルは、期待どおりにタグ付けされています。その後、に書き込もうとするとIOError、具体的にはエラーが発生するため、入力ストリームは閉じている/いっぱいになっている/何か他のものに見えます。Broken Pipestdin

最初の 9,483 個の最初のファイルをスキップすると、最初のエラーの原因となったファイルを含め、最後のファイルが問題なくタグ付けされます。

私のサーバーは、何か怪しいことが起こったことを示すエラー ログを生成しません。しばらくするとパイプが故障するのは正常ですか?

log = codecs.open('stanford-tagger.log', 'w', 'utf-8')
p1 = Popen(["java",
            "-cp", JAR,
            "edu.stanford.nlp.tagger.maxent.MaxentTaggerServer",
            "-client",
            "-port", "2020"],
           stdin=PIPE,
           stdout=PIPE,
           stderr=log)

fhi = codecs.open(SUMMARY, 'r', 'utf-8') # a descriptor of the files to tag

for i, line in enumerate(fhi, 1):
    if i % 500:
        print "Tagged " + str(i) + " documents..."
    tokens = ... # a list of words, can be quite long
    try:
        p1.stdin.write(' '.join(tokens).encode('utf-8') + '\n')
    except IOError:
        print 'bouh, I failed ;(('
    result = p1.stdout.readline()
    # Here I do something with result...
fhi.close()
4

1 に答える 1