2017-11-02 16 views
2

저는 여전히 파이썬에 대한 지식이 커지면서 TfidfVectorizer가 붙어 있습니다. 나는 다른 질문들을 보았지만 지금까지 나를 도운 어떤 것도 발견하지 못했다.피팅 TfidfVectorizer - AttributeError/TypeError

제품 설명 목록에 tfidf_matrix를 만들려고하는데 실패하고 있습니다.

(tokens_line)와 fit_transform와
AttributeError: 'list' object has no attribute 'lower' 

내가 얻을 : 나는 (토큰)로 fit_transform을 수행하려고했습니다

import nltk 
import numpy as np 
import pandas as pd 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.feature_extraction.text import TfidfVectorizer 

# Make tokens per line 

dataset = pd.read_csv('Cleansed Data.csv', delimiter=';', encoding='latin1') 
tokens = dataset['Description'].apply(nltk.word_tokenize) 
tokens_line = pd.DataFrame(np.array(tokens).reshape(len(tokens), 1), 
columns=['tokens']) 
tokens_line_lists = tokens_line.values.tolist()  

# Get unique tokens 

Filename = open('descriptions for tokens.txt') 
vectorizer = CountVectorizer() 
dtm = vectorizer.fit_transform(Filename) 
vocab = vectorizer.get_feature_names() 
tokens_unique = pd.DataFrame(np.array(vocab).reshape(len(vocab), 1), 
columns=['tokens']) 

#TF-IDF Vectoriser 

tfidf_vectoriser = TfidfVectorizer(max_df=0.8, max_features=20000, 
min_df=0.2, use_idf=True, tokenizer=tokens_unique, ngram_range=(1,3)) 

tfidf_matrix = tfidf_vectoriser.fit_transform(tokens_line) 

나는 다음과 같은 오류가 발생합니다 : 여기

내 코드입니다

TypeError: 'DataFrame' object is not callable 

(tokens_line_lists)와 함께 fit_transform이 표시됩니다.

AttributeError: 'list' object has no attribute 'lower' 
+0

'tokens.txt에 대한 설명'형식은 무엇입니까? – Peter

+0

정리 된 Data.csv와 tokens.txt에 대한 설명은 모두 동일한 텍스트입니다. 둘 다 문자와 숫자의 혼합입니다. –

답변

0

왜 이렇게되지 않습니까?

import numpy as np 
import pandas as pd 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.feature_extraction.text import TfidfVectorizer 

dataset = pd.read_csv('Cleansed Data.csv', encoding='latin1') 
tokenlinelist = dataset['Description'].tolist() 

tfidf_vectoriser = TfidfVectorizer(max_df=0.8, max_features=20000, 
min_df=0.2, use_idf=True, ngram_range=(1,3)) 

tfidf_matrix = tfidf_vectoriser.fit_transform(tokenlinelist) 
+0

고맙습니다.하지만 KeyError : 'Description'이 표시됩니다. TfidfVecotorizer에 고유 한 토큰이 있어야한다고 생각했습니다. –

+0

KeyError : 설명은 데이터에 스크립트가 참조하려는 설명이라는 필드가 누락되었음을 나타냅니다. 나는 당신이 읽는 것을 볼 수 없도록 당신의 데이터를 가지고 있지 않다. 당신이 코드의 10 번째 줄에 'Description'을 사용했기 때문에; 나는 당신의 데이터가 그것을받을 자격이 있다고 생각했다. 문서에서; 기본 tokenizer를 사용하고 싶지 않으면 토큰 만 주면됩니다. – Peter

+0

이상한 점은 Description이라는 열이 있다는 것입니다. 데이터를 공유 할 수는 없지만 "부품 번호"와 "설명"열이 두 개인 CSV 파일입니다. –