2017-12-10 12 views
0

저는 NLTK에서 신형이며 리뷰 용 분류 자 ​​생성에 문제가 있습니다. I는 변환 된 데이터의 형태의 입력으로 전달 된 데이터가 형상이었다 1 * 1 희소 행렬이 얼마나 이해할 수없는이다 enter image description here  CountVectorizer 변환 후 예기치 않은 스파 스 행렬

은 (10000,1) 는 I 원래 리뷰 데이터가 처리 약간. 정지 단어를 제거하고, 줄무늬를 제거하고 문장 부호를 제거하는 것과 같습니다.

내가 잘못 가고있는 곳에서 도움이 필요하며 더 자세한 정보가 필요하면 알려 주시기 바랍니다.

+0

'X_train1'에서 몇 줄을 보여주십시오. –

+0

질문을 편집하고 X_train1 @andrew_reece 샘플을 추가했습니다. – Chhitij

+0

'X_train1'은'Description' 열이있는 판다 데이터 프레임입니다. 그 맞습니까? –

답변

0

X_train1은 실제로 스크린 샷의 형식에 따라 팬더 데이터 프레임입니다. 문제는 Description이 (아마도 길이가 다른) 단어 목록의 열입니다. 이런 식으로 뭔가 :

X = np.array([['alpha','beta'],['theta','theta','gamma'],['delta','delta']]) 
X_train1 = pd.DataFrame(X, columns=["Description"]) 

X_train1 
      Description 
0   [alpha, beta] 
1 [theta, theta, gamma] 
2   [delta, delta] 

X_train1.shape # (3,1) 

그래서 당신은 단어의 목록 만 개 행이 (모양 (nrow, 1)).
CountVectorizer (사용자가 sklearn 클래스를 사용한다고 가정)은 문서 배열을 사용합니다. (가) documentation에서 :

CountVectorizer : 토큰의 매트릭스에 텍스트 문서의 컬렉션을 변환이 구체적으로

를 계산 fit()에 인수 정의를 고려해

raw_documents을 : str, unicode 또는 파일 객체 중 하나를 산출하는 iterable.

그냥 시도하고 X_train1에 전달하면

, 당신은 예상 입력을 제공하지 않는 - 당신은 문자열 목록 객체를 포함하는 열을 포함하는 데이터 프레임을 전달하고 있습니다. 당신은 이상한 결과물을 얻길 기대해야합니다.

X_train1의 각 행은 문서를 표시한다고 가정하고 CountVectorizer 패스, 각 행에있는 단어 목록에 가입하려고 :

X = X_train1.Description.apply(lambda row: ' '.join(row)) 
ctvec = CountVectorizer() 
ctvec.fit_transform(X) # combine fit(X) and transform(X) 

출력 :

<3x5 sparse matrix of type '<class 'numpy.int64'>' 
    with 5 stored elements in Compressed Sparse Row format> 

이 출력 라인에 더 의도 한 입력.