2017-09-21 20 views
-1

テキストblobを使用して単語にインデックスを付けるコードがあります。私の現在の出力は、 'doc'(for doc1、doc2、doc3など)のforループから来ます。forループからnp配列を作成する方法

すべての文書から、私は4つの最も重要な単語のベクトルを持ちたいと思います。ナンバーを4,1 np.arrayに入力します。私は残念ながらこれを修正することができないようです。

bloblist = [doc1, doc2, doc3, doc4, doc5, doc6, doc7, doc8, doc9, doc10, doc11] 
for i, blob in enumerate(bloblist): 
    print("Top words in doc {}".format(i + 1)) 
    scores = {word: tfidf(word, blob, bloblist) for word in blob.words} 
    sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True) 
    corpus = blob.words 
    wordIndex = list(enumerate(corpus)) 
    for word, score in sorted_words[:4]: 
     arr = (corpus.index(word)) 
     print(arr) 

この

は生成し、次クールだが、私は誰も私を助けることができる

Top words in doc 1 
[5,0,1,2] 

このようしてくださいそれを持ってしたいと思い

Top words in doc 1 
5 
0 
1 
2 
Top words in doc 2 
19 
12 
41 
4 

+0

まずオフは、使用を検討する[カウンタ](https://docs.python.org/2/library/collections.html#collections.Counter )。第2に、「私は4つの最も重要な言葉のベクトルを持ちたいと思い、インデックス番号を返すことにしたい」どのインデックス番号ですか?最初の出現? –

+0

各繰り返しでarrを印刷しています。あなたが探しているのは、2番目のforループの前にarrという名前の配列を初期化し、この配列に各繰り返しを追加し、最後にループが完了した後に印刷することです。 – Oli

+0

こんにちはブラッド、はい、申し訳ありませんが、そのインデックス部分は本当に役に立たなかった。 textblobを使用してすべての単語を索引付けしたので、すべての単語の単語を含むすべての文書に対して固定数を持つことができます。うーん、私はこれを説明するのが難しいと思うが、基本的には、多くの文書に基づくコーパスが必要であり、その索引を使用して各文書の上位4語をベクトル化できるはずです。 – dsloet

答えて

1

Oliのおかげで、私にとってうまくいくソリューションが見つかりました。以下、所望の出力が得られる

bloblist = [doc1, doc2, doc3, doc4, doc5, doc6, doc7, doc8, doc9, doc10, doc11] 
for i, blob in enumerate(bloblist): 
    print("Top words in doc {}".format(i + 1)) 
    scores = {word: tfidf(word, blob, bloblist) for word in blob.words} 
    sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True) 
    corpus = blob.words 
    wordIndex = list(enumerate(corpus)) 
    arr = np.array([]) 
    for word, score in sorted_words[:4]: 
     arrw = np.array([corpus.index(word)]) 
     arr = np.concatenate((arr, arrw)) 
    print(arr) 
    arr = arr.reshape(4,1) 
    print(arr.shape) 

Top words in doc 1 
[ 5. 0. 1. 2.] 
(4, 1) 
Top words in doc 2 
[ 19. 12. 41. 4.] 
(4, 1) 
Top words in doc 3 
[ 16. 2. 6. 7.] 
(4, 1) 
関連する問題