Поиск алгоритма, который инвертирует sprintf () функциональный вывод

Попробуйте поместить document.getElementById в setTimeout()

Например.

setTimeout(function(){
    console.log(document.getElementById('whatever'));
}, 100);

Если это сработает, тогда это просто проблема синхронизации.

5
задан Jarrod Dixon 22 March 2012 в 01:51
поделиться

10 ответов

Обзор:

Наивное!! алгоритм отслеживает частоту слов способом для каждого столбца, где можно предположить, что каждая строка может быть разделена на столбцы с разделителем.

Пример ввел:

Собака была в возбужденном состоянии
Кошка была в возбужденном состоянии
Луна была в возбужденном состоянии
Автомобиль был в возбужденном состоянии

Частоты:

Column 1: {The: 4}
Column 2: {car: 1, cat: 1, dog: 1, moon: 1}
Column 3: {jumped: 4}
Column 4: {over: 4}
Column 5: {the: 4}
Column 6: {moon: 4}

Мы могли разделить эти списки частот далее путем группировки на основе общего количества полей, но в этом простом и удобном примере, мы только работаем с постоянным числом полей (6).

Следующий шаг должен выполнить итерации через строки, которые генерировали эти списки частот, поэтому давайте возьмем первый пример.

  1. : соответствует некоторым ручным волнистым критериям, и алгоритм решает, что это должно быть статично.
  2. собака: кажется, не статичен на основе остальной части списка частот, и таким образом это должно быть динамично в противоположность статическому тексту. Мы циклично выполняемся через несколько предопределенных регулярных выражений и придумываем /[a-z]+/i.
  3. : то же соглашение как № 1; это статично, таким образом уезжайте, как.
  4. : то же соглашение как № 1; это статично, таким образом уезжайте, как.
  5. луна: то же соглашение как № 1; это статично, таким образом уезжайте, как.

Таким образом только от осмотра через первую строку мы можем соединить следующее регулярное выражение:

/The ([a-z]+?) jumps over the moon/

Соображения:

  • Очевидно, можно принять решение просканировать часть или целый документ для первичной обработки, пока каждый уверен, что списки частот будут достаточной выборкой всех данных.

  • Ложные положительные стороны могут вползти в результаты, и это будет до алгоритма фильтрации (помахивание руки) для обеспечения лучшего порога между статическими и динамическими полями или некоторой человеческой последующей обработки.

  • Полная идея является, вероятно, хорошей, но фактическая реализация определенно выскажет мнение о скорости и эффективности этого алгоритма.

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

Я думаю, что Вы могли бы пропускать и пропущенный fscanf () и sscanf (). Которые являются противоположностью fprintf () и sprintf ().

12
ответ дан 18 December 2019 в 06:24
поделиться

Спасибо за все большие предложения. Chris, является правильным. Я ищу универсальное решение для нормализации любого вида текста. Решение проблемы сводится к фактическому нахождению шаблонов в двух или больше подобных строках. Почти как предсказание следующего элемента в наборе, на основе предыдущих двух:

1: Эверест 30 000 футов высотой

2: K2 28 000 футов высотой

=>, Каков шаблон? => Ответ:

[имя] является [число] ногами высоко

Теперь текстовый файл может иметь миллионы строк и тысячи шаблонов. Я хотел бы проанализировать файлы очень, очень быстро, найдите шаблоны и соберите наборы данных, которые связаны с каждым шаблоном.

Я думал о создании некоторых семантических хешей высокого уровня представлять шаблоны в строках сообщения. Я использовал бы токенизатор и дал бы каждый из маркерных типов определенный "вес". Затем я сгруппировал бы хеши и оценил бы их подобие. После того как группировка сделана, я собрал бы наборы данных.

Я надеялся, что не должен был изобретать велосипед и мог снова использовать что-то, что уже является там.

Klaus

3
ответ дан 18 December 2019 в 06:24
поделиться

Это зависит от того, что Вы пытаетесь сделать, если Ваша цель состоит в том, чтобы быстро генерировать sprintf () вход, это работает. Если бы Вы пытаетесь проанализировать данные, возможно, регулярные выражения сделали бы также..

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

Вы не собираетесь находить инструмент, который может просто взять произвольный вход, предположить, какие данные Вы хотите от него и производите вывод, который Вы хотите. Это походит на сильный AI мне.

Создание чего-то вроде этого, даже только для распознавания чисел, становится действительно волосатым. Например, "123.456" одно число или два? Как насчет этого "123,456"? "35F" десятичное число и 'F', или действительно ли это - шестнадцатеричное значение 0x35F? Вы оказываетесь перед необходимостью создавать что-то, что проанализирует в способе, которым Вам нужно. Можно сделать это с регулярными выражениями, или можно сделать это с sscanf, или можно сделать это некоторый другой путь, но Вы оказываетесь перед необходимостью писать что-то пользовательское.

Однако с основными регулярными выражениями, можно сделать это сами. Это не будет волшебно, но это не так много работы. Что-то вроде этого проанализирует строки, которыми Вы интересуетесь и консолидируете их (Perl):

my @vals = ();
while (defined(my $line = <>))
{
    if ($line =~ /The temperature at P(\d*) is (\d*)F./)
    {
        push(@vals, "($1,$2)");
    }
}
print "The temperature at P%d is %dF. {";
for (my $i = 0; $i < @vals; $i++)
{
    print $vals[$i];
    if ($i < @vals - 1)
    {
        print ",";
    }
}
print "}\n";

Вывод от этого isL

The temperature at P%d is %dF. {(1,35),(1,40),(3,35),(1,40)}

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

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

Я не знаю ни о каком определенном инструменте, чтобы сделать это. То, что я сделал, когда у меня была подобная проблема для решения, пыталось предположить регулярные выражения для соответствия строкам.

Я затем обработал файлы и отобразил только несопоставленные строки. Если строка несопоставлена, это означает, что шаблон является неправильным и должен быть настроен, или другой шаблон должен быть добавлен.

Приблизительно после часа работы я преуспел в том, чтобы найти, что эти ~20 шаблонов соответствуют 10000 + строки.

В Вашем случае можно сначала "предположить", что один шаблон "The temperature at P[1-3] is [0-9]{2}F.". При повторной обработке файла, удаляющего какую-либо подобранную строку он уезжает "только":

Регистратор останавливается.

Регистратор запущен.

Которому можно затем соответствовать "Logger (.+).".

Можно затем совершенствовать шаблоны и найти, что новые соответствуют целому журналу.

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

Парк @Derek: Ну, даже сильный AI не мог быть уверен, что имел правильный ответ.

Возможно, некоторый подобный сжатию механизм мог использоваться:

  1. Найдите большие, частые подстроки
  2. Найдите большие, частые шаблоны подстроки. (т.е. [pattern:1] [спам] [pattern:2])

Другой объект для рассмотрения мог бы быть должен сгруппировать строки расстоянием редактирования. Группировка подобных строк должна разделить проблему на блоки one-pattern-per-group.

На самом деле, если бы Вам удается записать это, сообщите целому миру, я думаю, что многие из нас хотели бы этот инструмент!

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

@Anders

Ну, даже сильный AI не мог быть уверен, что имел правильный ответ.

Я думал, что достаточно сильный AI мог обычно выяснять правильный ответ от контекста. например, Сильный AI мог распознать, что "35F" в этом контексте температура и не шестнадцатеричное число. Существуют определенно случаи, где даже сильный AI не мог бы ответить. Это - те же случаи, где человек не мог бы ответить, хотя (принятие очень сильного AI).

Конечно, это действительно не имеет значения, так как у нас нет сильного AI.:)

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

@John: Я думаю, что вопрос касается алгоритма, который на самом деле распознает шаблоны в файлах журнала и автоматически "предполагает" соответствующие строки формата и данные для них. *scanf семейство не может сделать этого самостоятельно, оно может только помочь, после того как шаблоны были распознаны во-первых.

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

http://www.logparser.com вперед к форуму IIS, который кажется довольно активным. Это - официальный сайт для "Инструментария Синтаксического анализатора Журнала Gabriele Giuseppini". В то время как я на самом деле никогда не использовал этот инструмент, я действительно забирал дешевую копию книги от Amazon Marketplace - сегодня, копия - всего 16$. Ничто не бьет мертвый древовидный интерфейс для того, чтобы просто просмотреть страницы.

Глядя на этот форум, я ранее не услышал о "Новом инструменте GUI для Синтаксического анализатора Журнала MS, Ящерица Синтаксического анализатора Журнала" по http://www.lizardl.com/.

Ключевым вопросом, конечно, является сложность Вашей ГРАММАТИКИ. Для использования любого вида синтаксического анализатора журнала как, термин является наиболее часто используемым, необходимо знать точно, для чего Вы сканируете, можно записать BNF для него. Много лет назад я взял курс на основе "Книги Дракона Aho-Ullman", и полностью понятая технология LALR может дать Вам оптимальную скорость, при условии, конечно, что у Вас есть это CFG.

С другой стороны, действительно кажется, что Вы возможно достигаете чего-то подобного АЙ, которое является другим порядком сложности полностью.

0
ответ дан 18 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

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