All streams
Search
Write a publication
Pull to refresh
57
0
Viacheslav Kovalevskyi @b0noII

Google Cloud / DeepLearning

Send message
Не могли бы вы пояснить графики для примеров 1 и 2, почему там по оси-Y одни нули?


Виноват, мой косяк. В последний момент поменял тип графика и не обратил внимание, что Pages испортили ось-Y — в целом, там вероятность и суть он все еще отображает верно. Завтра постараюсь глянуть чего там сломалось.

И ещё все примеры англоязычные, есть какой-нибудь минимальный пример разбиения текста на русском? Например, разбить саму приведенную статью на предложения.


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

— модели можно тренировать до их использования;
— модели можно использовать много раз.

Само собой AIF будет работать медленней. И сели честно, первая версия было ОЧЕНЬ медленной. Помимо всего сказанного, это была еще одна причина переписать AIF, а не делать все на базе старой версии.

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

Спасибо за ссылку на вашу систему QA, — на досуге гляну. А есть код где посмотреть?
Прежде чем ответить на Ваши вопросы я хочу поблагодарить Вас за конструктивный, а главное полезный комментарий.

Давайте тогда заменим ещё и все пробелы на слово «грязь» и проверим, как работают NLP библиотеки. Зачем создавать дополнительные неестественные трудности, а затем пытаться решить их?


Как было сказано в статье, книга изначально была непригодной для обработки стандартными библиотеками. Там были использованы кавычки и еще несколько символов в нестандартной кодировке. Т.е. без дополнительных искажений использовать данную (и очень много других) книгу после OCR с указанными NLP библиотеки НЕЛЬЗЯ. Просто без изменений результат получается не таким очевидным и требует дополнительных пояснений. Так что введение доп. искаженного символа вызвано лишь ленью)

По поводу замены пробела на слово «грязь» то AIF действительно не сможет определить его как пробел. Но не потому, что алгоритм этого не может, а конкретная реализация пока не умеет искать в качестве пробела множество символов — сейчас мы подразумеваем, что это один символ (и это действительно «костыль»). А вот если заменить пробел, скажем символом «а», то алгоритм сможет определить, что это пробел. Единственное, в таком случае мы не сможем сказать, где символ «а» используется как пробел, а где как символ. Подозреваю, что ответ на это не смог бы дать и человек, который бы попытался изучить новый язык без данных о нем.

Так что же это за формула, и почему она не является языковой моделью, от которых вы так стремитесь уйти?


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

Мне кажется, или во всех примерах «наиболее вероятные» разделители предложений на самом деле такими не являются?


Как я уже сказал в Alpha1 мы еще не умеем делить символы на группы, т.е. мы выделяем подмножество «технических символов». Однако в unstable брачные уже есть код, который, имея эти данные, может разбить символы на группы и сказать, что символы "?!." делят текст на предложения, а остальные делят само предложение внутри. И, повторюсь, это мы делаем не зная какой язык во входном тексте.

Чем это проще обычного составления списка символов-разделителей?
Как это решает проблему контекста, когда символ может являться или не являться разделителем предложений (например, точка в аббревиатурах — С.С.С.Р.)?


Это не проще, а сложней. Однако на огромной кучи книг после OCR скачанных с того же gutenberg library символы используются в нестандартной кодировке. А, соотвественно, стандартные модели, которые идут из коробки в OpenNLP не могут их разбить. Само собой можно потренировать, но зачем это нужно, если общий алгоритм, который определяет нужные символы сразу?

По поводу С.С.С.Р., то пока эта часть не решена, и она не может быть решена до тех пор, пока мы не доделаем семантический анализатор, который умеет понимать сущности такого порядка. Для того, чтобы понять забыл человек поставить пробел или это аббревиатура можно:
— или захардкодить разные аббревиатуры и другие аномалии (что просто совсем не работает при обработке, ну, например, чатов школьников из ICQ)
— проведя семантический анализ ответить на этот вопрос

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

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


И вновь, вы полностью правы. Мы просто думали делать один модуль, который назвать лематизатор, так как рано или поздно он будет выполнять именно эту функцию. Однако мы пересмотрели подходи и, дабы не путаться с терминами, в Alpha2 будет именно стемминг модуль.
Спасибо большое и Вам! По поводу заданий постараюсь учесть во второй части)
Благодарю за ссылку. Ранее не поподалась на глаза =(
Ну, как говорится, сделай все максимально просто но не проще чем это возможно. Само собой я не говорю о тех вариантах где это навредит.
Проблема черезмерного комментирования и написания все-в-одном методов очень свойственна, почему то, именно Инженерам, т.е. тем кто больше работает с мат. аппаратом а не реализацией. И часто такой код трудно поддерживать без рефакторинга, даже если он и неплохо документирован.
И это позволяет быстро локализовтаь эти 10% костыльных и не очивидных мест в коде, которыми необходимо занятся в первую очередь. Там и коментарий можно поставить с пометкой // TODO…
Соглашусь с тем что мне действительно стоило упомянуть это более точно в статье. Однако не нравится мотивировка этого необходимостью произвести позитивное впечатление на работодателя или опасностью произвести негативное впечатление.
Я же предупреждал, код учебный. Буду уповать на то что сюда слушатели не подсмотрят =). Хорошо что хоть не все указали и еще многое пока осталось за кадром.

Так как уже затронули эти вопросы, честно признаюсь что один из пунктов был мною допущен не специально, а именно хранилище констант =(
Да, думаю Вы правы, командной разработки тут не будет =(
Я тоже думаю начать там курс, уже ОЧЕНЬ давно, однако там для курса необходимо довольно много времени, а самое главное постоянно выделять это время. Как только буду видеть что есть возможность, курс появится, надеюсь это будет скоро.
На Java часть — да. На остальное по возможности, но тоже скорее всего да.
Может, тогда и не стоит?


Вопрос верный. Но иногда стоит заманено на надо и тогда вопрос даже не ставится =)

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


Тут скорее минус моему умению приминять описаные Вами методы. А по поводу недокументированные требований то это странно совмещать требаования и недокументированные в одном месте.
А зачем?
Экзамен — тест на степень соответствия требованиям сертификации. Нужен еще тест на степень готовности к тесту на степень соответствия требованиям сертификации?


Я уже отметил что в момент когда подготовил специались (с позиции того кто готовит) поселдняя задача для меня создать условия в которых человеку будет комфортно его сдавать. Стараюсь макимально повысить степень его уверенности перед тем как отправить в центр по сертификации. Повторюсь что это делаю ТОЛЬКО в момент когда группа (специалсит) готовы по уровню без затруднений пройти этот тест. Он направлен не на контроль а скорее на то что бы студенты поняли что они действительно готовы. Обычно в конце этого теста мнение у людей такое — «и это все?». Так как многие ожидают нечто более сложного, страшного ну и чего там сами додумывают еще.

Я тоже поначалу боялся. Это заставляло меня лучше готовиться. Логично? :)


И вновь оговорюсь что я говорю о моменте когда люди уже давно готовы (а то и существенно выше по уровню) к сдаче но не идут. Часто у меня нету возможности перенести сроки сдачи для группы или конкретного человека и мне не кажется что если он волнуется с этим ничего не стоит делать.
Дампы это лишь инструмент и Вы почему то описали его самое плохое применение (еще и исказив мои цифры с 10ти до 90та) и после этого критикуете то, о чем я не хотел сказать (хотя наверное не совсем точно высказал мысли в тексте). Но если не рассматривать то оч ем я говорил в статье то я соглашусь — дампером быть плохо и не стоит.

Но я все же постараюсь уточнить свою позицию. Я выпускал много групп студентов которые шли на сдачу Java Programmer I. В конце курса я выбирал немного (до 15ти) вопросов с дампов дабы дать мини контрольную на степень готовности к сдаче. Если бы вопросы из дампов были идентичны на 90 процентов то я бы для сутдентов предумал свои собственные но все-равно близкие по уровню, но так как вероятность того что они встретят такой же вопсро на сертификации что и в тех дампах которые у меня очень мала то не вижу необходимости не использовать дампы.

Так же многие специалисты очень часто даже уже давно выйдя на уровень сертификата боятся идти его сдавать. Тут играет роль два фактора — простая неуверенность в себе (очень часто особенно свойственно тем кто идет сертифицироваться первый раз в жизни), а так же боязнь потерять, хоть не большие, но все же деньги. В таких случаях дампы ОЧЕНЬ помогают удостоверится что человек готов, успокоить его показав что он спокойно с первого раза отвечает на все впосросы которые по сложности соответствуют экзамену и отправить его на сдачу.

Хочу в конце еще раз подчеркнуть что дампы это лишь инструмент и при его наличии нужно понимать как его правильно использовать, и само собой не верное использование не есть хороше.
Сегодня только сдал. Немного затянул =( Статья будет на этой неделе.
Спасибо за обновление каталога. Все указано верно. Над лицензией еще думаем как только будет окончательное решение то сразу опубликуем. Однозначно можно использовать в сторонних приложениях. По поводу замечаний они все имеют место быть и каждое из них уже расписано в планах, так все это будет (maven, чистка репозитория, исправление формулировок т.д.).

Единственное это скорее всего не будем переезжать с Bitbucket так как все же уже начато все тут, и плюс хочется использовать mercurial.

И спасибо огромное за поздравления!

Information

Rating
Does not participate
Location
Mountain View, California, США
Date of birth
Registered
Activity