Занятие 5
Корпусная лингвистика
Словарь, коллекция, корпус
BootCat
AntConc
Нормальный человек собирает тексты, чтобы их читать.
Лингвист собирает тексты, чтобы их удобно было разобрать на части
Владимир Плунгян
Словарь, коллекция, корпус
Словари — систематизированные списки лексической информации, состоящие из отдельных словарных единиц. Различаются по:
  • словарным единицам — слова, словосочетания, др.;
  • структуре;
  • охвату лексики — общая лексика или какая-то проблемная область;
  • TheFreeDictionary (много языков).

Коллекции текстов — набор текстов, который можно анализировать.

Корпус текстов — это коллекция текстов, собранная по определенному принципу представительности (по жанру, авторской принадлежности и т.п.), в которой все тексты размечены, т.е. снабжены некоторой лингвистической разметкой (аннотациями) — морфологической, акцентной, синтаксической и т.п.

Другое определение:
Корпус — это собранный и обработанный согласно необходимым законам массив текстов, применяемый как база для изучения языка. Корпус применяется при статистическом анализе и для анализа статистических гипотез, изучения лингвистических правил в языке.

Зачастую для краткости коллекции текстов из интернета называют веб-корпусами или просто корпусами.





Методы работы с корпусами:
  • составление конкорданса;
  • подсчёт абсолютной частотности слов;
  • анализ ключевых слов;
  • анализ кластеров.

Конкорданс — это список всех употреблений определенного языкового выражения в контексте и с ссылкой на источник при необходимости.

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

барсуки

выдры

еноты

куницы

ласки

летяги

норки

нутрии

опоссумы

сони

хорьки

BootCat
Собираем коллекцию текстов
Мы будем работать с двумя программами:
  • BootCat — Bootstrap Corpora And Terms — быстрая загрузка корпуса и терминов
  • AntConc — analysis toolkit for concordancing and text analysis — аналитическое программное обеспечение для конкордации и анализа текстов

Другие инструменты компьютерной лингвистики можно найти тут. А здесь туториалы по АнтКонку от его создателя.

BootCat позволяет быстро и без программирования собрать коллекцию текстов из интернета на интересующую вас тему.

Порядок действий:
  1. Next.
  2. Назовите вашу коллекцию и выберите язык для неё — так будет называться папка, куда сохранятся тексты.
  3. Здесь нужно выбрать режим сбора
  • Simple Mode — поиск по комбинациям ключевых слов; самый эффективный, наверняка сработает;
  • Custom Tuples — сбор по нужным словосочетаниям;
  • Custom URLs — сбор по вашим ссылкам; работает плохо, так как некоторые сайты блокируют сбор, а на других некорректно проставлены html-теги;
  • Local files — сбор из предварительно заготовленных файлов;
  • Local queries — сбор из предварительно сохранённых поисковых запросов.
4. Допустим, мы выбрали ​Simple Mode. Дальше выбираем поисковик. У меня только один вариант: External Browser (Google).




5. Вводите N ключевых слов, по слову на каждой строке.
6. Generate tuples — это создаст различные комбинации из введённых ключевых слов.
7. Уточняете настройки, например, исключаете из сбора какие-то домены или меняете число ссылок, которые должны быть возвращены для каждой комбинации ключевых слов.
8. Generate queries — формируем запросы из комбинаций ключевых слов
9. Open All in Browser — в браузере откроются страницы с результатами поиска по сформированным запросам. Возникающее окошко сообщит, куда нужно будет их скачать.
10. Вручную сохраняем все открывшиеся html-страницы в подпапку queries папки проекта.
11. Collect URLs — собираем все ссылки оттуда.
12. Если нужно, отщёлкиваем ненужные ссылки. В поле Retrieved URLs видим, сколько всего собрали ссылок. В поле Selected URLs видим, сколько ссылок выбрали для сбора коллекции.
13. Next
14. Build corpus.
15. Finish.
16. Посмотреть, всё ли успешно собрано в папке проекта в подпапке corpus. Там должно быть множество .txt-файлов.

Если текстовых файлов собрано очень мало, посмотрите файл report.xlsx. Если после нескольких первых строк Status становится CANNOT_PARSE, то, значит, вас блокирует поисковик. Это можно решить в питоне, но в буткэте остаётся только смириться и запустить сбор заново.
AntConc
Программа для анализа текстов
  1. Загружаем корпус в программу через Open.

2. Смотрим, корректно ли прогрузились тексты, кликнув на один из них и щёлкнув на File View.

3. Чтобы посмотреть на частотность слов в корпусе, идём в Word, видим самые популярные слова и их Freq (frequency) — по-русски «частотные списки» — набор слов данного языка, корпуса или текста вместе с информацией об их частотности.

Word — отдельные токены (слова) с подсчитанной частотой. Исключения (стоп-слова) загружаем через Settings → Global Settings → Tool Filters → → Hide words in file → Apply.​

4. File View
  • просмотр файла
  • обычный поиск по тексту в конкретном файле, а не во всём корпусе




5. Clusters — найти слово или паттерн в корпусе и сгруппировать (кластеризировать) их со словами слева и справа, а затем проранжировать результаты по частоте. Можно отредактировать:
  • размер кластера;
  • минимальную частоту;
  • минимальное число файлов, в которых встречается такое сочетание (range).

6. N-Gram — считает частоту сочетаний из n числа слов; альтернатива инструменту Cluster. В отличие от Cluster, здесь не нужно вводить поисковой термин. Если n = 2, а текст “This is an apple”, инструмент подсчитает частоту “This is”, “is an” и “an apple”. Также здесь нет разделения на правый и левый поиск. Также можно подставлять open slots — пустые места, в которые можно подставить что угодно (для n = 3 и выше).
Collocate
Collocate — позволяет найти слова, которые часто встречаются в близкой связи (коллокации), и посмотреть на силу связи между ними. Может искать на расстоянии!

1. Вводим слово, по которому нужно сделать поиск.
2. Устанавливаем размеры окна для поиска: сколько слов налево и сколько слов направо.
3. Галочка «same» фиксирует соотношение между размерами окна вправо и влево.
4. Можно установить минимальную частоту.
5. Выбираем сортировку по частоте, иначе может получиться, что самая сильная связь со словом, которое упоминается лишь один раз.
  • Freq — частота;
  • Freq (L) — частота употребления слева от искомого слова;
  • Freq (R) — частота употребления справа от искомого слова;
  • Stat — статистическая значимость.
  • Чем выше статистическая значимость, тем лучше; статистическая значимость отражает силу связи.
6. В Tool Preferences можно выбрать меру для отображения эффекта.

  • MI — Mutual Information, взаимная информация. Считается значимой, если превышает 3 в русском языке и 1 в целом. Позволяет выделить устойчивые сочетания, имена собственные и специальные термины. Сравнивает частоту слова n в паре с неким коллокатом и абсолютную частоту этих слов в данном тексте по отдельности. Показывает, насколько сильна связь между токенами.

  • t-score — t-мера, показывает, насколько неслучайна связь слова с данным коллокатом и насколько частотно совместное употребнление этих слов. Недостаток: выделяет пары со служебными и другими высокочастотными словами, поэтому их нужно отсеивать стоп-листами. Показывает, насколько мы можем быть уверены в связи между токенами.

  • Log-likelihood — логарифмическая функция правдоподобия.



Дополнительное объяснение показателей

MI может показывать высокое значение для словосочетаний, которые редко встречаются в тексте — и оттого мы не можем быть уверены, что эти слова действительно можно считать коллокацией. Поэтому к этой мере стоит относиться в духе «Доверяй, но проверяй».

Представьте, что вы стоите на поле с клевером. Смотря на MI-меру, один исследователь воскликнет: «О, среди поля трёхлистного клевера мы нашли четырёхлистный — значит, четырёхлистный клевер существует!»

А второй возразит: «Ну конкретно этот клевер в ваших руках действительно существует, но может это просто единичная мутация, а не норма». То есть оба исследователя признают, что четырёхлистный клевер найден, но относятся они к нему по-разному.

T-мера позволяет посмотреть, действительно ли некое слово примагничивается к искомому слову, и учитывает частоту словосочетаний. Здесь слова, которые редко встречаются в корпусе, не получат высокого значения.

Порог значимости для обоих критериев не определён, но можно ориентироваться на минимум 2–3. Когда-то t-score вырабатывалась с отсылкой к t-критерию Стьюдента, у которого порог значимости 1,96 по модулю. Показатели могут меняться от размеров выборки, поэтому ориентируйтесь по ситуации.

Однозначный признак коллокации — если у словосочетания хороший показатель и MI, и t-score.
Keyword List
Keyword List позволяет найти слова, которые особенно частотны для данного корпуса и при этом редко встречаются в контрольном корпусе (референсе).

Или наоборот, слишком редко встречаются — для этого в Tool Settings нужно выбрать параметр negative.



Для использования этой функции нужно загрузить контрольный корпус через File → Corpus Manager.

Пример использования: определить, как изменился стиль писателя в пожилом возрасте: для этого нужно сравнить работы за последние годы жизни с работами за все годы творчества.​
Конкорданс
KWIC (Key Word In Context) — позволяет найти слово или фразу в корпусе и проанализировать контекст употребления.

1. Можно отредактировать размер приводимого контекста снизу в поле Context Size. Так, «100» в этом поле будет означать «найди и отобрази 100 символов слева и сто символов справа от найденного слова или выражения».

2. Снизу Sort Options — позволяет отсортировать по алфавиту по нескольким словам рядом с искомым словом, и это помогает увидеть паттерны при употреблении этого слова
  • порядковый номер слова и его направление R Right или L Left, всего три уровня + нажать кнопку Sort.

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

4. Сверху в Total Hits — сколько случаев употребления нашлось.

5. Если добавить звёздочку после слова report, будет найдено также reported, reportedly, reporting и т.д.

6. В Search Query
  • нет галочек — ищем по string в программистском смысле, может быть последовательностью символов в том числе в центре слова
  • Words — по словам, можно применять *
  • Case — регистр; в каком регистре написано слово, только в таком регистре и будут искаться слова
  • Regex — по регулярным выражениям
7. Adv(anced) Search
  • можно ввести вручную или загрузить несколько терминов, по которым нужно одновременно совершить поиск;
  • можно указать контекст, совместно с какими словами должны употребляться искомые слова, и в каких границах слева и справа должен быть мэтч.



Шорткаты
1. Выделение с зажатым Shift — выделить идущие подряд.
2. выделение с зажатым Ctrl — выделить нужные элементы.
3. Ctrl А — выделить все.
4. Ctrl C — скопировать выделенное.
5. Del — удалить выделенные ряды.

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

Dispersion — равномерность распределения термина по тексту. Чем ближе к 1, тем равномернее распределён термин.

"A dispersion value is the degree to which a set of values are uniformly spread. Think of rainfall in the UK — generally fairly uniformly spread throughout the year. Compare with countries which have a rainy season.

In linguistic terms, one might wish to know how the occurrences of a word like skull are distributed in Hamlet, and WordSmith has shown this in plot form since version 1. The dispersion value statistic gives mathematical support to this and makes comparisons easier.

It ranges from 0 to 1, with 0.9 or 1 suggesting very uniform dispersion and 0 or 0.1 suggesting "burstiness" (Katz, 1996)
TF-IDF
TF-IDF — это способ нахождения ключевых слов, который не применяется к одному документу, только к корпусу.

Ключевым словом считается то слово, которое в этом конкретном тексте встречается чаще, чем в остальных текстах корпуса.

Корпус — это список строк, где каждая строка — отдельный текстовый документ для сопоставления.

TF — term frequency — частота, с которой слово встречается в тексте, нормализованная на общее число слов в тексте. Нормализация помогает уравнять в правах короткие и длинные документы. TF = word_count / length_of_text.

IDF — inverse document frequency — инвертированная частота слова в документе. Рассчитывается как натуральный логарифм отношения числа всех документов D к числу документов d, содержащих некоторое слово. Эта мера помогает понизить значимость слов, которые встречаются во всех документах, а, значит, мало помогает определить ключевые слова в конкретном документе для его классификации. IDF = log (all_texts_count / word_in_text_count).



TFхIDF — итоговая мера, где TF стремится повысить значение, а IDF — наоборот, понизить.

TF-IDF возвращает значение от 0 до 1; чем выше значение, тем важнее слово для данного текста в сравнении с другими текстами в корпусе.

TF-IDF позволяет:
  • поисковикам определить, насколько текст внутри ссылки соответствует запросу;
  • определить, насколько документы похожи друг на друга при их классификации.

Узнать больше можно здесь и здесь. Также можно посмотреть документацию.
Домашнее задание
Дедлайн части 1: 6 октября, понедельник, 18:00
Критерии оценивания

Дедлайн части 2: 13 октября, понедельник, 18:00
Критерии оценивания
Часть 1: BootCat

  1. С помощью BootCat соберите коллекцию текстов по минимум пяти ключевым словам.
  2. Проследите, что в собранной коллекции минимум два файла имеют осмысленное релевантное содержание.
  3. Архивируйте собранную коллекцию в zip-файл (только подпапку corpus) и загрузите её в вашу папку.
  4. С помощью регулярных выражений (неважно, в Python или RegEx101) соберите все уникальные (= без дубликатов) домены из ссылок, по которым BootCat собирал коллекцию — их можно найти в файле url_list_final.txt или в report.xlsx (там также указывается, какие ссылки удалось собрать, а какие — нет).
  5. В вашей папке заведите док-файл под названием «Описание и анализ коллекции».
  6. В документе пропишите с отдельными заголовками:
  • дату сбора коллекции;
  • ключевые слова, по которым осуществлялся сбор;
  • количество файлов в коллекции.
7. Ниже напишите заголовок «Источники текстов» и вставьте туда уникальные доменные имена, полученные с помощью регулярных выражений, в виде списка с буллет-поинтами.

Пример оформления и описания коллекции
Часть 2: AntConc

Проанализируйте собранную коллекцию с помощью AntConc.
  1. В вашем файле «Описание и анализ коллекции» сделайте новый заголовок — «Выводы на основе оригинального текста». Запишите под этим заголовком ваши наблюдения, иллюстрируя их конкретными цифрами (frequency, dispersion, likelihood, MI- или t-мера) и цитатами, если нужен контекст.
  2. Лемматизируйте коллекцию с помощью pymorphy3. Блокнот
  3. Проанализируйте лемматизированный файл с помощью AntConc.
  4. В файле с анализом напишите следующий заголовок «Выводы на основе лемматизированного текста». Запишите под этим заголовком ваши наблюдения, иллюстрируя их конкретными цифрами (frequency, MI- или t-мера).
  5. Слова, оказавшиеся важными в лемматизированном списке, найдите по началу слова со звёздочкой в оригинальном файле и приведите контекст употребления.

Пример:
В изначальном, нелемматизированном тексте в частотном списке не было слова «лошадь».
После лемматизации это слово появилось в частотном списке.
Вы возвращаетесь в изначальный, нелемматизированный текст и с помощью инструментов поиска ищете, в каком контексте оно использовалось. В документ вставляете нелемматизированную цитату целиком:
«Быстро лошади скакали».

6. Разумом проанализируйте контекст, в котором употреблялись частотные слова и словосочетания.
7. Запишите заголовок — «Общие выводы» — и сделайте выводы о собранной коллекции.
8. С помощью инструмента Wordcloud сделайте облако слов с частотными словами.
9. Доработайте облако до полноценной картинки для соцсетей. У картинки должны быть заголовок, источник данных, автор и год создания. Примерный шаблон. Источник данных в этом случае — «Коллекция текстов о ...., полученная ...12.2024 с помощью BootCat».
10. Вставьте получившуюся картинку в документ под заголовком «Облако слов».

Всего в анализе должно быть минимум пять цифр. Это могут быть меры:
  • частота слова или коллокации — frequency;
  • правдоподобность — likelihood;
  • эффект в Collocate (MI-мера или t-score);
  • дисперсия в Plot — dispersion.​

❗ К названиям всех подразделов примените стиль «Заголовок 1».
В результате должно получиться связное описание из шести частей, сопровождённое цитатами и числовыми доказательствами:
  1. Общая информация.
  2. Источники текстов.
  3. Выводы на основе оригинального текста.
  4. Выводы на основе лемматизированного текста.
  5. Общие выводы.
  6. Облако слов.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website