2011-02-15 14 views
0

この質問には既に回答済みですが、このプロセスについて記述しているページが見つからない場合は、お詫び申し上げます。私がしようとしているのは、大きなファイル(New York Timesコーパス)を取り出し、split関数を使って単語のリストに変更し、その長いリストから特定の単語を検索することです。私はこのコード大規模なファイル内での操作と検索

words=open('nyt.txt') 
for line in words: 
    print (line) 

でファイルを印刷するのpythonを取得することができたが、私はその後、この関数に()words.splitを使用できるようにしたいと思います。

はこれまでのところ、私は、これは動作しません(私はちょうどこの

words= ('A B. C D E F G A. B C D E F G A B C D E F G A B C D E F G') 

のように入力しますが、むしろコピーするよりも、括弧内NYTを貼り付ける小さなコーパスを使用してプログラムを開発してきましたファイルが大きすぎます)。私はむしろ変数名にファイルをソースしたいと思います。

また、これが以前に尋ねられ、以前に回答されていればごめんなさい。

答えて

1

と呼ばれるものがあります。あなたのケースでは、それは次のようになります。

def words(lines): 
    for line in lines: 
     for word in line.split(): 
      yield word 

これは、行毎にファイルを処理しますので、一度にファイル全体をメモリに読み込む必要はありません。 yieldキーワードは、関数の結果をジェネレータに変換します。使用法:

import sys 
for word in words(sys.stdin): 
    print word 

編集:私は正しくラウンドこの時間は、あなたを理解していれば、あなただけのリストにすべての単語を読みたいですか?簡単です:

lines = open('nyt.txt') 
words = [] 
for line in lines: 
    words.extend(line.split()) 
print words 
+0

行ごとに読み込むことが重要であるかどうかは完全にはわかりません。私が探しているのは、コードを設定して印刷物(単語)を入力できるようにして、問題のファイルを印刷することです。 –

+0

が更新されました。これは役に立ちますか? – Thomas

+0

私は気になることは嫌いですが、これは機能していないようです。つまり、ファイル内のすべての単語を呼び出すことができる名前付きリストに読み込みますが、そのコードを使用すると、行が終わりたいとは思われません。 >>>に戻ります。これは2.7の代わりにpython 3で作業した結果可能でしょうか?そうであれば、おそらく2.7をダウンロードしてコードの残りの部分をコンパチブルにするための小さな変更を加えるだけかもしれません。 –

0

nltkをご覧ください。これは巨大なプロジェクトであり、コーパスを扱うツールを備えています。このプロジェクトはPythonで書かれており、http://www.nltk.org/にあります。

+0

ことに私を指してくれてありがとう。私は自分がやっていることに結びついた何かについて学ぶのが遅すぎると確信しています。 –

+0

あなたは何を達成しようとしているのか分かりませんが、個々の単語を取得したい場合は、各行をスペースと句読点で区切り、結果を変数に追加する必要があります: 'allwords.append .split( '')) ' – marw

0

私はあなたが何を望んでいるのか分かりませんが、このようなものをお探しですか?

words = open('README') 
word_list = [] 
for l in words: 
    word_list.append(l) 

あなたは言葉でより洗練された何かをやっているつもりなら、あなたはNLTKパッケージをご覧ください。

+0

私は確かにNLTKをチェックアウトする必要があります –

0

生む

ターゲット単語がコーパスに

corpus = ('A B C A B C', 'A D') 
target = {'A':0, 'D':0} 
# also works for a file 
# for line in open('file.txt'): 
for line in corpus: 
    for word in line.split(): 
     if word in target: 
      target[word] += 1 
for (word, count) in target.iteritems(): 
    print 'word "' + word + '" occurs ' + str(count) + ' times' 

を発生する回数をカウントする

word "A" occurs 3 times 
word "D" occurs 1 times 
関連する問題