0

テキストの 1 つとテキスト内の単語の頻度の 2 つのマトリックスがあります。単語頻度マトリックスから 1 行を削除します。テキスト番号 (テキスト マトリックスの行インデックス) を使用して、単語頻度マトリックスから行を抽出するにはどうすればよいですか?

例えば:

ステップ 1: テキストのリスト

行にテキストのリストがあり、各テキストは行番号で参照されます。

>>print type(texts)
>>print texts.shape
<type 'numpy.ndarray'>
(53,)

ステップ 2: 行番号に基づいてテキストを選択する

そして、私はこのような範囲を持っています:

>>print train_range
>>[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
  26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
  51 52]

この範囲は、から行を選択するために使用されますtextstrain_rangeこれは基本的に、1 つのテキストを削除することを意味します。. 次の例では、最初の行 (行 0) が削除されます。0 は に含まれていないためですtrain_range

texts[train_range]

ステップ 3: テキストの単語頻度を取得する

次に、テキストが (単語の頻度によって) 分析され、スパース行列が返されtrain_Xます。各テキストは の行であるtextsため、各テキストの単語頻度は の行に配置されtrain_Xます。53texts行あり、texts[train_range]52 行あり、train_X52 行あります。

trainX = get_word_freq_matrix( texts[train_range] )
>>print train_X.shape
(52, 6237)
>>print type(train_X)
<class 'scipy.sparse.csr.csr_matrix'>

ステップ 4: 一部のテキストの単語頻度を取得する

train_X次のように、新しい範囲を使用して、元のテキスト番号から行を取得したいと思います。

apply_range = [4,7,8]
train_X[apply_range]

apply_rangeただし、 (のような)内の数字はtrain_rangeの行を参照していますtexts。数字は の行を参照していませんtrain_Xtrain_Xこの範囲を使用して、表示される場所に基づいて正しい周波数を取得するにはどうすればよいtextsですか?

別のマトリックスからのインデックスを使用して、マトリックス内の行を参照しようとしました。ただし、どのテキストが から削除されたかを関数が考慮していないため、これがどのように機能するかはわかりませんtexts

4

1 に答える 1

1

質問で説明したような他のすべてのもので、ただやってください

apply_range = [4,7,8]
train_X[[train_range.index(i) for i in apply_range]]
于 2012-09-08T13:56:02.883 に答える