Конкорданс 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)]
# ['смотрел на птиц', 'смотреть на птиц']