2016-09-01 16 views
0

目標はセンチメント分類です。手順は、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に似たようなエラーがあります。私は何が間違っていたか、それを修正する方法私の頭を壊しました。手伝ってくれてありがとう!

答えて

0

一般に、readlinesまたはreadのような方法を使用して、Microsoft Excelファイルをテキストファイルとして読み取ることはできません。ファイルを別の形式に変換する前に(良い解決策はcsvモジュールが読み取れる.csvです)、pyexcelopenpyxlのような特殊なPythonモジュールを使用して.xlsxファイルを直接読み取る必要があります。

+0

私はこのサイトで一度も引用されていなかった本[link](https://automatetheboringstuff.com/)に驚いています。readlines()メソッドは、Excelファイルで作業することをお勧めしました。 – Talka

+0

list.appendメソッドを後で適用できるように、どのモジュールメソッドがリストタイプのオブジェクトを返すか教えてください。ラベル作成機能を追加したコードを編集しました。 – Talka

+0

@Talka [This code](http://pastebin.com/rzi57bhE)は 'python3'と' xlrd'モジュールで動作します。 «退屈なものを自動化する...»ブックモジュール 'openpyxl'が説明されています。このモジュールは、MS Office 2007ファイル( '.xlsx')のみで動作します。 –

関連する問題