# Code Completion. Часть 3: где взять данные для обучения?

DevFeed: [Code Completion. Часть 3: где взять данные для обучения?](<https://devfeed.tech/articles/code-completion-3-23935.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/578650/>)

Author: p0b0rchy (JetBrains)

Published: 2021-09-20T10:27:02Z

Content type: article

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [code-completion](<https://devfeed.tech/topics/code-completion.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [data-protection](<https://devfeed.tech/tags/data-protection.md>), [dataset](<https://devfeed.tech/tags/dataset.md>), [ide](<https://devfeed.tech/tags/ide.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-9bf5e01ce62e](<https://devfeed.tech/tags/tag-9bf5e01ce62e.md>), [tag-baed6d151ab4](<https://devfeed.tech/tags/tag-baed6d151ab4.md>)

## AI overview

This article explains how JetBrains approaches building training data for machine-learning-based code completion. It describes why user code cannot be collected and why datasets derived only from completed open-source repositories do not adequately represent real development scenarios.

## Source excerpt

В предыдущей статье цикла мы установили, что современной системе автодополнения нужно машинное обучение -- чтобы ранжировать варианты подсказок. Машине, как и человеку, для обучения нужны данные. Мы используем подход "обучение с учителем". Он предполагает, что мы показываем алгоритму примеры задач, для которых нам заранее известно правильное решение. Алгоритм извлекает из этих примеров закономерности и учится принимать правильные решения даже в тех ситуациях, которых он раньше не видел. Результат обучения критическим образом зависит от качества и объема этих примеров. И именно здесь у нас возникают трудности. С одной стороны, собирать базу на основе кода наших пользователей нельзя: результат вашего труда остается только у вас, на серверы JetBrains он не попадает. С другой стороны, из доступных репозиториев с открытым кодом полноценный датасет собрать не получается. Делая так, мы обучали бы алгоритм работать только с готовым (рабочим) кодом. Сегодня обсудим, как мы выкручиваемся из этой ситуации. Для начала давайте более подробно рассмотрим, почему не получается работать с готовыми репозиториями. А потому что они "готовые"