leturfu.fr — это блог, который создается автоматически, без вмешательства человека. В нем используется около 15 ML-моделей, обученных под разные задачи, которые решают все сложные вопросы его построения. Создаваемые статьи имеют высокое качество и должным образом выделены.

Области: машинное обучение, НЛП, веб-сканирование, автоматизация

Об авторе: я доктор наук и фрилансер в области машинного обучения/науки о данных/ИТ-безопасности. Я открыт для коротких миссий, посетите https://paul-irolla.comдля получения дополнительной информации.

Введение

Этот проект является личным проектом, в рамках которого я создал автоматизированную систему создания блогов с нуля примерно за 2 месяца (с последующими исправлениями отдельных ошибок). Это было больше о том, чтобы погрузиться в область НЛП и развить свои навыки, чем о создании реального бизнеса, хотя потенциально он таковым и является.

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

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

Результат очень убедительный, поэтому трудно понять, что 100% сайта сгенерировано автоматически. Это одна из причин, по которой я не буду публиковать код или рабочее описание. В настоящее время он находится в Интернете по адресу leturfu.fr и публикует около 1 новой статьи в час.

Примечание. Я предполагаю, что читатель знает, что такое модель машинного обучения, НЛП, встраивание текста и т. д., т. е. повторяющиеся темы машинного обучения и применительно к обработке естественного языка.

Задачи проекта авто-сайт

Цель проекта auto-website — создать качественный веб-сайт без вмешательства человека. Рамки, которые я установил для себя, - это общая стоимость проекта менее 1000 евро и, по крайней мере, заработать достаточно денег на том, что произведено, чтобы окупить затраты. Сайт должен каким-то образом разрешать продажу товаров. Для этого существуют рекламные фреймворки, которые без моего контроля будут показывать таргетированную рекламу для пользователей.

Я против такого рода систем, в которых пользовательские данные становятся ресурсом для лучшего предложения покупок. Я подробно излагаю эти причины в статье [Пол Иролла, Отслеживание пользователей и Facebook: эпоха глобальной слежки, SecuriteOff 2016] см. Научные публикации на моем личном сайте. Подводя итог, я думаю, что это подталкивает все компании к конкуренции, которая в конечном итоге вредна для пользователей и общества. Если я не позволяю себе продавать продукты на основе пользователя, мне остается продавать продукты на основе содержания статьи (и, следовательно, сиюминутного интереса читателя). Статья, в которой рассказывается о планете Марс, как в первой статье сайта, будет затем продавать товары, связанные с Марсом.

Тогда у меня появилась идея продавать книги. На любую тему обязательно найдется книга, и вторая важная вещь заключается в том, что книги продаются на обложке. Так что вам просто нужно разместить обложки книг на странице, чтобы продать их. Итак, у вас есть для каждой статьи книги, в которых рассказывается о ее предмете. Я пошел через Amazon для продажи. Это позволяет мне искать книги, соответствующие каждой статье, а также получать комиссию в размере 6–7%.

Теперь, что касается самих статей, чтобы они были качественными, они должны быть написаны людьми. На данный момент мне кажется невозможным, даже с невероятными достижениями машинного обучения, создавать качественный контент, который на 100% состоял бы из алгоритма машинного обучения. Поэтому я выбрал перевод существующих статей. Идея, которой я придерживался, — перевести английский блог на французский, сохранив отступы текста и некоторые изображения, необходимые для понимания. Я не буду приводить источник, позволяющий мне создать leturfu.fr, хотя его легко найти.

Вивисекция статьи

Детализируем сложности задачи на примере: https://blog.csiro.au/ai-relieves-data-drought-for-farmers/. Что такое статья? Как он устроен? Давайте вивисектируем эту статью.

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

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

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

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

Затем статья ссылается на другие статьи для углубления определенных тем. Эти внешние ссылки вообще не следует трогать, так как они необходимы для понимания и ссылки — в отличие от внутренних ссылок, о которых я буду говорить далее.

Чтобы на статью хорошо ссылались, она должна иметь внутренние ссылки, проходящие через все статьи в блоге. Если кто-то перейдет по ссылке включает нашу технологию Graincast™, он наткнется на другую статью, которая, вероятно, также ссылается на другие статьи в том же блоге. Каждая статья — это окно во внутреннее дерево ссылок блога. Чтобы мой блог тоже имел такую ​​древовидную структуру, я скопировал ее рекурсивно. То есть робот, который просматривает статью, следует за всеми связанными статьями, пока не узнает все статьи (неограниченный уровень рекурсии), ссылающиеся друг на друга, и я не начну создавать свой блог по листьям дерева. Это позволяет автоматически воспроизводить внутреннее дерево блога.

Отступы и формат текста должны быть соблюдены, чтобы статья была читабельной. Необходимо, чтобы перевод был выполнен в формате HTML, иначе все эти усилия будут напрасными (статья будет настолько уродливой, что ее никто не будет читать). Например, предложение Это «впервые отчет включает более широкие предикторы сельскохозяйственной ценности, такие как климат» в необработанном виде представляет собой HTML-код :

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

Используемые модели машинного обучения

Я перечисляю здесь все модели, которые я использую, и для каких целей я их использую. На них есть ссылки, что позволит мне упростить объяснение системы.

  • M_1 — Модель субтитров: позволяет описывать изображение на естественном языке. Он используется для выбора изображения, представляющего статью.
  • M_2 — набор моделей перевода: это набор моделей, каждая из которых переводит один язык на другой. Например, для пары fr -› en есть модель, обученная на текстах этих языков и именно в этом направлении; также у пары en -› fr будет своя модель, отличная от первой. Эти модели задействованы почти во всех задачах, так как почти все остальные модели обучаются на английском тексте и есть необходимость внутреннего перевода любого другого языка на английский. Эти переводы несовершенны, но их цель не в том, чтобы сделать текст видимым для конечного пользователя. Преимущество их в том, что они недороги с точки зрения вычислительной мощности.
  • M_3 — модель перевода с очень высокой производительностью en -> fr: это модель, которая используется для создания текста, видимого пользователю. Перевод должен быть как можно лучше. Это единственная модель, которую я не могу запустить на машине, на которой выполняется проект, потому что для этого требуется вычислительная мощность, которой я не могу иметь как личность.
  • M_4 — многоязычная модель встраивания: эта модель используется для определения индекса сходства между двумя текстами, независимо от того, на каком языке они написаны. Он используется, в частности, при выборе изображения и извлечении ключевых слов и тегов из текста.
  • M_5 — Модель сводки текста: эта модель суммирует текст. Размер текста и резюме произвольный. Он используется для создания небольшого описательного резюме статьи, которое вызовет у читателя желание прочитать статью.
  • M_6 – модель Truecasing: эта модель преобразует текст, в котором каждая буква может быть строчной или прописной, в текст, имеющий заглавные буквы, соответствующие контексту. Он используется внутри для правильной обработки заголовков статей. Например, заголовок Ces Virus Découverts au Brésil sont Tellement Énormes qu'ils Remettent en Question ce que nous Pensons être un «Virus» будет преобразован в Ces Virus découverts au Brésil sont. Tellement énormes qu'ils remettent en question ce que nous pensons être un virus».
  • M_7 — последовательный конвейер модели синтаксической декомпозиции: этот модельный конвейер позволяет выполнять синтаксическую декомпозицию текста. В частности, он разбивается на токены, состоящие из нескольких слов (например, "хот-дог" считается токеном в предложении), затем выполняется Часть речи ( PoS) разложение — существительные, местоимения, глаголы, прилагательные, наречия, предлоги, союзы и междометия — затем леммы разлагает слова (находит каноническую форму слово, например: сбой, сбой -› сбой), наконец, последняя модель создает теги NER (распознавание именованных объектов, например: Париж -> тег «местоположение»). Этот конвейер используется для фильтрации того, что важно в тексте.
  • M_8 — модель определения языка: позволяет автоматически управлять перенаправлением на правильную модель перевода, когда это необходимо.
  • M_9 — нулевая модель классификации текста: эта модель позволяет классифицировать текст по разным категориям, выбираемым динамически (т. е. при выполнении обученной модели). Эта модель позволяет классифицировать статьи, а также фильтровать предложения продуктов на странице.
  • M_10 — нулевая модель классификации изображений: эта модель позволяет динамически классифицировать изображение. Он используется для фильтрации предложений продуктов на странице.
  • M_11 — модель OCR(оптическое распознавание символов): эта модель позволяет извлекать текст, присутствующий в изображении. Эта модель используется для фильтрации изображений, выбранных для представления статьи, а также для фильтрации продуктов, предлагаемых для страницы.

Описание системы автосайта

Хорошая картинка стоит тысячи слов.

Заключение

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

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

Редактировать: сейчас я установил минимальную стоимость обработки, и будет всего ~ 100 статей в месяц.