2016-11-21 4 views
1

В настоящее время я работаю над проектом машинного обучения и занимаюсь созданием набора данных. Набор данных будет состоять из целого ряда различных текстовых функций различной длины от 1 предложения до примерно 50 предложений (включая пунктуацию). Каков наилучший способ хранения этих данных для предварительной обработки и использования для машинного обучения с использованием python?Храните текстовый набор данных для двоичной классификации

ответ

0

в большинстве случаев, вы можете использовать метод, называемый мешком Слова, однако, в некоторых случаях, когда вы выполняете более сложную задачу, как извлечение подобия или хотите сделать сравнение между предложениями, вы должны использовать Word2Vec

Сумка Word

Вы можете использовать классическое представление Bag-Of-Word, в котором вы кодируете e каждый образец в длинный вектор, указывающий количество всех слов из всех выборок. Например, если у вас есть два образца:

"I like apple, and she likes apple and banana.",

"I love dogs but Sara prefer cats.".

Тогда все возможные слова (порядок здесь не имеет значения):

I she Sara like likes love prefer and but apple banana dogs cats , . 

Затем оба образца будут закодированы

First: 1 1 0 1 1 0 0 2 0 2 1 0 0 1 1 
Second: 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 

Если вы используете sklearn, задача будет быть столь же просто, как:

from sklearn.feature_extraction.text import CountVectorizer 
vectorizer = CountVectorizer() 
corpus = [ 
    'This is the first document.', 
    'This is the second second document.', 
    'And the third one.', 
    'Is this the first document?', 
] 
X = vectorizer.fit_transform(corpus) 
# Now you can feed X into any other machine learning algorithms.      

Word2Vec

Word2Vec - это более сложный метод, который пытается найти взаимосвязь между словами путем обучения нейронной сети под номером . Вложение в простой английский язык можно рассматривать как математическое представление слова, в контексте всех предоставленных образцов. Основная идея заключается в том, что слова похожи, если их контексты похожи.

Результат Word2Vec - это векторное представление (вложения) всех слов, показанных во всех образцах. Удивительно то, что мы можем выполнять алгоритмические операции над вектором.Крутой пример: Queen - Woman + Man = Kingreference here

Чтобы использовать Word2Vec, мы можем использовать пакет под названием gensim, вот основные настройки:

model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4) 
model.most_similar(positive=['woman', 'king'], negative=['man']) 
>>> [('queen', 0.50882536), ...] 

Здесь sentences ваши данные, size является размерность вложений, чем больше size, тем больше пространства используется для представления слова, и всегда есть overfitting, о котором мы должны думать. window - это размер контекста, о котором нас беспокоят, это количество слов перед целевым словом, которое мы рассматриваем, когда мы прогнозируем цель из ее контекста, когда тренируемся.

+0

Мне нужно сначала загрузить загрузку данных из PubMed и запланировать выполнение текстовой предварительной обработки, как я могу сохранить это первым? – Toby

+0

Если данные, которые вы загружаете, похожи на [this] (https://www.ncbi.nlm.nih.gov/protein/BAC80069.1), я предполагаю, что вы можете просто загрузить их в виде текстового файла любого формата, а затем, когда вам это нужно, вы можете [загрузить их] (http://stackoverflow.com/questions/3925614/how-do-you-read-a-file-into-a-list-in-python) с помощью 'file. readline() 'для чтения текстов по строкам – Jason

0

Один из распространенных способов создания словаря (все возможные слова), а затем, например, кодировать каждый из ваших примеров в функции этого диктатора (например, это очень маленький и ограниченный словарь), вы могли бы иметь словарь: hello, world, from, python. Каждое слово будет связано с позицией, и в каждом из ваших примеров вы определяете вектор с 0 для существования и 1 для существования, например, для примера «hello python» вы должны кодировать его как: 1,0,0,1

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