Каков лучший язык анализа экранных данных? [закрытый]

В1) Почему мы ввели вектор внедрения слова (300 dim) в качестве весов в слой внедрения LSTM?

Очень упрощенно вы можете представить слои внедрения как таблица поиска, которая преобразует слово (представленное его индексом в словаре) в вектор. Это обучаемые слои. Поскольку вы уже обучили встраиванию слов вместо того, чтобы инициализировать слой встраивания со случайным весом, вы инициализируете его с помощью векторов, которые вы изучили.

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?

  • Одна запись / предложение (я) преобразуются в индексы словаря. Таким образом, для каждого предложения у вас есть массив индексов.
  • Партия этих предложений создается и подается в качестве входных данных для модели.
  • 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)

12
задан Alex Dean 5 December 2011 в 11:06
поделиться

12 ответов

Не забудьте взглянуть на BeautifulSoup , настоятельно рекомендуется.

См., Например, options-for-html-scraping . Если вам нужно выбрать язык программирования для этой задачи, я бы сказал Python .

Более прямое решение вашего вопроса см. В twill , простом языке сценариев для просмотра веб-страниц.

26
ответ дан 2 December 2019 в 03:06
поделиться

Я использую C # для очистки. Смотрите полезный пакет HtmlAgilityPack . Для разбора страниц я использую либо XPATH, либо регулярные выражения. .NET также может легко обрабатывать куки, если вам это нужно.

Я написал небольшой класс, который включает в себя все детали создания веб-запроса, его отправки, ожидания ответа, сохранения файлов cookie, обработки сетевых ошибок, повторной передачи и т. Д. - конечный результат заключается в том, что в большинстве ситуаций я можно просто вызвать «GetRequest \ PostRequest» и получить обратно HtmlDocument.

6
ответ дан 2 December 2019 в 03:06
поделиться

Вы можете попробовать использовать .NET HTML Agility Pack:

http://www.codeplex.com/ htmlagilitypack

"Это гибкий HTML-парсер, который создает DOM для чтения / записи и поддерживает простой XPATH или XSLT (вам на самом деле НЕ НУЖНО понимать XPATH или XSLT, чтобы его использовать, не волнуйтесь ...). библиотека кода .NET, позволяющая анализировать HTML-файлы «из Интернета». Синтаксический анализатор очень терпим с искаженным HTML «реального мира». Объектная модель очень похожа на то, что предлагает System.Xml, но для документов HTML (или потоки). "

4
ответ дан 2 December 2019 в 03:06
поделиться

C # более чем подходит для ваших задач очистки экрана. Функциональность Regex .NET действительно хороша. Однако с такой простой задачей вам будет сложно найти язык, который не делает то, что вы хотите, относительно легко. Учитывая, что вы уже программируете на C #, я бы сказал, что придерживайтесь этого.

Встроенная функция очистки экрана также на высшем уровне.

4
ответ дан 2 December 2019 в 03:06
поделиться

Встроенная в Perl функциональность регулярных выражений IMO и способность манипулировать текстом сделали бы его довольно хорошим конкурентом для скриншота экрана.

2
ответ дан 2 December 2019 в 03:06
поделиться

Ruby довольно хорош! ... попробуй его hpricot / mechanize

2
ответ дан 2 December 2019 в 03:06
поделиться

Или придерживаться WebClient в C # и некоторых манипуляций со строками.

0
ответ дан 2 December 2019 в 03:06
поделиться

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.

2
ответ дан 2 December 2019 в 03:06
поделиться

PHP является хорошим соперником благодаря хорошей Perl-совместимой поддержке регулярных выражений и Библиотека cURL.

1
ответ дан 2 December 2019 в 03:06
поделиться

HTML Agility Pack (c #)

  1. XPath не работает, способ очистки html, чтобы сделать его совместимым с xml, сбрасывает теги, и вы должны настроить выражение, чтобы заставить его работать .
  2. простой в использовании

Mozilla Parser (Java)

  1. Поддержка Solid XPath
  2. вы должны установить переменные окружения, прежде чем он будет работать, что является болезненным
  3. приведением между org.dom4j.Node и org .w3c.dom.Node для получения различных свойств - настоящая боль
  4. умирает от нестандартного HTML (0,3 исправляет это)
  5. лучшее решение для проблем XPath
  6. при доступе к данным на узлах в NodeList

    использовать for (int i = 1; i <= list_size; i ++), чтобы обойти это

Beautiful Soup (Python)

У меня нет большого опыта, но вот что я нашел

  1. нет поддержки XPath
  2. хороший интерфейс для создания HTML-путей

Я предпочитаю Mozilla HTML Parser

1
ответ дан 2 December 2019 в 03:06
поделиться

Я рекомендую Python (или Beautiful Soup). В настоящее время я нахожусь в середине небольшого проекта, использующего python, и автоматическая обработка Python 3 таких вещей, как аутентификация cookie (через CookieJar и urllib), значительно упрощает процесс. Python поддерживает все более продвинутые функции, которые могут вам понадобиться (например, регулярные выражения), а также дает возможность быстро обрабатывать подобные проекты (не слишком много усилий при работе с вещами низкого уровня). Это также относительно кроссплатформенный.

0
ответ дан 2 December 2019 в 03:06
поделиться

Мы используем Groovy с NekoHTML. (Также обратите внимание, что теперь вы можете запустить Groovy на двигателе Google App.)

Вот какой-то пример, Runnable код на блоге Keplar:

Лучшая конкурентная интеллект через соскабливание с Groovy

3
ответ дан 2 December 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: