11 вопросов матлингвисту

Судя по всему, предыдущий «редакционный» пост имел успех, так почему бы не продолжить 🙂

Помните, там была строчка про то, что непонятно, что могут спросить на собеседовании? Я ещё немного над этим подумал и понял, что мне это и сейчас не очень понятно. Кроме того:

  1. Я никогда не проходил полноценного собеседования, потому что на свою текущую работу попал через стажировку.
  2. Со стороны работодателя я участвовал в собеседованиях полтора раза и вопросов почти не задавал.

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

По моим представлениям, задавать фактические вопросы (типа «сколько падежей в русском языке выделяет Академическая грамматика?» или «какую сложность имеет алгоритм Витерби?») бессмысленно: во-первых, если это понадобится, всегда можно посмотреть, во-вторых, знание этих фактов не говорит о способности думать вообще и думать как инженер в частности.

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

Короче говоря, получился список из 11 вопросов, которым и делюсь. При чтении стоит иметь в виду, что:

  • в общем случае у вопроса нет «правильного» ответа, и он задаётся, чтобы посмотреть, как пойдёт мысль отвечающего и какие вопросы он сам задаст,
  • способность программировать надо проверять отдельно, потому что эти вопросы не про неё,
  • я, естественно, не стал включать сюда вопросы, на которые сам не знаю, как отвечать; это задаёт верхнюю границу сложности 🙂

Итак, список.

  1. Напишите регулярное выражение, которым можно было бы найти всевозможные записи цены (например, «40 рублей», «272 руб. 50 коп.» и т.п.). Допустим, что все числа записаны цифрами.
  2. А теперь напишите контекстно-свободную грамматику для этой же задачи, допустив, что существует терминальный символ «любое целое число». Какой формализм вы бы сами выбрали для такой задачи?
  3. Имеется коллекция текстовых файлов на русском языке. Как бы вы составили top-100 словоформ по коллекции? А top-100 лексем?
  4. Придумайте простой алгоритм разделения русского текста на предложения. В каких случаях он будет ошибаться? Как его улучшить?
  5. Допустим, у нас есть большая коллекция текстов на русском языке (тысячи документов), причём файлы записаны в разных кодировках, и неизвестно, какой файл в какой кодировке; требуется привести все файлы к единой кодировке, например, UTF-8. Как бы вы стали решать эту задачу?
  6. Допустим, имеется большая коллекция текстов на русском и украинском языке вперемешку. Предложите способ отделить одни от других.
  7. Допустим, у нас имеется русский морфологический словарь, в котором не хватает информации о переходности глаголов. Как бы вы предложили собрать такую информацию?
  8. Как бы вы стали собирать словарь собственных имён людей на некотором языке, которого не знаете?
  9. Предложите структуру данных для хранения морфологического словаря. Сколько приблизительно памяти займёт морфологический словарь русского языка, если использовать эту структуру?
  10. Предположим, мы строим классификатор текстов отзывов на фильмы для некоторой системы opinion mining на основе списков эмоционально окрашенной лексики. Какие проблемы у нас возникнут?
  11. Допустим, у нас есть два POS-тэггера, оба с точностью 90%, которые ошибаются в разных местах (скажем, у каждого есть 30% уникальных для него ошибок). Как их использовать, чтобы получать точность больше 90%?

P.S. Если вы студент, прочитали этот список и пришли в отчаяние, то напрасно, вопросы в среднем не очень простые. Тем более, у вас есть инструкция 🙂

Об авторе Дмитрий Грановский

— Яндекс, разработчик — СПбГУ, ассистент — OpenCorpora.org, разработчик
Запись опубликована в рубрике Вакансии/Стажировки, Обзоры/Редакционное. Добавьте в закладки постоянную ссылку.

5 комментариев: 11 вопросов матлингвисту

  1. Yauhen говорит:

    нашел еще курс ШАД «Автоматическая обработка текста» (http://shad.yandex.ru/program/text.xml). Как обзор тем, по-моему, отличный материал.

  2. Yauhen говорит:

    Полезный обзор. Благодарю, Дмитрий.
    Недавно был на собеседовании в небольшой компании, которая более 15 лет занимается языковым продуктом.
    Собеседование:
    1) Тест на вопросов 15-20
    2) Личное обсуждение каждого вопроса со специалистом.
    Сам тест можно разделить на 3 основные части, 4ая — биографические вопросы к кандидату.
    1) Алгоритмы обработок строк (в т.ч. сортировки, поиск по шаблонам). Конечно же, с наименьшей памятью за минимальное время;
    2) Базовые вопросы по С++;
    3) NLP задачи типа topic extraction, noun & verb retrieving ;

    • Кстати, да, размер компании, пожалуй, имеет значение. Большая компания может себе позволить специальных алгоритмистов, которые будут более оптимально переписывать прототипы, которые пишут матлингвисты. Вот недавно тут пробегала вакансия от EPAM, там как раз надо было писать такие прототипы.

  3. Дмитрий Кан говорит:

    Дима, хороший обзор.

    А вот меня на интервью спросили: какая у вас мечта?

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *