• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

data폴더안에 tsv파일이 없다고 나오는데 어떻게 해야하나요?

22.07.27 16:15 작성 조회수 328

1

안녕하세요

답변 5

·

답변을 작성해보세요.

0

chowon9707님의 프로필

chowon9707

질문자

2022.07.29

Review 0 of 4673
Review 1000 of 4673
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:18: DeprecationWarning: Call to deprecated `__getitem__` (Method will be removed in 4.0.0, use self.wv.__getitem__() instead).
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:20: RuntimeWarning: invalid value encountered in true_divide
Review 2000 of 4673
del df_test["Sentence"][:2037] 하면 하나씩지워지기는 하는데...
어제부터 인덱스에러가 왜 나는지 모르갰습니다..! 위에 테스트는 잘 돌아갔는데...

0

chowon9707님의 프로필

chowon9707

질문자

2022.07.29

삭제된 글입니다
chowon9707님의 프로필

chowon9707

질문자

2022.07.29

IndexError                                Traceback (most recent call last)
<ipython-input-181-af6a117b08a4> in <module>()
      2 counter = 0
      3 for review in clean_train_reviews:
----> 4     train_centroids[counter] = create_bag_of_centroids( review,         word_centroid_map )
      5     counter += 1
      6 

 

IndexError: index 267 is out of bounds for axis 0 with size 267
chowon9707님의 프로필

chowon9707

질문자

2022.07.29

https://colab.research.google.com/drive/1p67KyKdcBErpenHYNR0h6rcCrh20Ekjy?usp=sharing

 

0

chowon9707님의 프로필

chowon9707

질문자

2022.07.28

# 완성된 임베딩 매트릭스의 크기 확인
model.vectors.shape 이코드에서
 
'Word2Vec' object has no attribute 'vectors'
 
어트리뷰트에러나는데 혹시 뭐가 뭐가문제일까요?
구글링해보았는데 젠심 버전 낮췄는데도 어느샌가 부터 자꾸 이부분에서 오류가 납니다

gensim 은 버전 4부터 많은 변화가 있습니다.  아마도 4점대 버전인것 같네요.

vectors 대신에 model.wv 를 해보고 동작한다면 len(model.wv) 로 길이를 세어보세요.

그리고 다음 문서를 참고해 보세요.

https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4

 

chowon9707님의 프로필

chowon9707

질문자

2022.07.29

감사합니다! 위의 문서에 잘나와있는 것 같아 감사합니다.

 

model.wv 는 잘 되는데,
 
# 완성된 임베딩 매트릭스의 크기 확인
print(len(model.wv))으로 돌리면 TypeError: object of type 'Word2VecKeyedVectors' has no len()...으로 나와서 벡터 크기를 못세어보고 있습니다.. 감사합니다.

0

chowon9707님의 프로필

chowon9707

질문자

2022.07.28

감사합니다! 추가적으로 이 강의를 다 듣고 적용해서 한국어 데이터에 하려고 실습해보려고 하는데 이런 오류가 뜨면서 마지막에 랜덤포레스트 모델이 안돌아가는데 혹시 test랑 train데이터 행의 개수가 달라서 그런걸까요?

 

# 학습 리뷰를 bags of centroids 로 변환한다.
# 학습 리뷰를 bags of centroids 로 변환한다.
counter = 0
for review in clean_train_reviews:
train_centroids[counter] = create_bag_of_centroids( review, \
word_centroid_map )
counter += 1
if counter==4673:
pass

# 테스트 리뷰도 같은 방법으로 반복해 준다.
test_centroids = np.zeros((df_test["Sentence"].size, num_clusters), \
dtype="float32" )

counter = 0
for review in clean_test_reviews:
test_centroids[counter] = create_bag_of_centroids( review, \
word_centroid_map )
counter += 1
if counter==4673:
break


# 랜덤포레스트를 사용하여 학습시키고 예측
forest = RandomForestClassifier(n_estimators = 100)

# train 데이터의 레이블을 통해 학습시키고 예측한다.
# 시간이 좀 소요되기 때문에 %time을 통해 걸린 시간을 찍도록 함
print("Fitting a random forest to labeled training data...")
%time forest = forest.fit(train_centroids, df_train["Sentence"])

 

IndexError: index 4673 is out of bounds for axis 0 with size 4673

세번째 줄에서 에러가 나옵니다.

 

열은 같은데 행의 개수가 각각 4673과 267입니다.

감사합니다

  제 댓글에 코드공유했습니다. 혹시 아시면 알려주시면 감사합니다!

chowon9707님의 프로필

chowon9707

질문자

2022.07.28

if counter==4673:

break
 
 
 
이 줄을 추가했더니 오류는 안나는데 데이터가 많아서 그런지 모델이 생성되기전에 런타임 연결이 해제됩니다.

df_test["Sentence"] 가 레이블값이 맞나요? 강의 데이터가 아닌 다른 데이터라면 fit을 할 때 넣어준 데이터가 학습에 적합한 형태로 변환이 되었는지 확인이 필요합니다.

그리고 break 문을 추가한 이유가 무엇일까요?

 

모델이 생성되기 전에 런타임이 해제되었다면 colab 에서 학습할 수 있는 메모리 용량을 넘어서는 데이터 일수도 있습니다.

모델에 넣어주기 위해 벡터화된 데이터가 너무 크고 희소한 형태로 되어있으면 메모리 오류가 나고 연결이 해제됩니다.

fit 에 넣어준 열의 갯수도 확인해 보세요!

 

chowon9707님의 프로필

chowon9707

질문자

2022.07.28

아하 지도학습에서 사용되는 레이블값은 df_test["PN"]인데 제가  그것을 넣어야하는데 잘못 넣은 것 같습니다.! 열은 각각 5,3개입니다. 중간에 안되는 코드는 건너뛰고했는데 더불어 여기서 예측하고자하는 것은 PN-> 리뷰글의 긍정 혹은 부정이므로 df_test["PN"]를 fit해주는 것이 맞는 것 같습니다.

감사합니다. 

아무래도 너무 크고 희소한 형태라서 여전히 인데스에러가 나는 것 같습니다!

인덱스가 범위가 넘었다고 에러가나서 break문을 넣었더니 돌아가서 해보았는데 지우고 다시 학습데이터 변환과정을 점검해보아야할 것 같습니다. 감사합니다.

0

안녕하세요.

colab 의 폴더에 파일을 업로드 해주셔야 합니다.

하지만 강의 하단의 colab 링크를 사용하시면 파일 업로드 없이 url 로 파일을 읽어와서 실습할 수 있습니다.

아래 링크를 사용하셔도 됩니다.


# 레이블인 sentiment 가 있는 학습 데이터
train = pd.read_csv('https://raw.githubusercontent.com/corazzon/KaggleStruggle/master/word2vec-nlp-tutorial/data/labeledTrainData.tsv', delimiter='\t', quoting=3)
# 레이블이 없는 테스트 데이터
test = pd.read_csv('https://raw.githubusercontent.com/corazzon/KaggleStruggle/master/word2vec-nlp-tutorial/data/testData.tsv', delimiter='\t', quoting=3)

unlabeled_train = pd.read_csv('https://raw.githubusercontent.com/corazzon/KaggleStruggle/master/word2vec-nlp-tutorial/data/unlabeledTrainData.tsv',
header=0, delimiter='\t', quoting=3)