目標はセンチメント分類です。手順は、3 xlsxファイルを開いて読み込み、gensim.doc2vecメソッドで処理し、SGDClassificatorで分類することです。 this code on doc2vecを繰り返してみてください。 Pythonの2.7xlsxファイルのReadlines関数が正しく機能しない
with open('C:/doc2v/trainpos.xlsx','r') as infile:
pos_reviews = infile.readlines()
with open('C:/doc2v/trainneg.xlsx','r') as infile:
neg_reviews = infile.readlines()
with open('C:/doc2v/unsup.xlsx','r') as infile:
unsup_reviews = infile.readlines()
しかし、それは結果のリストは、それらがあることを期待しているものではないことが判明:
print 'length of pos_reviews is %s' % len(pos_reviews)
>>> length of pos_reviews is 1
ファイルは相応18、1221と2203のRAWが含まれています。私はリストには同じ数の要素があると思った。
次のステップは、すべての文を連結することです。
y = np.concatenate((np.ones(len(pos_reviews)), np.zeros(len(neg_reviews))))
x_train, x_test, y_train, y_test = train_test_split(np.concatenate((pos_reviews, neg_reviews)), y, test_size=0.2)
これは
y_train = [0.]
y_test = [1.]
この分裂した後、すべての文がラベルを取得しながら、彼らがあるべきなのx-電車、xはテスト文のリストである状況につながる:
def labelizeReviews(reviews, label_type):
labelized = []
for i,v in enumerate(reviews):
label = '%s_%s'%(label_type,i)
labelized.append(LabeledSentence(v, [label]))
return labelized
x_train = labelizeReviews(x_train, 'TRAIN')
x_test = labelizeReviews(x_test, 'TEST')
unsup_reviews = labelizeReviews(unsup_reviews, 'UNSUP')
the numpy documentationで書かれているように、配列のサイズは同じでなければなりません。しかし、大きなファイルを18行に減らすと、何も変わりません。 フォーラムで検索したところ、nooneに似たようなエラーがあります。私は何が間違っていたか、それを修正する方法私の頭を壊しました。手伝ってくれてありがとう!
私はこのサイトで一度も引用されていなかった本[link](https://automatetheboringstuff.com/)に驚いています。readlines()メソッドは、Excelファイルで作業することをお勧めしました。 – Talka
list.appendメソッドを後で適用できるように、どのモジュールメソッドがリストタイプのオブジェクトを返すか教えてください。ラベル作成機能を追加したコードを編集しました。 – Talka
@Talka [This code](http://pastebin.com/rzi57bhE)は 'python3'と' xlrd'モジュールで動作します。 «退屈なものを自動化する...»ブックモジュール 'openpyxl'が説明されています。このモジュールは、MS Office 2007ファイル( '.xlsx')のみで動作します。 –