В1) Почему мы ввели вектор внедрения слова (300 dim) в качестве весов в слой внедрения LSTM?
blockquote>Очень упрощенно вы можете представить слои внедрения как таблица поиска, которая преобразует слово (представленное его индексом в словаре) в вектор. Это обучаемые слои. Поскольку вы уже обучили встраиванию слов вместо того, чтобы инициализировать слой встраивания со случайным весом, вы инициализируете его с помощью векторов, которые вы изучили.
Embedding(len(word_index)+1, 300, weights=[embedding_matrix], trainable=False)(input_layer)
Итак, вы
- создаете слой внедрения или справочную таблицу, которая может искать индексы слов от 0 до len (word_index).
- Каждое найденное слово будет отображаться в векторе размером 300.
- Эта таблица поиска загружена векторами из «embedding_matrix» (которая является предварительно обученной моделью).
- trainable = False замораживает вес в этом слое.
Вы прошли 300, потому что это размер вектора вашей предварительно обученной модели (embedding_matrix)
Q2) Как мы можем узнать оптимальное число нейронных элементов в слое LSTM?
< / blockquote>Вы создали слой LSTM, в котором на вход берется вектор размера 300 и возвращается вектор размера 300. Выходной размер и количество уложенных LSTMS являются гиперпараметрами, которые настраиваются вручную (обычно с использованием KFold CV)
Q3) Не могли бы вы объяснить, как обрабатывается одна запись в алгоритме LSTM?
blockquote>
- Одна запись / предложение (я) преобразуются в индексы словаря. Таким образом, для каждого предложения у вас есть массив индексов.
- Партия этих предложений создается и подается в качестве входных данных для модели.
- LSTM разворачивается, передавая по одному индексу за раз в качестве входных данных на каждом временном шаге.
- Наконец, выходной сигнал LSTM передается прямым финальным плотным слоем до размера 33. Таким образом, похоже, что каждый вход сопоставлен с одним из 33 классов в вашем случае.
Простой пример
import numpy as np from keras.preprocessing.text import one_hot from keras.preprocessing.sequence import pad_sequences from keras.models import Sequential from keras.layers import Dense from keras.layers import Flatten, LSTM from keras.layers.embeddings import Embedding from nltk.lm import Vocabulary from keras.utils import to_categorical training_data = [ "it was a good movie".split(), "it was a bad movie".split()] training_target = [1, 0] v = Vocabulary([word for s in training_data for word in s]) model = Sequential() model.add(Embedding(len(v),50,input_length = 5, dropout = 0.2)) model.add(LSTM(10, dropout_U = 0.2, dropout_W = 0.2)) model.add(Dense(2,activation='softmax')) model.compile(loss = 'categorical_crossentropy', optimizer='adam',metrics = ['accuracy']) print(model.summary()) x = np.array([list(map(lambda x: v[x], s)) for s in training_data]) y = to_categorical(training_target) model.fit(x,y)
Не забудьте взглянуть на BeautifulSoup , настоятельно рекомендуется.
См., Например, options-for-html-scraping .
Если вам нужно выбрать язык программирования для этой задачи, я бы сказал Python
.
Более прямое решение вашего вопроса см. В twill , простом языке сценариев для просмотра веб-страниц.
Я использую C # для очистки. Смотрите полезный пакет HtmlAgilityPack . Для разбора страниц я использую либо XPATH, либо регулярные выражения. .NET также может легко обрабатывать куки, если вам это нужно.
Я написал небольшой класс, который включает в себя все детали создания веб-запроса, его отправки, ожидания ответа, сохранения файлов cookie, обработки сетевых ошибок, повторной передачи и т. Д. - конечный результат заключается в том, что в большинстве ситуаций я можно просто вызвать «GetRequest \ PostRequest» и получить обратно HtmlDocument.
Вы можете попробовать использовать .NET HTML Agility Pack:
http://www.codeplex.com/ htmlagilitypack
"Это гибкий HTML-парсер, который создает DOM для чтения / записи и поддерживает простой XPATH или XSLT (вам на самом деле НЕ НУЖНО понимать XPATH или XSLT, чтобы его использовать, не волнуйтесь ...). библиотека кода .NET, позволяющая анализировать HTML-файлы «из Интернета». Синтаксический анализатор очень терпим с искаженным HTML «реального мира». Объектная модель очень похожа на то, что предлагает System.Xml, но для документов HTML (или потоки). "
C # более чем подходит для ваших задач очистки экрана. Функциональность Regex .NET действительно хороша. Однако с такой простой задачей вам будет сложно найти язык, который не делает то, что вы хотите, относительно легко. Учитывая, что вы уже программируете на C #, я бы сказал, что придерживайтесь этого.
Встроенная функция очистки экрана также на высшем уровне.
Встроенная в Perl функциональность регулярных выражений IMO и способность манипулировать текстом сделали бы его довольно хорошим конкурентом для скриншота экрана.
Ruby довольно хорош! ... попробуй его hpricot / mechanize
Или придерживаться WebClient в C # и некоторых манипуляций со строками.
Groovy очень хорош.
Пример: http://froth-and-java.blogspot.com/2007/06/html-screen-scraping-with-groovy.html
Groovy и HtmlUnit также очень хорошо подходят: http://groovy.codehaus.org/Testing+Web+Applications Htmlunit будет имитировать полноценный браузер с поддержкой Javascript.
PHP является хорошим соперником благодаря хорошей Perl-совместимой поддержке регулярных выражений и Библиотека cURL.
при доступе к данным на узлах в NodeList
использовать for (int i = 1; i <= list_size; i ++), чтобы обойти это
У меня нет большого опыта, но вот что я нашел
Я предпочитаю Mozilla HTML Parser
Я рекомендую Python (или Beautiful Soup). В настоящее время я нахожусь в середине небольшого проекта, использующего python, и автоматическая обработка Python 3 таких вещей, как аутентификация cookie (через CookieJar и urllib), значительно упрощает процесс. Python поддерживает все более продвинутые функции, которые могут вам понадобиться (например, регулярные выражения), а также дает возможность быстро обрабатывать подобные проекты (не слишком много усилий при работе с вещами низкого уровня). Это также относительно кроссплатформенный.
Мы используем Groovy с NekoHTML. (Также обратите внимание, что теперь вы можете запустить Groovy на двигателе Google App.)
Вот какой-то пример, Runnable код на блоге Keplar: