dcnn-nlp
dcnn-nlp — это инструмент для обработки естественного языка и классификации текстов с использованием свёрточных нейронных сетей. Он основан на статье 2014 года «A Convolutional Neural Network for Modelling Sentences» и расширен.
Особенности:
— По сравнению с традиционной моделью «мешок слов» dcnn-nlp лучше использует последовательную информацию между словами, что позволяет более точно понимать короткие тексты.
— Для различных задач по классификации текста не требуется дополнительная работа по извлечению признаков, чтобы достичь лучших результатов.
— Инструмент написан на Python, а его основные части оптимизированы с помощью Cython, BLAS и других технологий.
— Структура сети в dcnn-nlp расширена по сравнению со статьёй «A Convolutional Neural Network for Modelling Sentences», позволяя свободно определять уровни глубокой свёрточной нейронной сети.
— Метод обучения векторов слов в статье был улучшен, и теперь поддерживается пакет инструментов gensim word2vec.
— Поддерживается обучение без учителя для векторов слов, предложений и абзацев (TODO).
— Планируется поддержка ускорения на GPU (TODO).
Примеры:
# Stanford Sentiment Treebank Experiment
# Сначала вы должны запустить python prepare.py в направлении data/stanford
total_data_file = 'data/stanford/total.data'
total_sentences = LineSentence(total_data_file, repeat=5)
train_data_file = 'data/stanford/train2.data'
train_label_file = 'data/stanford/train2.label'
train_sentences = LineSentence(train_data_file)
train_labels = numpy.fromfile(train_label_file, sep='\n', dtype=numpy.int32)
dev_data_file = 'data/stanford/dev2.data'
dev_label_file = 'data/stanford/dev2.label'
dev_sentences = LineSentence(dev_data_file)
dev_labels = numpy.fromfile(dev_label_file, sep='\n', dtype=numpy.int32)
test_data_file = 'data/stanford/test2.data'
test_label_file = 'data/stanford/test2.label'
test_sentences = LineSentence(test_data_file)
test_labels = numpy.fromfile(test_label_file, sep='\n', dtype=numpy.int32)
# n_filters=[6,14] в статье
# n_filters=[4,6] в LeNet
# Но вы можете углубиться
model = DCNNDeep(sentences=train_sentences, output_layer_size=2, wordvec_dim=48,
alpha=0.012, entropy_descent_m=0.995, dropout_rate_in_hiddens=0.5,
dropout_rate_in_input=0.2, min_count=2, full_con_layer_size=5,
filter_width=[7,5,3], k_top=4, n_filters=[6,14,6], alpha_m=0.999995,
min_alpha=0.00001, pre_train_word_vec=True, pre_train_sentences=total_sentences)
model.train(train_sentences=train_sentences, train_labels=train_labels, patience=5,
validate_freq=2000, max_entropy_allowed=0.38, validate_sentences=dev_sentences,
validate_labels=dev_labels, chunksize=5)
print 'test accuracy: %f' %model.accuracy(test_sentences, test_labels)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )