ПоискПочтаКартыМаркетНовостиСловариБлогиВидеоКартинки
Войти

Разработчик систем анализа естественного языка

    Лингвистический анализ занимает одно из центральных мест в поиске Яндекса. Мы непрерывно работаем над повышением точности, увеличением глубины анализа, расширением числа поддерживаемых языков. Объектом анализа выступает уникальный по охвату корпус текстов на естественном языке - индекс поисковой машины Яндекса и поток запросов к ней.

    Нам требуется опытный разработчик на С++, способный самостоятельно производить полный цикл разработки компонент лингвистического анализа - от придумывания алгоритмов до построения инструментов тестирования.

    Требуется

    • свободное владение языком С++, умение ясно структурировать код;

    • хорошее владение по крайней мере одним языком из списка: Python, Perl, Ruby, Unix tools(sh/sed/awk/) для быстрого прототипирования и структурирования больших объемов данных;

    • знание основ математической статистики;

    • понимание принципов компьютерной обработки текста;

    • умение читать чужой код и разбираться в устройстве существующих сложных систем;

    • владение английским на уровне свободного чтения технической литературы;

    • умение общаться с лингвистами.

    Большим плюcом будет

    • образование, наличие научных работ в области computational linguistics, information retrieval, теории вероятностей или смежных областях;

    • опыт работы в крупном проекте на позиции, связанной с разработкой сложных алгоритмов над большими объемами данных;

    • опыт работы с формальными языками и грамматиками, особенно компиляции формальных языков в эффективный исполняемый код;

    • опыт проектирования многопоточных и распределенных приложений.

    Условия

      Работа в офисе Яндекса в Москве полный рабочий день.

      Подробнее об условиях работы в Яндексе

      Продемонстрируйте свои знания

      Вопрос 1

      Имеется массив текстов на естественном языке размером ~1 Тб. Число различных словоформ в текстах ~ 200 млн. Нужно собрать словарь из 20 млн. самых частотных биграмм (пар рядом стоящих слов) за разумное время (не более недели) на минимально достаточной конфигурации оборудования.

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

      Ваш комментарий

      Вопрос 2

      Имеется русский морфологический словарь объемом ~100 тыс. входов, в котором глаголы совершенного и несовершенного вида помещены в отдельные статьи (т.е. /делать/ и /сделать/ считаются разными словарными входами). Вам требуется найти в словаре такие видовые пары и "склеить" статьи в одну.

      Опишите общий сценарий решения такой задачи и примерный алгоритм поиска видовых пар.

      Ваш комментарий

      Вопрос 3

      Перечислите все проблемы, которые вы видите в данном коде:

      class Foo
      	{
      	public:
      	    Foo(int j) { i=new int[j]; }
      	    ~Foo() { delete i; }
      	private:
      	    int* i;
      	};
      
      	class Bar: Foo
      	{
      	public:
      	    Bar(int j) { i=new char[j]; }
      	    ~Bar() { delete i; }
      	private:
      	    char* i;
      	};
      
      
      	void main()
      	{
      	    Foo* f=new Foo(100);
      	    Foo* b=new Bar(200);
      	    *f=*b;
      	    delete f;
      	    delete b;
      	}
      
      Ваш комментарий

      Расскажите нам о себе

      Резюме до 250 КБ
      Ссылка на профиль в Моем Круге
      Имя, Фамилия
      Телефон

      Пожалуйста, укажите код города

      E-mail
      Дополнительные сведения
      если Вы узнали про эту вакансию от сотрудника Яндекса, пожалуйста, укажите его имя и фамилию