Машиноведение и обработка естественного языка

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

На каких конкретных предметах по информатике они должны сосредоточиться и какие языки программирования специально предназначены для решения подобных проблем?

Я не ищу ваши любимые предметы и инструменты, а скорее отраслевые стандарты.

Пример: я предполагаю, что знание Пролога и Матлаба может помочь им. Они также могут изучать дискретные структуры *, исчисление и статистику.

* Графики и деревья. Функции: свойства, рекурсивные определения, решение рекуррент. Соотношения: свойства, эквивалентность, частичный порядок. Доказательство техники, индуктивное доказательство. Методы подсчета и дискретная вероятность. Логика: исчисление высказываний, исчисление предикатов первого порядка. Формальные рассуждения: естественный вывод, разрешение. Приложения для правильности программирования и автоматического рассуждения. Введение в алгебраические структуры в вычислительной технике.

Ответ 1

На этот связанный с этим вопрос о стекопереработке есть несколько хороших ответов: каковы хорошие отправные точки для тех, кто интересуется обработкой естественного языка?

Это очень большое поле. Предварительные условия в основном состоят из вероятности/статистики, линейной алгебры и базовых компьютерных наук, хотя обработка естественного языка требует более интенсивных знаний в области компьютерных наук (часто охватывающих некоторые базовые ИИ). Что касается конкретных языков: Lisp был создан "как запоздалая мысль" для проведения исследований ИИ, в то время как Prolog (с его корнями в формальной логике) специально нацелен на обработку естественного языка, и многие курсы будут использовать Prolog, Scheme, Matlab, R или другие. функциональный язык (например, OCaml используется для этого курса в Корнелле), поскольку они очень подходят для такого рода анализа.

Вот некоторые более конкретные указатели:

Stanford CS 229: Машинное обучение отлично подходит для машинного обучения: он включает в себя все, включая полные видеоролики лекций (также в iTunes), примечания к курсам, наборы проблем и т.д., И Эндрю Нг очень хорошо учил этому.

Обратите внимание на предварительные условия:

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

В курсе используются Matlab и/или Octave. Он также рекомендует следующие чтения (хотя сами примечания к курсу очень полны):

Для обработки естественного языка группа НЛП в Стэнфорде предоставляет много хороших ресурсов. Вводный курс Stanford CS 224: обработка естественного языка включает в себя все лекции в режиме онлайн и имеет следующие предпосылки:

Адекватный опыт программирования и формальных структур. Проекты программирования будут написаны на Java 1.5, поэтому знание Java (или желание учиться самостоятельно) не требуется. Знание стандартных понятий в области искусственного интеллекта и/или компьютерной лингвистики. Основное знакомство с логикой, векторными пространствами и вероятностью.

Некоторые рекомендуемые тексты:

Обязательный курс по компьютерной лингвистике требует базовых знаний в области компьютерного программирования и структур данных и использует те же учебники. Обязательный курс искусственного интеллекта также доступен онлайн вместе со всеми примечаниями к лекциям:

Это стандартный текст по искусственному интеллекту, который также стоит прочитать.

Я сам использую R для машинного обучения и очень рекомендую его. Для этого я бы посоветовал взглянуть на "Элементы статистического обучения", полный текст которого доступен онлайн бесплатно. Вы можете обратиться к представлениям " Машинное обучение" и " Обработка естественного языка" в CRAN для получения информации о конкретных функциях.

Ответ 3

Я бы сказал, что probabily и статистика являются наиболее важным предварительным условием. Особенно Модели гауссовой смеси (GMM) и Скрытые марковские модели (HMMs) очень важны как для машинного обучения, так и для обработки естественного языка (конечно, эти предметы могут быть частью курса, если они вводятся).

Тогда я бы сказал, что базовые знания CS также полезны, например Алгоритмы, Официальные языки и базовая теория Сложность.

Ответ 4

Строковые алгоритмы, включая суффикс-деревья. Исчисление и линейная алгебра. Различные варианты статистики. Алгоритмы оптимизации искусственного интеллекта. Методы кластеризации данных... и миллион других вещей. Это очень активное поле прямо сейчас, в зависимости от того, что вы намерены делать.

На самом деле не имеет значения, на каком языке вы решили работать. Python, например, имеет NLTK, который является довольно приятным бесплатным пакетом для обработки компьютерной лингвистики.

Ответ 5

Курс Stanford CS 224: курс естественного языка, который уже упоминался, включает также видео онлайн (в дополнение к другие материалы курса). Видео не связаны с веб-сайтом курса, поэтому многие люди могут их не заметить.

Ответ 6

Jurafsky and Martin Обработка речи и языка http://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210/ это очень хорошо. К сожалению, проекты глав второго издания больше не являются бесплатными в сети теперь, когда они были опубликованы :(

Кроме того, если вы хороший программист, никогда не рано играть с программами НЛП. На ум приходит NLTK (Python). У него есть книга, которую вы можете бесплатно читать онлайн, которая была опубликована (думаю, OReilly).

Ответ 8

Широкий вопрос, но я, конечно, думаю, что полезным было бы знание автоматов конечного состояния и скрытых марковских моделей. Это требует знания статистического обучения, оценки байесовских параметров и энтропии.

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

  • Найти совпадения в текстовых телах для кластеризации документов/параграфов/предложений.
  • Классифицировать настроение текстового корпуса.
  • Автоматически аннотировать или суммировать документ.
  • Найти отношения между отдельными документами, чтобы автоматически генерировать "граф" среди документов.

EDIT: неотрицательная матричная факторизация (NMF) - инструмент, который значительно вырос благодаря своей простоте и эффективности. Это легко понять. В настоящее время я изучаю использование NMF для извлечения музыки; NMF показал, что он полезен для скрытой семантической индексации текстовых тел. Вот одна статья. PDF

Ответ 9

Prolog только поможет им научным образом, он также ограничен для логических ограничений и семантической работы на основе НЛП. Пролог еще не является дружественным к отрасли языком, поэтому он пока не практичен в реальном мире. И Matlab также является учебным инструментом, если они не выполняют много научной или квантовой работы, на которой они действительно не нуждаются. Для начала они, возможно, захотят забрать книгу "Норвиг" и войти в мир ИИ, получат заземление во всех областях. Понимайте некоторые основные вероятности, статистику, базы данных, os, datastructures и, скорее всего, понимание и опыт работы с языком программирования. Они должны быть в состоянии доказать себе, почему методы ИИ работают, а где нет. Затем посмотрите на конкретные области, такие как машинное обучение и НЛП, более подробно. Фактически, источники источников norvig ссылаются на каждую главу, поэтому у них уже есть много дальнейшего чтения. Для них доступно множество справочных материалов по Интернету, книг, журнальных работ для руководства. Не просто прочитайте книгу, попытайтесь создать инструменты на языке программирования, а затем экстраполируйте "значимые" результаты. Действительно ли алгоритм обучения учился так, как ожидалось, если бы не так, почему это было так, как это можно было бы исправить.