Перейти к содержанию

Конкорданс KWIC

ruts.corpus.kwic(), ruts.corpus.format_kwic(), ruts.corpus.print_kwic(), ruts.corpus.Concordance

Описание

Конкорданс KWIC (keyword in context) - все вхождения слова или словосочетания с контекстом слева и справа, как в AntConc и textacy keyword_in_context. Показывает, как слово употребляется в тексте: с чем сочетается, в каких формах и значениях.

Вхождения ищутся среди слов текста по словоформе без учета регистра и буквы ё, с учетом регистра (ignore_case=False) или по лемме pymorphy3 (by_lemma=True: «кота», «коту» находятся по «кот», словосочетание задается леммами - «рабочий класс»); для Doc с разметкой частей речи лемма слова берется с частью речи токена, так «стали» находится по «сталь» или по «стать» в зависимости от разметки, ключевое слово лемматизируется без части речи. Контекст - window слов слева и справа, как они записаны в тексте, со знаками препинания между ними; пробельные символы схлопываются в один пробел, вхождения не пересекаются. Источник - строка (слова razdel) или объект Doc.

format_kwic выравнивает строки по ключевому слову: левый контекст обрезается слева и прижимается к правому краю, правый обрезается справа; print_kwic печатает результат.

Параметры

Параметр Тип По умолчанию Описание
source str/Doc - Текст или объект Doc
keyword str - Слово или словосочетание (слова через пробел)
window int 5 Число слов контекста с каждой стороны
by_lemma bool False Сравнивать леммы, а не словоформы
ignore_case bool True Не учитывать регистр и букву ё при сравнении словоформ

format_kwic(concordances, width=40) и print_kwic(concordances, width=40): width - ширина контекста в символах, не меньше единицы; переносы строк внутри ключевого словосочетания заменяются пробелами.

Результат

Список именованных кортежей Concordance по порядку в тексте.

Поле Тип Описание
start int Позиция первого символа вхождения в тексте
end int Позиция за последним символом вхождения
left str Контекст слева
keyword str Вхождение как в тексте
right str Контекст справа

Пример

Пример

from ruts.corpus import kwic, print_kwic

text = (
    "Кот сидел на окне и смотрел на птиц. Птицы улетели, и кот уснул на окне. "
    "Завтра кот снова будет сидеть на окне и смотреть на птиц."
)
lines = kwic(text, "окно", by_lemma=True, window=3)
lines[0]
# Concordance(start=13, end=17, left='Кот сидел на', keyword='окне', right='и смотрел на')

print_kwic(lines, width=20)
#         Кот сидел на  окне  и смотрел на
#         кот уснул на  окне  . Завтра кот снова
#      будет сидеть на  окне  и смотреть на

[line.keyword for line in kwic(text, "смотреть на птица", by_lemma=True)]
# ['смотрел на птиц', 'смотреть на птиц']