Определять, где начинаются и кончаются предложения, – еще одна непростая задача для компьютера. В конце предложения обычно стоит точка, вопросительный или восклицательный знак. Начало предложения обычно отмечено заглавной буквой. Руководствуясь этими принципами, наши компьютеры, как правило, верно распознают границы предложений. Можно написать компьютерную программу, которая использует простой алгоритм, например:
Начать с первого слова и идти по тексту, пока не попадется точка, вопросительный или восклицательный знак. Если следующее слово после точки, вопросительного знака или восклицательного знака начинается с большой буквы, значит, здесь конец предложения и начало следующего.
Но что будет, если ваша программа наткнется на предложение вроде такого: 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. Распознавание подобных грамматических объектов позволяет находить ответы на разные вопросы – например, влияет ли место, где происходит действие романа, на факт его попадания в списки бестселлеров? Мы, разумеется, задались этим вопросом и обнаружили следующее: для того, станет ли роман бестселлером, важно, происходит ли действие в городе или где-нибудь в лесу. Конкретный город не важен. Роман, герои которого живут в Нью-Йорке, имеет столько же шансов, сколько и роман, герои которого живут в Стокгольме.