Upgrade to Pro — share decks privately, control downloads, hide ads and more …

От SwiftUI до Core ML и обратно: анализ текста ...

От SwiftUI до Core ML и обратно: анализ текста в iOS

Как превратить текстовый ввод пользователя в ценные инсайты с помощью SwiftUI и Core ML? В этом докладе мы поговорим о работе с текстом в iOS-приложениях: от создания интерфейса для ввода текста на SwiftUI до его анализа с использованием Natural Language и собственной модели на Core ML. Разберем ключевые шаги — от обработки данных для обучения модели и интеграции результатов обратно в интерфейс приложения. Доклад будет полезен разработчикам, желающим добавить анализ текста в свои приложения, а также тем, кто только начинает знакомство с машинным обучением в экосистеме Apple.

Запись доклада: https://www.youtube.com/watch?v=Jp643WnAIOE

Avatar for Artem Novichkov

Artem Novichkov

March 14, 2025
Tweet

More Decks by Artem Novichkov

Other Decks in Programming

Transcript

  1. 2

  2. 4

  3. 5

  4. Как понять пользователя? • ML инженер + Devops инженер •

    Ресурсы бекенда • Интернет • Задержка ответа • Приватность 7
  5. Как понять пользователя? • ML инженер + Devops инженер •

    Ресурсы бекенда • Интернет • Задержка ответа • Приватность 8
  6. Как понять пользователя? • ML инженер + Devops инженер •

    Ресурсы бекенда • Интернет • Задержка ответа • Приватность 9
  7. Как понять пользователя? • ML инженер + Devops инженер •

    Ресурсы бекенда • Интернет • Задержка ответа • Приватность 10
  8. Как понять пользователя? • ML инженер + Devops инженер •

    Ресурсы бекенда • Интернет • Задержка ответа • Приватность 11
  9. О чём поговорим? • Ввод текста • Готовое решение в

    iOS SDK • Работа с машинным обучением 13
  10. О чём поговорим? • Ввод текста • Готовое решение в

    iOS SDK • Работа с машинным обучением 14
  11. О чём поговорим? • Ввод текста • Готовое решение в

    iOS SDK • Работа с машинным обучением 15
  12. Ввод текста • TextEditor • TextField + vertical axis •

    Сторонние библиотеки (RichTextKit, STTextView) • UITextView + UIViewRepresentable 18
  13. Ввод текста • TextEditor • TextField + vertical axis •

    Сторонние библиотеки (RichTextKit, STTextView) • UITextView + UIViewRepresentable 19
  14. Ввод текста • TextEditor • TextField + vertical axis •

    Сторонние библиотеки (RichTextKit, STTextView) • UITextView + UIViewRepresentable 20
  15. Ввод текста • TextEditor • TextField + vertical axis •

    Сторонние библиотеки (RichTextKit, STTextView) • UITextView + UIViewRepresentable 21
  16. 23

  17. Фреймворк Natural Language • Определяет язык • Определяет части речи

    • Распознаёт имена людей, названия мест или организаций • Определяет эмоциональную окраску текста и т. д. 25
  18. Фреймворк Natural Language • Определяет язык • Определяет части речи

    • Распознаёт имена людей, названия мест или организаций • Определяет эмоциональную окраску текста и т. д. 26
  19. Фреймворк Natural Language • Определяет язык • Определяет части речи

    • Распознаёт имена людей, названия мест или организаций • Определяет эмоциональную окраску текста и т. д. 27
  20. Фреймворк Natural Language • Определяет язык • Определяет части речи

    • Распознаёт имена людей, названия мест или организаций • Определяет эмоциональную окраску текста и т. д. 28
  21. import NaturalLanguage let text = "My day was good" let

    tagger = NLTagger(tagSchemes: [.sentimentScore]) tagger.string = text let (sentimentTag, _) = tagger.tag(at: text.startIndex, unit: .paragraph, scheme: .sentimentScore) let score = Double(sentimentTag!.rawValue) print(score) / / prints -0.4 29
  22. 30

  23. Create ML + Core ML • Создание датасета • Обучение

    модели • Использование в проекте 32
  24. Создание датасета • Используем готовые датасеты (Kaggle или HuggingFace) •

    Создаём свой на основе контента из приложения • Используем ChatGPT/Claude/ваша любимая LLM 33
  25. Создание датасета • Используем готовые датасеты (Kaggle или HuggingFace) •

    Создаём свой на основе контента из приложения • Используем ChatGPT/Claude/ваша любимая LLM 34
  26. Создание датасета • Используем готовые датасеты (Kaggle или HuggingFace) •

    Создаём свой на основе контента из приложения • Используем ChatGPT/Claude/ваша любимая LLM 35
  27. Создание датасета 36 [ { "text": "Сегодня был замечательный день,

    я успел всё, что запланировал!", "label": "positive" }, … { "text": "Успел сделать пару мелких дел, ничего важного.", "label": "neutral" }, … { "text": "Күшім таусылды, барлығын тастағым келеді.", "label": "negative" } ]
  28. func predictSentiment() throws { let text = "Я очень рад

    выступить с докладом на Altel Digital iOS Meetup" let classifier = try SentimentTextClassifier() let output = try classifier.prediction(text: text) print(output) // “positive” } Использование в проекте 42
  29. Create ML + Core ML • Хороший датасет — ключ

    к успеху • Простой интерфейс без программирования, но можно всё автоматизировать с помощью кода • Простая интеграция 44
  30. Create ML + Core ML • Хороший датасет — ключ

    к успеху • Простой интерфейс без программирования, но можно всё автоматизировать с помощью кода • Простая интеграция 45
  31. Create ML + Core ML • Хороший датасет — ключ

    к успеху • Простой интерфейс без программирования, но можно всё автоматизировать с помощью кода • Простая интеграция 46
  32. 47

  33. Выводы • Анализ текста — не такая сложная задача •

    Важно знать инструменты и их ограничения • Вы уже умеете обучать модели, осталось добавить их в свой проект! 48
  34. Выводы • Анализ текста — не такая сложная задача •

    Важно знать инструменты и их ограничения • Вы уже умеете обучать модели, осталось добавить их в свой проект! 49
  35. Выводы • Анализ текста — не такая сложная задача •

    Важно знать инструменты и их ограничения • Вы уже умеете обучать модели, осталось добавить их в свой проект! 50