Friday, May 04, 2012

"Wine is more drinkable"

Закончил 8-ми недельный стэнфордский курс NLP. Оказался сложнее, чем ML. Хоть и написано, что “вам понадобится 10 часов в неделю”, я и другие, судя по форуму, сидели над уроками дольше, особенно над шестым.
Видео лекции, документы по материалам - презентации и pdf, экзаменационные вопросы и упражнения. Программирование на Python или Java. Курс основан на книге “Speech and Language Processing” авторов Daniel Jurafsky (он же один из двоих лекторов) и James H. Martin. Очень активный форум с описаниями успехов, мольбами о помощи, предложениями по выполнению заданий, часто полезными и конструктивными - много толковых от российских студентов (не от меня). Вот, что было известно о численности аудитории к уроку 4-му: about 60,000 originally registered for the class; about 40,000 created course accounts, and by Week 4, about 6,000 are watching the videos and about 4,000 are submitting weekly assignments. Думаю, что после 6-го урока аудитория поредела.
Начали с основ обработки текстов, включая использование Регулярных Выражений. В списке для чтения к первому уроку получили ссылку интересного документа “Unix для поэтов”, где, например, приведена командная строка, вычисляющая частотное распределение слов в тексте. Узнал, как сравнивать слова, вычислять их похожесть по “расстоянию редактирования” (Min Edit Distance), трансформирующему одно слово в другое.
Второй урок (часто имею в виду упражнения к уроку) посвящен модели языка и проверке правильности написания слов (английских). Выяснил, что за многими утилитами, которые мы используем ежедневно, стоит огромная, законченная научная работа. Например, проверка правописания это не просто сравнение слов со словарем, но и поиск наиболее вероятных предложений по написанию, смыслу (используется модель языка) и даже произношению. Хорошее введение в тему - документ Питера Норвига “How to write a spelling corrector”.
В четвертом находили в тексте имена (людей), определяя их свойства для классификации текста: LOCATION, PERSON, ORGANIZATION. Свойства имен, например, такие: с заглавной буквы, отсутствие перед словами предлогов, наличие титулов/префиксов Mr, Mrs, Jr, van, der и других, наличие после имен “одушевленных” глаголов - сказал, написал, представил (биграммы).
Тема пятого урока - грамматика английского языка, разбор предложений на части речи. Программирование не потребовалось. Зато пришлось описывать множество вариантов построения предложений - грамматику. Например, самый общий вид повествовательного предложения представляется в форме S -> NP VP фраз существительного и глагола соответственно. Упрощенное описание построения английских предложений, полезное изучающим английский, можно найти здесь.
Наконец, самое трудоемкое упражнение 6 посвящено синтаксическому разбору предложения, основанному на вероятностном анализе структуры предложения. Нашел почти философское замечание - “наиболее часто встречающийся терм наименее информативен”. Сразу вспомнил Лотмановские слова: “перевод непереводимого оказывается носителем информации высокой ценности” и “В ситуации непересечения [языкового пространства говорящего и слушающего] общение предполагается невозможным, полное же пересечение делает общение бессмысленным”. Задача решалась примерно такая - к чему относится телескоп, то ли Джон с помощью телескопа увидел человека, то ли человек был с телескопом, “John saw a man with the telescope”. Решалась она поиском наиболее вероятного дерева структуры предложения на основе тренировок по базам текстов. CMU парсер предпочел вариант мужика с телескопом.
Из урока 7 стало ясно, насколько важно правильно сформулировать вопрос поисковику, и как ранжируются документы по адекватности запросу. Самый простой метод вычисляет Jaccard коэффициент |A and B| / |A or B|, где A и B - множество (set) слов в запросе и найденном докумунте. Методы применимы и для определения похожести документов, ведь запрос может рассматриваться/использоваться как документ, а документ, как запрос.
На уроке 8 мы были заняты распознованием используемых смыслов слов по контексту, например, слово bass в качестве существительного имеет 8 смыслов согласно WordNet, какой использовать? Что поисковику искать (категория) и как интерпретировать найденное? Если же мы знаем, то поймем, что “fool” - близкое по смыслу слово слову “clown”, а также, что “wine” is more drinkable than “it”, хотя “drink it” встречается чаще, чем “drink wine”.

Очень хороший курс: сбалансированное сочетание видео, текстов, вопросов, заданий на программирование, ссылки, форум, поджимающие сроки. Хотя “законченным” специалистом он меня не сделал, конечно. 
Online парсер предложений на русском языке и ссылки на ресурсы можно найти здесь.

4 comments:

  1. Добрый день! Большое спасибо за обзор! Посоветуете этот курс новичку в теории NLP но с некоторым опытом аналитики в целом (работаю с Text Mining/Opinion Maning как разработчик)?
    Также такой вопрос - у Стенфорда есть свой движок теггинга TreeTagger, работали ли вы с ним и что можете сказать? Относительно парсера - на чем построена логика (какие алгоритмы и подходы), если не секрет?

    ReplyDelete
  2. Андрей,
    определенно да,
    если Вы имеете в виду ims.uni-stuttgart, нет, не пробовал
    использовали CKY алгоритм

    ReplyDelete
  3. Thanκ you a bunch for sharing this with all folκs you actually recognise whаt you are sρeaking about!
    Bookmаrked. Plеase аdditiоnally talk ovеr
    wіth my sitе =). We may haνе а hуperlink trade
    arrаngement between us
    my web site > www.coloncleaner.info

    ReplyDelete
  4. Having read this I believed it was extremely informative.

    I appreciate you taking the time and effort to put
    this short article together. I once again find myself spending way too much time both reading and commenting.
    But so what, it was still worth it!

    my website Batman Games Online

    ReplyDelete