2011-06-23 11 views
1

私は非常に大きなテキストファイル(約3.77GB)を扱っており、すべての文章を抽出しようとすると、特定の単語がテキストファイルに出現してテキストファイルに書き出されます。単語の文脈を取得する

だから、大きなテキストファイルはテキストだけ多くの行です:

line 1 text .... 
line 2 text .... 

私は、テキストファイルからユニークワードのリストを抽出し、各単語がで発生するすべての文章を抽出し、書き出したいています単語に関連付けられたコンテキスト。ユニークワードのリストが大きいので、私はで単語リストのチャンクを処理するので

fout=open('word_context_3000_4000(4).txt','a') 

for x in unique_word[3000:4000]: 
    fout.write('\n'+x+'\t') 
    fin=open('corpus2.txt') 
    for line in fin: 
      if x in line.strip().split(): 
        fout.write(line) 
      else: 
        pass 
fout.close() 

:理想的には、出力ファイルは、私が持っている現在のコードは、このようなものである

word1 \t sentence 1\n sentence 2\n sentence N\n 
word2 \t sentence 1\n sentence 2\n sentence M\n 

の形式を取りますチャンク。しかし、どういうわけか、コードはすべての単語のコンテキストを取得できず、一意の単語リストの最初の数百語のコンテキストのみを返しました。

誰も以前に同様の問題に取り組んでいますか?私はPythonを使用しています、btw。

ありがとうございます。

答えて

1

最初の問題ですが、finを閉じることはありません。

たぶん、あなたはこのような何かを試してみてください:

fout=open('word_context_3000_4000(4).txt','a') 

fin=open('corpus2.txt') 
for x in unique_word[3000:4000]: 
    fout.write('\n'+x+'\t') 
    fin.seek(0)  # go to the begining of the file 
    for line in fin: 
      if x in line.strip().split(): 
        fout.write(line) 
      else: 
        pass 
fout.close() 
fin.close() 
関連する問題