Лаборатория искусственного интеллекта Facebook объявила (https://code.facebook.com/posts/1438652669495149/fair-open-s.../) об открытии исходных текстов библиотеки fastText, предоставляющей средства для классификации текста с использованием методов машинного обучения. Код написан на языке C++ и открыт (https://github.com/facebookresearch/fastText) под лицензией BSD. Библиотека позволяет организовать автоматическое назначение категорий для произвольного текста, на основании предварительно проведённого обучения по наборам текстов с уже известными категориями. Например, fastText может оценить является ли письмо спамом или определить к какой категории относится статья (научная, спорт, финансы, развлечения и т.п.), после обучения по типовым базам спама и тематических статей.
Из достоинств fastText отмечается поддержка различных языков и очень высокая скорость обучения. Например, обучение fastText по базе Yahoo (https://www.opennet.ru/opennews/art.shtml?num=43674) длится всего 5 секунд и обеспечивает точность классификации 72.3%, в то время как char-CNN (https://github.com/yoonkim/lstm-char-cnn) выполняет эту работу за 1 день при точности 71.2%, а VDCNN за 2 часа при точности 73.4%. Результирующая классификация также выполняется на несколько порядков быстрее существующих аналогов.Для увеличения производительности работы с большим числом категорий в fastText применяется иерархический классификатор, организующих хранение категорий в древовидной структуре, вместо обычно применяемых плоских моделей. При этом дерево строится с учётом популярности категорий, что позволяет повысить скорость доступа к частоиспользуемым элементам. При тестировании модели, в обучении которой применялась база в 1 миллиард слов и более 300 тысяч категорий, на обучение было потрачено менее 10 минут, а на классификацию выборки из 500 тысяч записей менее 5 минут (около 1700 сопоставлений в секунду) на системе с обычным многоядерным CPU.
URL: https://code.facebook.com/posts/1438652669495149/fair-open-s.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=45018
Новости на Opennet и Хабре сразу классифицировать
Главное мудро выбрать классификацию. Для Опеннета подойдет такая
- "systemd нанес очередное улучшение на радость всему прогрессивному человечеству"
- "Mozilla продолжает заниматься фигней вместо браузера"
- "Microsoft открыла код очередного продукта"
- "вышла новая версия DE X с нескучными обоями"
to rob pike: про systemd не согласен, в остальном в точку
Про systemd вы согласны - либо с "нанес", либо с "улучшением".
не заметил сарказма :). С улучшением конечно
Маловато категорий. Незаслуженно забытые:
- "кто-то в Canonical решил, что, может быть, в следующем релизе они сделают не так, как в предыдущем, хотя ручаться за это никто не может"
- "wine исправил очередное множество ошибок для улучшения совместимости с чем попало"
- "вышла новая версия популярного открытого продукта с неудобопроизносимым названием: перечень изменений без уточнения, что этот продукт вообще делает"
- "в РФ тоже есть IT! Качайте наш дистрибутив и приезжайте на конференцию в Минск (реклама)"
- "Facebook открыл код ещё одной библиотеки, являющейся частью Skynet"
- "Компания Canonical представила Altthing, являющийся конкурентом Something компании Red Hat"
- "Критическая уязвимость в NodeJS, получившая названия Not-a-JS"
Про systemd "нанёс непоправимое очередное улучшение" будет точнее и правильнее :-)
На коменты напустить. Классификация будет примерно такая:
- Старпер ноет про то что раньше солнце светило ярче.
- Школьник хвастается новым гибридом арча и генты.
- Хейтер ругает системд.
- Тролль жирно троллит.Это пожалуй все паттерны которые можно найти в коментах опеннета.
лучше комменты классифицировать, чтобы порядок.
А иерархии тегов сайтов, сделанные этим fastText, доступны где-то в готовом виде?
а тип "хрень, которую и читать не стоит", там есть?
С этим все очень и очень плохо.
Категорное деление, упомянутое вами, хоть и в несколько резкой, но безусловно понятной и емкой формуле, невозможно без качественного профиля пользователя по отношению к новостям.
Если ваш профиль укладывается в до предела упрощенное "новости - да, спорт - нет" (или наоборот), то все, конечно, легко. Проблема в том что никакой реальный профиль в такую формулу не укладывается.
Выхода два - либо заставить вас составить свой профиль максимально подробно, но никакой реальный пользователь это делать не станет - либо вычислять его автоматически подсовывая вам относительно случайные новости и глядя на то что вы отвергнете с возмущением, а что наоборот, лайкнете.
С первого взгляда такая схема представляется реалистичной, но уже со второго выясняется что она тоже не работает - ведь по сути таким образом пользователю предлагается натренировать свою собственную нейросеть, что он задолбается делать приблизительно на первых 0.0001% новостей от необходимых для качественной тренировки.
Да ну ладно, в чем проблема построить "бинарный" классификатор? В тематических лентах новости появляются не так часто, а если пользователь жмет кнопку "еще", то значит подписывается на смежные тематики, как только перестанет, так сразу обозначит круг интересов и уровень вовлеченности.
Соцсети уже давно подсовывают посты, похожие на те, что вы чаще всего читаете, и/или из групп/пабликов, похожих на те, на которые вы подписаны. Похожесть паблика N на другие определяется либо по категориям, если они указаны, либо по тому, на что ещё подписано большинство подписчиков паблика N.
И да, можно нажать "Крестик"/"Не интересно", чтобы пост из ленты скрылся, тогда паблик получает минус к персональному скору для юзера и появляется реже, после достижения некоторого низкого значения скора – не показывается никогда.
> по сути таким образом пользователю предлагается натренировать свою собственную нейросеть,По сути вы слишком много хотите от пользователей - 95% пользователей хронически не способны к тренировке СВОЕЙ нейросети. А вы хотите чтобы они еще и чужую натренировали.
Критерии такого типа неопределимы. Донцова не даст соврать.
Исходники донцовой будут опубликованы позже, когда она начнет проходить тест Тьюринга. А пока ценность ее свидетельств околонулевая.
клоун: банальный поиск по ключевым словам теперь стал ещё быстрее.Если нашёл слова "дебет", "кредит", "счёт", "отчётность", значит это "бухгалтерия".
...а может ещё и криминал. Тут нужно осмотреть окружающие слова - контекст.
клоун: для криминала будут другие ключевые слова. Один текст может иметь несколько тем.
Так и я о том же, по наличию слов дебет/кредитом нельзя однозначно сказать, что это текст по бухгалтерии.
Именно что можно. Другое дело, что это может быть кирминальная бухгалтерия, ну так это другой вопрос, решаемый отдельно.
клоун: я привёл упрощённый пример.Берётся набор текстов заранее известной тематики и по ним определяются ключевые слова. Определяются веса слова, калибруется функция расстояния.
Затем берётся набор текстов другой тематики и проводится повторная калибровка.
Получили список ключевых слов и веса для них. Теперь можно юзать.
В основе всех подобных алгоритмов лежит полином, с которым игрались ещё в 60-е. Где-то полином в явном виде, где-то как параметры функции расстояния, где-то (в нейросетях) как вес узлов, но полином это один хрен полином. Ничего нового не придумали, поэтому ускоряют то, что есть.
Что-то интересное есть только у Интел с её интеллектуальным процессором (лабораторную крысу разрезали, записали как соединены нейроны мозга, заменили их на транзисторы и вроде как получили принципиально новое распознавание образов), но он пока в бете.
> Если нашёл слова "дебет", "кредит", "счёт", "отчётность", значит это "бухгалтерия".неа, это комментарий к новости "Facebook открыл код библиотеки классификации текста fastText"
Ну да, вот если б оно сами категории могло само формировать...
Ещё как нужно. Язык-то описан, только то, что реально ищешь - редко чётко куда-то попадает. Если я ищу всё о DIY-применении серводвигателей в быту - лучше, если мне ещё притащит (возможно, по просьбе) "соседнее" - шаговики, например, или соленоиды. Ну потому что функции у них иногда похожие. И вот на этом "иногда" подход через антологии и ломается. К примеру, что в других случаях для похожих задач используют вообще банки с водой (открытие форточек для теплиц).Не зря популярные в своё время каталоги сайтов (где были именно продуманные классификации) благополучно померли.
клоун: поиск - это другая задача, более сложная по отношению к классификации.Даже в случае двух людей прежде чем задать вопрос, нужно знать половину ответа. Общение чаще всего идёт путём уточнения вопроса, у поисковика такой возможности нет.
Я несколько недель искал дешёвый датчик прикосновения. По-английски они называются FSR или "touch sensor". Только вот фраза "touch sensor" является зарегестрированной торговой маркой компании "FSR". Понятно, что компания продаёт свои датчики по цене 500-1500 руб. Нужный мне датчик называется "тензо BF350-3AA" и стоит 30 руб. Ты или знаешь половину ответа ("тензо") или переплачиваешь жлобам.
Ну так классификация нужна либо для поиска, либо для подкидывания "похожего"/"возможно интересного" - в случае Фейсбука и подобных уж точно.И как раз в вашем случае ответ находится именно расширением области поиска (и исключением потом из неё FSR) - быстро высните, что нужная вам штука называется strain gauge. Только не прикосновения, а нажатия, наверное. Touch sensor и strain gauge - это совсем разные вещи.
клоун: в какую сторону расширять хочешь?Поисковый запрос: "сдача IELTS" (экзамен такой). Что интересует вопрошающего? По хорошему, он должен получить FAQ с ответами на часто задаваемые вопросы из которых он выберет интересующие, но такие штуки автоматически пока не создаются.
Или более сложный запрос - "отпуск в октябре", ответ на который должен учитывать личные предпочтения, предыдущий опыт, сезонность, акции авиакомпаний и пр.
Да что попало - что рядом лежит по какой-то метрике в запрос добавить. И дать кнопочку возле каждого результата "убрать этот и похожие". В общем-то примерно так и происходит, когда гуглишь всерьёз - но когда пытаешься уточнять, руками подставляя/исключая слова, велики шансы пропустить какой-то раздел, который, в общем-то, нужен - в примере выше это были бы соленоиды, допустим.Для "сдача IELTS" - вероятно, ближними будут TOEFL, учебники/курсы/репетиторы по английскому, аналогичные экзамены для других языков.
Для "отпуск в октябре" надо увидеть, что это очень generic и расширять особо некуда. Зато сужать - сколько угодно.
Советую
https://ru.m.wikipedia.org/wiki/%D0%9E%D1...
клоун: где-то рядом всплывёт красный октябрь, "Охота за красным октябрём", устройство подводных лодок, а пользователь потом сидит и офигевает почему по запросу "отпуск в октябре" ему предлагают форум ветеранов-подводников.
Ну вот поэтому на слишком общие запросы (ловить можно банально по числу подходящих страниц) дополнительное ничего добавлять не нужно.Кстати, сейчас гугл действует совершенно безумно - если на запрос находится мало результатов он с завидным усердием начинает подсовывать страницы, релевантные запросу с одним отброшенным словом. Бред выходит просто редкостный, и помечает он это так скромно, что хрен заметишь с первого раза без UserCSS.
> к какой категории относится статья (научная...теперь корчеватели можно сортировать
Прятно видеть человеческие суффиксы у файлов с исходниками.
Это filename extension что ли? Чем .cc примечательнее?
Интересно, какая категория будет корнем в дереве категорий? Философия?
>обучение fastText по базе Yahoo длится всего 5 секундА не гонево ли? Эта база весит 1.5 терабайта и получается, что диски читают со скоростью не менее 300Гб/секунду и такой же объем обрабатывает программа в оставшиеся микросекунды.
> точность классификации 72.3%,Что понимать под этой цифрой? Совпадение с результатом аналогичной работы, проделанной человеком?