на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Интеллектуальный анализ текста

Компьютеры могут читать текст самыми разными способами – деталями этого процесса занимается отдельная дисциплина, обработка естественного языка. Существуют мощные программы для извлечения данных из текстов. Базовые задачи при анализе естественного языка – выделение слов, идентификация предложений, разбор по частям речи и разбор зависимостей. В каждой из этих задач есть свои сложности, так что «базовый» в данном случае не значит «простой». Решение этих задач лежит в самой основе нашей работы, описанной в этой книге.

Что такое разбиение на слова? Попросту говоря, компьютер учат находить начало и конец каждого слова. На первый взгляд может показаться, что это очень просто: где пробел – там заканчивается одно слово и начинается следующее. Часто так оно и есть. Но для интеллектуального анализа текста этого «часто» – недостаточно: всегда существуют граничные случаи, усложняющие жизнь. Посмотрите на предыдущее предложение. После слова «недостаточно» стоит двоеточие. Оно не является частью слова, поэтому нельзя приказать компьютеру разбивать слова только по пробелам. Компьютеры должны знать, что «хорошо» – это слово, а двоеточие – знак препинания. Посмотрим теперь на английское слово doesn’t. Это сокращение от does not[244]. Как вы думаете, doesn’t – это одно слово или два? Если одно, то придется объяснить компьютеру, что апостроф – не такой знак препинания, как двоеточие в предыдущем примере, и что его следует трактовать как заменитель буквы. А как насчет can’t[245] или притяжательной формы Robert’s? Компьютеру бывает сложно разобраться в этих и других причудах словоупотребления. Впрочем, это и людям иногда сложно. Мы спросили своих студентов, что такое can’t – одно слово или два. Половина ответила, что одно, а половина – что два, имея в виду, что это сокращение от can not. Еще бывают сложные слова, которые иногда пишутся в два слова, иногда – в одно, а иногда – через дефис. В ходе работы над этой книгой мы раз пять обсуждали написание одного и того же слова: bestseller. Как его следует писать – bestseller или best-seller? Оно образовано от глагола bestsell, но с этим глаголом возникает тот же вопрос. Сокращения и сложные слова отчасти подобны коту Шредингера: они существуют в двух состояниях одновременно.

Значит, даже такая вроде бы простая задача, как разбиение на слова, оказывается весьма нетривиальной, если углубиться в детали языка и грамматики. Специалисты по обработке естественного языка подходят к этому вопросу так: они пишут программы, которые сначала вычленяют слова в тексте, а затем предлагают несколько вариантов обработки сокращений, слов с заглавной буквы и т. п. При исследовании современных бестселлеров нам все время приходилось принимать решения именно по таким вопросам. В конце концов оказалось, что на них можно отвечать по-разному для разных задач. Например, при анализе стиля, о котором мы говорили в 4-й главе, мы решили игнорировать заглавные буквы – таким образом, с точки зрения компьютера The и the было одним и тем же словом. Мы пренебрегли возможной разницей между ними. Но мы могли бы пойти и другим путем, попросив компьютер трактовать их как два разных слова, и тогда, возможно, узнали бы что-нибудь очень полезное. The с заглавной буквы будет, скорее всего, стоять в начале предложения. В 5-й главе мы показали, какую важную роль играет The в заглавиях романов. А что, если авторы бестселлеров начинают большее количество предложений со слова The? Мы решили анализировать это слово так, как если бы оно всегда было написано с маленькой буквы. Возможно, в результате мы пропустили какую-то важную стилевую особенность бестселлеров.

Определять, где начинаются и кончаются предложения, – еще одна непростая задача для компьютера. В конце предложения обычно стоит точка, вопросительный или восклицательный знак. Начало предложения обычно отмечено заглавной буквой. Руководствуясь этими принципами, наши компьютеры, как правило, верно распознают границы предложений. Можно написать компьютерную программу, которая использует простой алгоритм, например:

Начать с первого слова и идти по тексту, пока не попадется точка, вопросительный или восклицательный знак. Если следующее слово после точки, вопросительного знака или восклицательного знака начинается с большой буквы, значит, здесь конец предложения и начало следующего.

Но что будет, если ваша программа наткнется на предложение вроде такого: I was surprised to hear that Dr. Archer was writing a novel[246]. В этом предложении есть точка (после слова Dr.), а следующее за ней слово начинается с большой буквы (Archer). Руководствуясь только что сформулированным правилом, компьютер решит, что здесь конец предложения, и ошибется. Из-за этой и других проблем, связанных с сокращениями, при распознавании предложений нельзя ограничиться правилом о знаках препинания и заглавных буквах. Есть и другие сложности. Возьмем абзац текста с прямой речью:

After a long day spent training the machine to read bestsellers, Matt called Jodie and said, “Dialog will be the death of me.” Jodie offered solace in the form of Scotch whisky[247].

В этом случае точка, отмечающая конец предложения, попала внутрь кавычек. Чтобы разобраться в подобной ситуации, нашему компьютеру понадобится еще одно правило, специально для работы с кавычками. К тому же, оказывается, это правило нужно только для прозы, написанной американскими и канадскими авторами. В британском и австралийском английском кавычки принято помещать перед знаками препинания. Учитывая природную гибкость языка, легко вообразить себе множество исключений из этих общих правил. В общем, вы уже поняли: даже самые простые действия по извлечению параметров из текста очень сложны.

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

Хороший пример этого процесса – автоматизированный разбор по частям речи. Во 2-й главе мы писали о том, как изучение существительных помогает выявить темы книги. Но прежде чем применить алгоритм моделирования тем, нам пришлось научить компьютер распознавать существительные. Слово hope[248], например, может быть существительным:

He held out hope that she would buy the book herself[249].

Оно может быть и глаголом:

She hoped he would buy her the book[250].

И даже именем собственным:

Hope told him to buy the book himself[251].

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

Введя эти предложения в программу разбора по частям речи, мы получаем на выходе примерно следующее:[252]

He/PRP held/VBD out/RP hope/NN that/IN she/PRP would/MD buy/VB the/DT book/NN herself/PRP./.


She/PRP hoped/VBD he/PRP would/MD buy/VB her/PRP the/DT book/NN./.


Hope/NNP told/VBD him/PRP to/TO buy/VB the/DT book/NN himself/PRP./.

Заглавные буквы после косой черты – сокращенные обозначения частей речи. Слово hope было правильно опознано в первом предложении как существительное (NN), во втором – как глагол (VBD), а в третьем – как имя собственное (NNP). Для размеченного таким образом текста легко написать программу, которая извлечет только существительные, помеченные NN. Так мы получим существительные – кирпичики, из которых строится фундамент: опираясь на них, компьютер выделяет из текста темы.

Исследователи используют разные способы обучения компьютеров распознаванию частей речи. Но в большинстве этих способов задействован обширный корпус предложений, уже размеченных людьми. Специалисты по грамматике часами сидят над текстами, помечая части речи, а затем эти размеченные предложения загружают в программу в качестве обучающих данных. На основе этих данных машина строит статистическую модель, которая вычисляет вероятность появления той или иной комбинации слов. Например, компьютер может заметить, что после слова the в 55 % случаев стоит существительное, в 40 % – прилагательное и в 5 % – числительное. Конечно, такие программы разбора тоже иногда ошибаются, но очень редко – так редко, что, по мнению некоторых исследователей, задача компьютерного разбора по частям речи «уже решена». Другие исследователи возражают, но не слишком активно. Программа разбора по частям речи, разработанная в Стэнфордском университете, работает с точностью 97–100 %. Такая точность, безусловно, годится для большинства задач анализа текстов – в том числе тех, что мы решали при исследовании бестселлеров.

Распознавание именованных сущностей (NER) – другая область обработки естественного языка, тесно связанная с нашими исследованиями. Именованная сущность – это человек, географический объект или организация: Лисбет Саландер, Нью-Йорк, Microsoft. Распознавание подобных грамматических объектов позволяет находить ответы на разные вопросы – например, влияет ли место, где происходит действие романа, на факт его попадания в списки бестселлеров? Мы, разумеется, задались этим вопросом и обнаружили следующее: для того, станет ли роман бестселлером, важно, происходит ли действие в городе или где-нибудь в лесу. Конкретный город не важен. Роман, герои которого живут в Нью-Йорке, имеет столько же шансов, сколько и роман, герои которого живут в Стокгольме.

В 5-й главе мы использовали NER для лучшего понимания героев книг и исследования их агентивности. Но еще важнее для изучения персонажей оказался метод, называемый разбором зависимостей. Программы для разбора зависимостей анализируют предложение и размечают его синтаксическую структуру. Программа разбора понимает, какие слова связаны между собой и где в предложении подлежащее, сказуемое и дополнение. Как и описанный выше алгоритм разбора по частям речи, эта программа использует информацию из предложений, предварительно разобранных специалистами-людьми. Эта информация помогает определять наиболее вероятную структуру введенных в программу предложений. Для 5-й главы нам нужно было исследовать агентивность героев на основе глаголов, обычно связанных с мужскими и женскими персонажами[253]. Возьмем, например, это предложение из «Сферы»:

Mae knew Renata was watching her, and she knew her face was betraying something like horror[254]. Пропустив это предложение через программу разбора зависимостей, получаем на выходе следующее:[255]

nsubj(knew-2, Mae-1)

root(ROOT-0, knew-2)

nsubj(watching-5, Renata-3)

aux(watching-5, was-4)

ccomp(knew-2, watching-5)

dobj(watching-5, her-6)

cc(knew-2, and-8)

nsubj(knew-10, she-9)

conj(knew-2, knew-10)

nmod: poss(face-12, her-11)

nsubj(betraying-14, face-12)

aux(betraying-14, was-13)

ccomp(knew-10, betraying-14)

dobj(betraying-14, something-15)

case(horror-17, like-16)

nmod(betraying-14, horror-17)

Первая строка вывода показывает связь подлежащего (Mae)[256] с основным глаголом (knew)[257]. Кстати сказать, цифры рядом со словами показывают их порядок в предложении: Mae – первое слово, knew – второе, затем идет Renata и т. д. Обратите внимание: программа заметила связь между Ренатой, другим персонажем романа и глаголом watching[258], а также между местоимением she и вторым вхождением глагола knew. Объединив результаты анализа зависимостей и данные об именах персонажей, полученные с помощью NER, мы смогли понять, какие глаголы характерны для того или иного персонажа. Например, в этом предложении Мэй знает, а Рената наблюдает.

Из всех задач, с которыми мы столкнулись в ходе исследований, разбор зависимостей требует наибольшего объема вычислительных мощностей. Обработка одного романа занимает до пятнадцати часов, а романов у нас были тысячи. К тому же после разбора нужно было пройти по всем текстам еще раз, чтобы извлечь интересующие нас сочетания подлежащего и сказуемого. Это настолько трудоемкий процесс, что нам понадобился кластер из тысячи компьютеров, чтобы обрабатывать тысячу книг одновременно.

С точки зрения сложности вычислительных задач самой простой, вероятно, была описанная в 3-й главе – построение сюжетных графиков на основе слов, означающих эмоциональное состояние героев. Ученые, работающие в этой области (она называется «анализ тональности текста»), разработали несколько подходов к исследованию слов, обозначающих эмоции. Самые совершенные из этих методов делают выводы на основе статистических данных – примерно так же, как и программы разбора по частям речи и разбора зависимостей. Сейчас эти методы используются для анализа отзывов потребителей о товарах и услугах, а также для определения общего эмоционального настроя различных текстов, в том числе электронных писем. Мы экспериментировали с разными методами анализа тональности, но оказалось, что для выделения эмоционально нагруженных слов из текста более простые методы работают лучше.

В методе, который мы сочли наиболее эффективным, использовалось несколько специальных словарей, содержащих эмоционально окрашенные слова. Эти «словари эмоций» представляют собой просто списки слов, для которых указана эмоциональная окраска (положительная или отрицательная) и «валентность». Например, слово «любить» имеет сильную положительную окраску, а «ненавидеть» – сильную отрицательную. Мы научили программу читать книгу слово за словом, регистрировать эмоциональную окраску каждого, а затем давать оценку всему предложению. Последовательности позитивно и негативно окрашенных предложений и создают кривые графиков, приведенные в 3-й главе. Возьмем фразу из речи Эймона в «Сфере»: «Я люблю вас, как трава росинку, как птица ветку». Такое предложение алгоритм определит как положительно окрашенное. Вот еще одна фраза из «Сферы» – ее произносит Энни, только что узнавшая, что ее предки были рабовладельцами: «Ты вообще представляешь, какой бардак сейчас у нас в семье?» Неудивительно, что эту фразу алгоритм пометит как окрашенную отрицательно. Количество положительно и отрицательно окрашенных предложений в отрывке текста, как правило, отражает состояние главного героя в текущий момент и показывает, в каком месте сюжета мы находимся.

Все процессы интеллектуального анализа текста, которые мы обсуждали до сих пор, имеют дело с выделением и распознаванием отдельных компонентов текста. После вычленения слов уже легко узнать, как часто каждое из них встречается. Определив границы предложений, можно подсчитать, например, среднюю длину предложения или соотношение объема диалогов с объемом остального текста. Выполнив разбор по частям речи, мы можем исследовать типы существительных, прилагательных и глаголов, используемых разными авторами. Можно даже начать искать закономерности, характерные для одних писателей и отсутствующие у других. Извлеченные существительные можно ввести в алгоритм моделирования тем (как было показано во 2-й главе), а результаты разбора зависимостей позволяют нам исследовать синтаксис предложений и увидеть, какие связки «подлежащее – сказуемое» используются в каждой книге.

Вся эта вычислительная работа – на самом деле лишь подготовка. Обычно ее называют «предобработкой», предшествующей выделению и извлечению параметров текста. Лишь исследовав различные методы извлечения интересующих нас параметров, можно переходить к более интересной работе – использованию этих методов для классификации книг. Эта вторая фаза построения бестселлерометра называется машинным обучением.


Постскриптум, или Некоторые подробности о методе | Код бестселлера | Машинное обучение