2015-12-11 2 views
1

У меня есть файл CSV, какNLTK: Как создать корпус из CSV-файла

col1   col2  col3 

some text someID some value 
some text someID some value 

в каждой строке, col1 соответствует тексту всего документа. Я хотел бы создать корпус из этого csv. моя цель - использовать TfidfVectorizer sklearn для вычисления подобия документа и извлечения ключевых слов. Так считают

tfidf = TfidfVectorizer(tokenizer=tokenize, stop_words='english') 
tfs = tfidf.fit_transform(<my corpus here>) 

так, то я могу использовать

str = 'here is some text from a new document' 
response = tfidf.transform([str]) 
feature_names = tfidf.get_feature_names() 
for col in response.nonzero()[1]: 
    print feature_names[col], ' - ', response[0, col] 

как я создать корпус с помощью NLTK? какой форме/структуре данных должен быть корпус, чтобы он мог быть передан функции преобразования?

ответ

2

Отъезд read_csv от библиотеки pandas. Вот документация: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

Вы можете установить pandas, запустив pip install pandas в командной строке. Затем загрузка csv и выбор этой колонки должны быть такими же простыми, как указано ниже:

data = pd.read_csv(path_to_csv) 
docs = data['col1'] 

tfs = tfidf.fit_transform(docs) 
+0

спасибо, но этот метод не является точным. docs все еще является объектом серии, а не списком строк. поэтому my fit_transform не работает. любая идея о том, как преобразовать столбец dataframe в список значений? – AbtPst

+0

нашел его. это должно быть docs = data ['col1']. tolist() :) если вы обновите свой ответ, я соглашусь – AbtPst

+1

. Хороший вызов, похоже, что передача 2d-массива (dataframe) в 'fit_transform' не работает. Тем не менее, массив 1d должен работать, поэтому достаточно просто захватить серию с 'data ['col1']' (нет необходимости конвертировать 'Series' в' list'). Обновлено. – hume

Смежные вопросы