• Классификация текста с помощью нейронной сети на Java
    0
    Добавил поддержку H2.
  • Классификация текста с помощью нейронной сети на Java
    0
    Да, я про H2 уже думал, у меня это даже записано в TODO. Она действительно должен быть быстрее.
  • Классификация текста с помощью нейронной сети на Java
    0
    Универсальных обучающих данных не существует. Они для каждой отдельной задачи подбираются индивидуально, поэтому заранее включить что-то в проект нельзя.

    Файл test_db/test.xlsx используется в JUnit-тестах и служит для тестирования модуля считывания Excel-файла. Его использовать в качестве обучающих данных не нужно.

    При моей попытке «набить хотя бы 100-200 текстов» прога тупо зависает на пару часов

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

    Посему хотелось бы посмотреть сначала на уже работающий вариант, чем самому топтаться по всем Вами уже пройденнным граблям.

    Чтобы увидеть работающий вариант, его нужно обучить именно на ваших данных.
  • Классификация текста с помощью нейронной сети на Java
    0
    У вас слишком маленький объем обучающих данных. Настолько маленький, что не выполняется требование, что униграмма должна встречаться хотя бы в 4 разных текстах — только в этом случае она добавится в словарь. В вашем случае словарь пустой. Вам нужно хотя бы 100-200 обучающих текстов даже для «попробовать».

    А зачем вам винда? Скомпилироваться и запуститься должно в любой системе. Если проблема в подготовке XLSX-файла, то тут Google Docs в помощь.
  • Классификация текста с помощью нейронной сети на Java
    0
    Результат классификации зависит не от количества, а от наличия в анализируемом тексте слова (точнее сказать, фрагмента) из словаря. Если использовать биграммы (или триграммы) вместо униграмм, то частично будет учитываться и порядок следования («Я люблю вкусное мороженное» --> [«я люблю», «люблю вкусное», «вкусное мороженное»]). Для использования биграмм в конфигурационном файле программы нужно сменить параметр ngram_strategy с filtered_unigram на bigram или filtered_bigram.
  • Классификация текста с помощью нейронной сети на Java
    –1
    Иногда используют комбинацию нескольких классификаторов. Правда, не такую сложную, как вы описали. Но это дает несущественный прирост производительности по сравнение с затраченными усилиями на разработку. Есть смысл с этим заморачиваться, если твоя программа будет соревноваться с другими и 1-2% к точности могут обеспечить победу.

    Лучше выбрать какой-то один классификатор и направить силы на увеличение его точности. В многослойной модели, скорее всего, все упрется в бутылочное горлышко — самый неточный слой будет портить общую картину.
  • Классификация текста с помощью нейронной сети на Java
    0
    Я добавил поддержку Maven в свой проект, поэтому теперь можно взять за основу его, а не форк. На каком конкретно этапе у вас возникли проблемы и какого они рода?
  • Классификация текста с помощью нейронной сети на Java
    0
    Добавил поддержку Maven. Файл pom.xml доступен на Github.
  • Классификация текста с помощью нейронной сети на Java
    +1
    Принято. Проведу детальный анализ и внесу правки.
  • Классификация текста с помощью нейронной сети на Java
    0
    Вы сказали что не будете искать готовых решений(к слову, почему?), но тем не менее уже взяли некоторые существующие подходы.

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

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

    Под качеством вы понимаете точность классификации? Конкретных сравнений с другими решениями я не проводил, но точность в районе 80% считается очень хорошим показателем в задачах классификации текста. На самом деле, тут от инструмента зависит только скорость и объем используемых ресурсов, но никак не точность.
  • Классификация текста с помощью нейронной сети на Java
    0
    Я изначально взял в качестве реализации нейронной сети именно deeplearning4j, но только создание сети с несколькими тысячами нейронов во входном и скрытом слоях длилось более получаса на очень неслабой машине. конечно, может быть стоило глубже поковыряться в параметрах, но я решил сменить фреймворк на Encog, у которого из коробки не было проблем со производительностью — на нем и остановился.
  • Классификация текста с помощью нейронной сети на Java
    0
    Я не использовал Maven для этого проекта, но вот тут уже есть форк с необходимым вам файлом pom.xml.

    P.S.: надо бы и к своему проекту прикрутить Maven. Займусь.
  • SAP ERP / ABAP полезные ресурсы
    0
    Ужаснитесь еще больше.

  • SAP ERP / ABAP полезные ресурсы
    0
    На sapland.ru часто бывают полезные статьи по ABAP. Есть еще русскоязычный форум sapforum.biz.
  • [ABAP] Учимся правильно использовать FOR ALL ENTRIES IN
    +1
    Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?

    В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
  • [ABAP] Учимся правильно использовать FOR ALL ENTRIES IN
    0
    Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?

    В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).


    Промахнулся.
  • [ABAP] Учимся правильно использовать FOR ALL ENTRIES IN
    0
    Кажется, средствами SAP нельзя узнать объем памяти, который потребовался для отдельного запроса. Но точно можно узнать эту информацию с помощью инструментов СУБД. Попробуйте обратиться к администратору БД.
  • [ABAP] Учимся правильно использовать FOR ALL ENTRIES IN
    0
    1. Дубли, конечно, нужно удалять заранее. Но в данном примере дублей во внутренней таблице LT_BKPF не будет, т.к. выбираются ключевые поля. Будут отдельные колонки с неуникальными значениями.

    2. Касаемо RANGE. У конструкции вида «SELECT… FROM… WHERE field IN RANGE» есть существенный недостаток, с которым вы, похоже, еще не столкнулись: если в RANGE будет большое число строк (2000+), то получите dump с ошибкой DBIF_RSQL_INVALID_RSQL из-за того, что размер SQL-запроса в килобайтах превысит некоторую границу. Вот в таких случаях и спасает FOR ALL ENTRIES IN.
  • Как побрить %username%
    0
    Пробовал перейти на электробритву Panasonic ES-LF51. Полгода ей брился в режиме «почти каждый день». В итоге все равно вернулся к станку. Что не понравилось в электробритве:

    1. Лицо у меня не круглое, поэтому область шеи бреет очень плохо, из-за чего приходилось несколько раз тереть одно и то же место, что доставляло дискомфорт, появлялось даже не раздражение, а натёртость кожи.
    2. После ванной либо летом в жаркую влажную погоду по сухому побриться практически невозможно: бритва цепляет кожу.
    3. При влажном бритье с пеной/гелем бритва бреет приятнее, чем при сухом, но во время бритья станком ты провел его по лицу и понятно где сбрил, а электробритва взбивает пену на лице и теряешь визуальный контроль над растительностью. Приходится руками щетину под взбитой пеной ощупывать.
    4. Самый большой для меня недостаток — нет чувства свежести после бритья. Даже всякие лосьоны не спасали.

    Сейчас пользуюсь станком Gillette Fusion. Против роста волос не бреюсь (все равно на следующий день уже щетина чувствуется), поэтому раздражений на коже нет и можно реже менять кассеты. У меня одной кассеты хватает на 2-3 месяца. Покупаю их на алиэкспрессе.
  • Запуск SQL запросов в SAP
    0
    В принципе, ничего не мешает. Между «усложнить код парсера» и «ввести несложное правило» выбрал второе. В будущем, возможно, поправлю.
  • Запуск SQL запросов в SAP
    0
    Одно правило: если используется конструкция COUNT(), то после нее нужно дописывать «AS cnt», чтобы корректно сгенерировался ALV-Grid.
  • Запуск SQL запросов в SAP
    0
    Если кратко, то операторы INSERT REPORT и GENERATE SUBROUTINE POOL отличаются между собой тем, что первый динамически создает программу и сохраняет ее в хранилище как полноценную, которую можно потом редактировать руками, а второй оператор создает временную программу, которая перестанет существовать после очистки пула (закрытия транзакции). Пост-обработку можно делать в обоих случаях, поэтому не вижу смысла для нашей задачи использовать оператор INSERT REPORT. К тому же, я не уверен, что он корректно отработает в тестовой или продуктивной системе из-за того, что они закрыты для создания/редактирования программ в хранилище.
  • Запуск SQL запросов в SAP
    0
    1. Гарантированно будет работать на SAP ERP 6.0.

    2. Да, есть одно ограничение у метода create_dynamic_table: нельзя для одной программы создавать более 36 динамических таблиц. Такое же ограничение существует для оператора generate subroutine pools (нельзя сгенерировать более 36 программ).

    Так как оба оператора используются в нашей программе, а пул у них общий, то, не выходя из программы, можно только 18 раз выполнить запрос (т.е. нажать «Выполнить», затем кнопку «Назад»), на 19 будет дамп. Конкретно в нашем случае эту проблему можно побороть путем автоматического перезапуска программы на 19 раз (пул очищается при этом). Примерно так:

      try.
          generate subroutine pool code name prog
                                        message msg.
        catch cx_root.
          submit ZSQL.
      endtry.
    

    Предварительно введенный запрос можно сохранить в ABAP Memory, а после перезапуску достать его оттуда.

    3. Расскажите, пожалуйста, подробнее, что это за компонент. Пока не совсем понимаю, о чем речь.