corus

In [1]:
from corus.sources.meta import METAS
from corus.readme import format_metas, show_html, patch_readme

html = format_metas(METAS, 'https://nbviewer.jupyter.org/github/natasha/corus/blob/master/docs.ipynb')
patch_readme(html, 'README.md')

html = format_metas(METAS)
show_html(html)
Dataset API from corus import Tags Texts Uncompressed Description
Lenta.ru
Lenta.ru v1.0 load_lenta news 739 351 1.66 Gb wget https://github.com/yutkin/Lenta.Ru-News-Dataset/releases/download/v1.0/lenta-ru-news.csv.gz
Lenta.ru v1.1+ load_lenta2 news 800 975 1.94 Gb wget https://github.com/yutkin/Lenta.Ru-News-Dataset/releases/download/v1.1/lenta-ru-news.csv.bz2
Lib.rus.ec load_librusec fiction 301 871 144.92 Gb Dump of lib.rus.ec prepared for RUSSE workshop

wget http://panchenko.me/data/russe/librusec_fb2.plain.gz
Rossiya Segodnya load_ria_raw
load_ria
news 1 003 869 3.70 Gb wget https://github.com/RossiyaSegodnya/ria_news_dataset/raw/master/ria.json.gz
Mokoron Russian Twitter Corpus load_mokoron social sentiment 17 633 417 1.86 Gb Russian Twitter sentiment markup

Manually download https://www.dropbox.com/s/9egqjszeicki4ho/db.sql
Wikipedia load_wiki 1 541 401 12.94 Gb Russian Wiki dump

wget https://dumps.wikimedia.org/ruwiki/latest/ruwiki-latest-pages-articles.xml.bz2
GramEval2020 load_gramru 162 372 30.04 Mb wget https://github.com/dialogue-evaluation/GramEval2020/archive/master.zip
unzip master.zip
mv GramEval2020-master/dataTrain train
mv GramEval2020-master/dataOpenTest dev
rm -r master.zip GramEval2020-master
wget https://github.com/AlexeySorokin/GramEval2020/raw/master/data/GramEval_private_test.conllu
OpenCorpora load_corpora morph 4 030 20.21 Mb wget http://opencorpora.org/files/export/annot/annot.opcorpora.xml.zip
RusVectores SimLex-965 load_simlex emb sim wget https://rusvectores.org/static/testsets/ru_simlex965_tagged.tsv
wget https://rusvectores.org/static/testsets/ru_simlex965.tsv
Omnia Russica load_omnia morph web fiction 489.62 Gb Taiga + Wiki + Araneum. Read "Even larger Russian corpus" https://events.spbu.ru/eventsContent/events/2019/corpora/corp_sborn.pdf

Manually download http://bit.ly/2ZT4BY9
factRuEval-2016 load_factru ner news 254 969.27 Kb Manual PER, LOC, ORG markup prepared for 2016 Dialog competition

wget https://github.com/dialogue-evaluation/factRuEval-2016/archive/master.zip
unzip master.zip
rm master.zip
Gareev load_gareev ner news 97 455.02 Kb Manual PER, ORG markup (no LOC)

Email Rinat Gareev ([email protected]) ask for dataset
tar -xvf rus-ner-news-corpus.iob.tar.gz
rm rus-ner-news-corpus.iob.tar.gz
Collection5 load_ne5 ner news 1 000 2.96 Mb News articles with manual PER, LOC, ORG markup

wget http://www.labinform.ru/pub/named_entities/collection5.zip
unzip collection5.zip
rm collection5.zip
WiNER load_wikiner ner 203 287 36.15 Mb Sentences from Wiki auto annotated with PER, LOC, ORG tags

wget https://github.com/dice-group/FOX/raw/master/input/Wikiner/aij-wikiner-ru-wp3.bz2
BSNLP-2019 load_bsnlp ner 464 1.16 Mb Markup prepared for 2019 BSNLP Shared Task

wget http://bsnlp.cs.helsinki.fi/TRAININGDATA_BSNLP_2019_shared_task.zip
wget http://bsnlp.cs.helsinki.fi/TESTDATA_BSNLP_2019_shared_task.zip
unzip TRAININGDATA_BSNLP_2019_shared_task.zip
unzip TESTDATA_BSNLP_2019_shared_task.zip -d test_pl_cs_ru_bg
rm TRAININGDATA_BSNLP_2019_shared_task.zip TESTDATA_BSNLP_2019_shared_task.zip
Persons-1000 load_persons ner news 1 000 2.96 Mb Same as Collection5, only PER markup + normalized names

wget http://ai-center.botik.ru/Airec/ai-resources/Persons-1000.zip
The Russian Drug Reaction Corpus (RuDReC) load_rudrec ner 4 809 1.73 Kb RuDReC is a new partially annotated corpus of consumer reviews in Russian about pharmaceutical products for the detection of health-related named entities and the effectiveness of pharmaceutical products. Here you can download and work with the annotated part, to get the raw part (1.4M reviews) please refer to https://github.com/cimm-kzn/RuDReC.

wget https://github.com/cimm-kzn/RuDReC/raw/master/data/rudrec_annotated.json
Taiga Large collection of Russian texts from various sources: news sites, magazines, literacy, social networks

wget https://linghub.ru/static/Taiga/retagged_taiga.tar.gz
tar -xzvf retagged_taiga.tar.gz
Arzamas load_taiga_arzamas news 311 4.50 Mb
Fontanka load_taiga_fontanka news 342 683 786.23 Mb
Interfax load_taiga_interfax news 46 429 77.55 Mb
KP load_taiga_kp news 45 503 61.79 Mb
Lenta load_taiga_lenta news 36 446 95.15 Mb
Taiga/N+1 load_taiga_nplus1 news 7 696 24.96 Mb
Magazines load_taiga_magazines 39 890 2.19 Gb
Subtitles load_taiga_subtitles 19 011 909.08 Mb
Social load_taiga_social social 1 876 442 648.18 Mb
Proza load_taiga_proza fiction 1 732 434 38.25 Gb
Stihi load_taiga_stihi 9 157 686 12.80 Gb
Russian NLP Datasets Several Russian news datasets from webhose.io, lenta.ru and other news sites.
News load_buriy_news news 2 154 801 6.84 Gb Dump of top 40 news + 20 fashion news sites.

wget https://github.com/buriy/russian-nlp-datasets/releases/download/r4/news-articles-2014.tar.bz2
wget https://github.com/buriy/russian-nlp-datasets/releases/download/r4/news-articles-2015-part1.tar.bz2
wget https://github.com/buriy/russian-nlp-datasets/releases/download/r4/news-articles-2015-part2.tar.bz2
Webhose load_buriy_webhose news 285 965 859.32 Mb Dump from webhose.io, 300 sources for one month.

wget https://github.com/buriy/russian-nlp-datasets/releases/download/r4/webhose-2016.tar.bz2
ODS #proj_news_viz Several news sites scraped by members of #proj_news_viz ODS project.
Interfax load_ods_interfax news 543 961 1.22 Gb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/interfax.csv.gz
Gazeta load_ods_gazeta news 865 847 1.63 Gb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/gazeta.csv.gz
Izvestia load_ods_izvestia news 86 601 307.19 Mb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/iz.csv.gz
Meduza load_ods_meduza news 71 806 270.11 Mb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/meduza.csv.gz
RIA load_ods_ria news 101 543 233.88 Mb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/ria.csv.gz
Russia Today load_ods_rt news 106 644 187.12 Mb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/rt.csv.gz
TASS load_ods_tass news 1 135 635 3.27 Gb wget https://github.com/ods-ai-ml4sg/proj_news_viz/releases/download/data/tass-001.csv.gz
Universal Dependencies
GSD load_ud_gsd morph syntax 5 030 1.01 Mb wget https://github.com/UniversalDependencies/UD_Russian-GSD/raw/master/ru_gsd-ud-dev.conllu
wget https://github.com/UniversalDependencies/UD_Russian-GSD/raw/master/ru_gsd-ud-test.conllu
wget https://github.com/UniversalDependencies/UD_Russian-GSD/raw/master/ru_gsd-ud-train.conllu
Taiga load_ud_taiga morph syntax 3 264 353.80 Kb wget https://github.com/UniversalDependencies/UD_Russian-Taiga/raw/master/ru_taiga-ud-dev.conllu
wget https://github.com/UniversalDependencies/UD_Russian-Taiga/raw/master/ru_taiga-ud-test.conllu
wget https://github.com/UniversalDependencies/UD_Russian-Taiga/raw/master/ru_taiga-ud-train.conllu
PUD load_ud_pud morph syntax 1 000 207.78 Kb wget https://github.com/UniversalDependencies/UD_Russian-PUD/raw/master/ru_pud-ud-test.conllu
SynTagRus load_ud_syntag morph syntax 61 889 11.33 Mb wget https://github.com/UniversalDependencies/UD_Russian-SynTagRus/raw/master/ru_syntagrus-ud-dev.conllu
wget https://github.com/UniversalDependencies/UD_Russian-SynTagRus/raw/master/ru_syntagrus-ud-test.conllu
wget https://github.com/UniversalDependencies/UD_Russian-SynTagRus/raw/master/ru_syntagrus-ud-train.conllu
morphoRuEval-2017
General Internet-Corpus load_morphoru_gicrya morph 83 148 10.58 Mb wget https://github.com/dialogue-evaluation/morphoRuEval-2017/raw/master/GIKRYA_texts_new.zip
unzip GIKRYA_texts_new.zip
rm GIKRYA_texts_new.zip
Russian National Corpus load_morphoru_rnc morph 98 892 12.71 Mb wget https://github.com/dialogue-evaluation/morphoRuEval-2017/raw/master/RNC_texts.rar
unrar x RNC_texts.rar
rm RNC_texts.rar
OpenCorpora load_morphoru_corpora morph 38 510 4.80 Mb wget https://github.com/dialogue-evaluation/morphoRuEval-2017/raw/master/OpenCorpora_Texts.rar
unrar x OpenCorpora_Texts.rar
rm OpenCorpora_Texts.rar
RUSSE Russian Semantic Relatedness
HJ: Human Judgements of Word Pairs load_russe_hj emb sim wget https://github.com/nlpub/russe-evaluation/raw/master/russe/evaluation/hj.csv
RT: Synonyms and Hypernyms from the Thesaurus RuThes load_russe_rt emb sim wget https://raw.githubusercontent.com/nlpub/russe-evaluation/master/russe/evaluation/rt.csv
AE: Cognitive Associations from the Sociation.org Experiment load_russe_ae emb sim wget https://github.com/nlpub/russe-evaluation/raw/master/russe/evaluation/ae-train.csv
wget https://github.com/nlpub/russe-evaluation/raw/master/russe/evaluation/ae-test.csv
wget https://raw.githubusercontent.com/nlpub/russe-evaluation/master/russe/evaluation/ae2.csv
Toloka Datasets
Lexical Relations from the Wisdom of the Crowd (LRWC) load_toloka_lrwc emb sim wget https://tlk.s3.yandex.net/dataset/LRWC.zip
unzip LRWC.zip
rm LRWC.zip
The Russian Adverse Drug Reaction Corpus of Tweets (RuADReCT) load_ruadrect social 9 515 2.09 Mb This corpus was developed for the Social Media Mining for Health Applications (#SMM4H) Shared Task 2020

wget https://github.com/cimm-kzn/RuDReC/raw/master/data/RuADReCT.zip
unzip RuADReCT.zip
rm RuADReCT.zip

load_lenta

In [2]:
from corus import load_lenta

path = 'data/lenta-ru-news.csv.gz'
records = load_lenta(path)
next(records)
Out[2]:
LentaRecord(
    url='https://lenta.ru/news/2018/12/14/cancer/',
    title='Названы регионы России с\xa0самой высокой смертностью от\xa0рака',
    text='Вице-премьер по социальным вопросам Татьяна Голикова рассказала, в каких регионах России зафиксирована наиболее высокая смертность от рака, сообщает РИА Новости. По словам Голиковой, чаще всего онкологические заболевания становились причиной смерти в Псковской, Тверской, Тульской и Орловской областях, а также в Севастополе. Вице-премьер напомнила, что главные факторы смертности в России — рак и болезни системы кровообращения. В начале года стало известно, что смертность от онкологических заболеваний среди россиян снизилась впервые за три года. По данным Росстата, в 2017 году от рака умерли 289 тысяч человек. Это на 3,5 процента меньше, чем годом ранее.',
    topic='Россия',
    tags='Общество',
    date=None
)

load_lenta2

In [3]:
from corus import load_lenta2

path = 'data/lenta-ru-news.csv.bz2'
records = load_lenta2(path)
next(records)
Out[3]:
LentaRecord(
    url='https://lenta.ru/news/1914/09/16/hungarnn/',
    title='1914. Русские войска вступили в пределы Венгрии  ',
    text='Бои у Сопоцкина и Друскеник закончились отступлением германцев. Неприятель, приблизившись с севера к Осовцу начал артиллерийскую борьбу с крепостью. В артиллерийском бою принимают участие тяжелые калибры. С раннего утра 14 сентября огонь достиг значительного напряжения. Попытка германской пехоты пробиться ближе к крепости отражена. В Галиции мы заняли Дембицу. Большая колонна, отступавшая по шоссе от Перемышля к Саноку, обстреливалась с высот нашей батареей и бежала, бросив парки, обоз и автомобили. Вылазки гарнизона Перемышля остаются безуспешными. При продолжающемся отступлении австрийцев обнаруживается полное перемешивание их частей, захватываются новые партии пленных, орудия и прочая материальная часть. На перевале Ужок мы разбили неприятельский отряд, взяли его артиллерию и много пленных и, продолжая преследовать, вступили в пределы Венгрии. «Русский инвалид», 16 сентября 1914 года.',
    topic='Библиотека',
    tags='Первая мировая',
    date=datetime.datetime(1914, 9, 16, 0, 0)
)

load_factru

In [4]:
from corus import load_factru

dir = 'data/factRuEval-2016-master/'
records = load_factru(dir)
next(records)
Out[4]:
FactruMarkup(
    id='58',
    text='Встреча с послом Италии в миде Грузии\n\nПо инициативе итальянской стороны чрезвычайный и полномочный посол Италии в Грузии Виторио Сандали встретился с заместителем министра иностранных дел Грузии Александром Налбандовым. Предметом обсуждения стали вопросы сотрудничества в международных организациях.\n',
    objects=[FactruObject(
         id='16972',
         type='LocOrg',
         spans=[FactruSpan(
              id='32962',
              type='loc_name',
              start=17,
              stop=23
          )]
     ),
     FactruObject(
         id='16975',
         type='Org',
         spans=[FactruSpan(
              id='32963',
              type='org_name',
              start=26,
              stop=30
          ),
          FactruSpan(
              id='32965',
              type='loc_name',
              start=31,
              stop=37
          )]
     ),
     FactruObject(
         id='16974',
         type='LocOrg',
         spans=[FactruSpan(
              id='32965',
              type='loc_name',
              start=31,
              stop=37
          )]
     ),
     FactruObject(
         id='16967',
         type='LocOrg',
         spans=[FactruSpan(
              id='32951',
              type='loc_name',
              start=106,
              stop=112
          )]
     ),
     FactruObject(
         id='16968',
         type='LocOrg',
         spans=[FactruSpan(
              id='32952',
              type='loc_name',
              start=115,
              stop=121
          )]
     ),
     FactruObject(
         id='16969',
         type='Person',
         spans=[FactruSpan(
              id='32953',
              type='name',
              start=122,
              stop=129
          ),
          FactruSpan(
              id='32954',
              type='surname',
              start=130,
              stop=137
          )]
     ),
     FactruObject(
         id='16970',
         type='LocOrg',
         spans=[FactruSpan(
              id='32955',
              type='loc_name',
              start=189,
              stop=195
          )]
     ),
     FactruObject(
         id='16971',
         type='Person',
         spans=[FactruSpan(
              id='32956',
              type='name',
              start=196,
              stop=207
          ),
          FactruSpan(
              id='32957',
              type='surname',
              start=208,
              stop=219
          )]
     )],
    corefs=[FactruCoref(
         id='2',
         objects=[FactruObject(
              id='16967',
              type='LocOrg',
              spans=[FactruSpan(
                   id='32951',
                   type='loc_name',
                   start=106,
                   stop=112
               )]
          ),
          FactruObject(
              id='16972',
              type='LocOrg',
              spans=[FactruSpan(
                   id='32962',
                   type='loc_name',
                   start=17,
                   stop=23
               )]
          )],
         slots=[FactruCorefSlot(
              type='name',
              value='Италия'
          )]
     ),
     FactruCoref(
         id='3',
         objects=[FactruObject(
              id='16968',
              type='LocOrg',
              spans=[FactruSpan(
                   id='32952',
                   type='loc_name',
                   start=115,
                   stop=121
               )]
          ),
          FactruObject(
              id='16970',
              type='LocOrg',
              spans=[FactruSpan(
                   id='32955',
                   type='loc_name',
                   start=189,
                   stop=195
               )]
          ),
          FactruObject(
              id='16974',
              type='LocOrg',
              spans=[FactruSpan(
                   id='32965',
                   type='loc_name',
                   start=31,
                   stop=37
               )]
          )],
         slots=[FactruCorefSlot(
              type='name',
              value='Грузия'
          )]
     ),
     FactruCoref(
         id='4',
         objects=[FactruObject(
              id='16975',
              type='Org',
              spans=[FactruSpan(
                   id='32963',
                   type='org_name',
                   start=26,
                   stop=30
               ),
               FactruSpan(
                   id='32965',
                   type='loc_name',
                   start=31,
                   stop=37
               )]
          )],
         slots=[FactruCorefSlot(
              type='name',
              value='МИД Грузии'
          )]
     ),
     FactruCoref(
         id='5',
         objects=[FactruObject(
              id='16969',
              type='Person',
              spans=[FactruSpan(
                   id='32953',
                   type='name',
                   start=122,
                   stop=129
               ),
               FactruSpan(
                   id='32954',
                   type='surname',
                   start=130,
                   stop=137
               )]
          )],
         slots=[FactruCorefSlot(
              type='firstname',
              value='Виторио'
          ),
          FactruCorefSlot(
              type='lastname',
              value='Сандали'
          )]
     ),
     FactruCoref(
         id='6',
         objects=[FactruObject(
              id='16971',
              type='Person',
              spans=[FactruSpan(
                   id='32956',
                   type='name',
                   start=196,
                   stop=207
               ),
               FactruSpan(
                   id='32957',
                   type='surname',
                   start=208,
                   stop=219
               )]
          )],
         slots=[FactruCorefSlot(
              type='firstname',
              value='Александр'
          ),
          FactruCorefSlot(
              type='lastname',
              value='Налбандов'
          )]
     )],
    facts=[FactruFact(
         id='58-0',
         type='Meeting',
         slots=[FactruFactSlot(
              type='Participant',
              ref='obj',
              value=FactruCoref(
                  id='5',
                  objects=[FactruObject(
                       id='16969',
                       type='Person',
                       spans=[FactruSpan(
                            id='32953',
                            type='name',
                            start=122,
                            stop=129
                        ),
                        FactruSpan(
                            id='32954',
                            type='surname',
                            start=130,
                            stop=137
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='firstname',
                       value='Виторио'
                   ),
                   FactruCorefSlot(
                       type='lastname',
                       value='Сандали'
                   )]
              )
          ),
          FactruFactSlot(
              type='Participant',
              ref='obj',
              value=FactruCoref(
                  id='6',
                  objects=[FactruObject(
                       id='16971',
                       type='Person',
                       spans=[FactruSpan(
                            id='32956',
                            type='name',
                            start=196,
                            stop=207
                        ),
                        FactruSpan(
                            id='32957',
                            type='surname',
                            start=208,
                            stop=219
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='firstname',
                       value='Александр'
                   ),
                   FactruCorefSlot(
                       type='lastname',
                       value='Налбандов'
                   )]
              )
          )]
     ),
     FactruFact(
         id='58-1',
         type='Occupation',
         slots=[FactruFactSlot(
              type='Who',
              ref='obj',
              value=FactruCoref(
                  id='5',
                  objects=[FactruObject(
                       id='16969',
                       type='Person',
                       spans=[FactruSpan(
                            id='32953',
                            type='name',
                            start=122,
                            stop=129
                        ),
                        FactruSpan(
                            id='32954',
                            type='surname',
                            start=130,
                            stop=137
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='firstname',
                       value='Виторио'
                   ),
                   FactruCorefSlot(
                       type='lastname',
                       value='Сандали'
                   )]
              )
          ),
          FactruFactSlot(
              type='Where',
              ref='obj',
              value=FactruCoref(
                  id='2',
                  objects=[FactruObject(
                       id='16967',
                       type='LocOrg',
                       spans=[FactruSpan(
                            id='32951',
                            type='loc_name',
                            start=106,
                            stop=112
                        )]
                   ),
                   FactruObject(
                       id='16972',
                       type='LocOrg',
                       spans=[FactruSpan(
                            id='32962',
                            type='loc_name',
                            start=17,
                            stop=23
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='name',
                       value='Италия'
                   )]
              )
          ),
          FactruFactSlot(
              type='Position',
              ref='span',
              value=FactruSpan(
                  id='32958',
                  type='job',
                  start=73,
                  stop=105
              )
          ),
          FactruFactSlot(
              type='Position',
              ref='span',
              value=FactruSpan(
                  id='64007',
                  type='job',
                  start=73,
                  stop=121
              )
          )]
     ),
     FactruFact(
         id='58-2',
         type='Occupation',
         slots=[FactruFactSlot(
              type='Who',
              ref='obj',
              value=FactruCoref(
                  id='6',
                  objects=[FactruObject(
                       id='16971',
                       type='Person',
                       spans=[FactruSpan(
                            id='32956',
                            type='name',
                            start=196,
                            stop=207
                        ),
                        FactruSpan(
                            id='32957',
                            type='surname',
                            start=208,
                            stop=219
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='firstname',
                       value='Александр'
                   ),
                   FactruCorefSlot(
                       type='lastname',
                       value='Налбандов'
                   )]
              )
          ),
          FactruFactSlot(
              type='Position',
              ref='span',
              value=FactruSpan(
                  id='32959',
                  type='job',
                  start=151,
                  stop=188
              )
          ),
          FactruFactSlot(
              type='Where',
              ref='obj',
              value=FactruCoref(
                  id='3',
                  objects=[FactruObject(
                       id='16968',
                       type='LocOrg',
                       spans=[FactruSpan(
                            id='32952',
                            type='loc_name',
                            start=115,
                            stop=121
                        )]
                   ),
                   FactruObject(
                       id='16970',
                       type='LocOrg',
                       spans=[FactruSpan(
                            id='32955',
                            type='loc_name',
                            start=189,
                            stop=195
                        )]
                   ),
                   FactruObject(
                       id='16974',
                       type='LocOrg',
                       spans=[FactruSpan(
                            id='32965',
                            type='loc_name',
                            start=31,
                            stop=37
                        )]
                   )],
                  slots=[FactruCorefSlot(
                       type='name',
                       value='Грузия'
                   )]
              )
          )]
     )]
)

load_ne5

In [5]:
from corus import load_ne5

dir = 'data/Collection5/'
records = load_ne5(dir)
next(records)
Out[5]:
Ne5Markup(
    id='001',
    text='Россия рассчитывает на конструктивное воздействие США на Грузию\r\n\r\n04/08/2008 12:08\r\n\r\nМОСКВА, 4 авг - РИА Новости. Россия рассчитывает, что США воздействуют на Тбилиси в связи с обострением ситуации в зоне грузино-осетинского конфликта. Об этом статс-секретарь - заместитель министра иностранных дел России Григорий Карасин заявил в телефонном разговоре с заместителем госсекретаря США Дэниэлом Фридом.\r\n\r\n"С российской стороны выражена глубокая озабоченность в связи с новым витком напряженности вокруг Южной Осетии, противозаконными действиями грузинской стороны по наращиванию своих вооруженных сил в регионе, бесконтрольным строительством фортификационных сооружений", - говорится в сообщении.\r\n\r\n"Россия уже призвала Тбилиси к ответственной линии и рассчитывает также на конструктивное воздействие со стороны Вашингтона", - сообщил МИД России. ',
    spans=[Ne5Span(
         index='T1',
         type='GEOPOLIT',
         start=0,
         stop=6,
         text='Россия'
     ),
     Ne5Span(
         index='T2',
         type='GEOPOLIT',
         start=50,
         stop=53,
         text='США'
     ),
     Ne5Span(
         index='T3',
         type='GEOPOLIT',
         start=57,
         stop=63,
         text='Грузию'
     ),
     Ne5Span(
         index='T4',
         type='LOC',
         start=87,
         stop=93,
         text='МОСКВА'
     ),
     Ne5Span(
         index='T5',
         type='MEDIA',
         start=103,
         stop=114,
         text='РИА Новости'
     ),
     Ne5Span(
         index='T6',
         type='GEOPOLIT',
         start=116,
         stop=122,
         text='Россия'
     ),
     Ne5Span(
         index='T7',
         type='GEOPOLIT',
         start=141,
         stop=144,
         text='США'
     ),
     Ne5Span(
         index='T8',
         type='GEOPOLIT',
         start=161,
         stop=168,
         text='Тбилиси'
     ),
     Ne5Span(
         index='T9',
         type='GEOPOLIT',
         start=301,
         stop=307,
         text='России'
     ),
     Ne5Span(
         index='T10',
         type='PER',
         start=308,
         stop=324,
         text='Григорий Карасин'
     ),
     Ne5Span(
         index='T11',
         type='GEOPOLIT',
         start=383,
         stop=386,
         text='США'
     ),
     Ne5Span(
         index='T12',
         type='PER',
         start=387,
         stop=402,
         text='Дэниэлом Фридом'
     ),
     Ne5Span(
         index='T13',
         type='GEOPOLIT',
         start=505,
         stop=517,
         text='Южной Осетии'
     ),
     Ne5Span(
         index='T14',
         type='GEOPOLIT',
         start=703,
         stop=709,
         text='Россия'
     ),
     Ne5Span(
         index='T15',
         type='GEOPOLIT',
         start=723,
         stop=730,
         text='Тбилиси'
     ),
     Ne5Span(
         index='T16',
         type='GEOPOLIT',
         start=815,
         stop=825,
         text='Вашингтона'
     ),
     Ne5Span(
         index='T17',
         type='ORG',
         start=838,
         stop=841,
         text='МИД'
     ),
     Ne5Span(
         index='T18',
         type='GEOPOLIT',
         start=842,
         stop=848,
         text='России'
     )]
)

load_persons

In [6]:
from corus import load_persons

dir = 'data/Persons-1000.zip'
records = load_persons(dir)
next(records)
Out[6]:
PersonsMarkup(
    text='Россия рассчитывает на конструктивное воздействие США на Грузию\r\n\r\n04/08/2008 12:08\r\n\r\nМОСКВА, 4 авг - РИА Новости. Россия рассчитывает, что США воздействуют на Тбилиси в связи с обострением ситуации в зоне грузино-осетинского конфликта. Об этом статс-секретарь - заместитель министра иностранных дел России Григорий Карасин заявил в телефонном разговоре с заместителем госсекретаря США Дэниэлом Фридом.\r\n\r\n"С российской стороны выражена глубокая озабоченность в связи с новым витком напряженности вокруг Южной Осетии, противозаконными действиями грузинской стороны по наращиванию своих вооруженных сил в регионе, бесконтрольным строительством фортификационных сооружений", - говорится в сообщении.\r\n\r\n"Россия уже призвала Тбилиси к ответственной линии и рассчитывает также на конструктивное воздействие со стороны Вашингтона", - сообщил МИД России. ',
    spans=[PersonsSpan(
         id=1,
         start=308,
         stop=324,
         value='ГРИГОРИЙ КАРАСИН'
     ),
     PersonsSpan(
         id=2,
         start=387,
         stop=402,
         value='ДЭНИЭЛ ФРИД'
     )]
)

load_gareev

In [7]:
from corus import load_gareev

dir = 'data/rus-ner-news-corpus.iob/'
records = load_gareev(dir)
next(records)
Out[7]:
GareevRecord(
    tokens=[GareevToken(
         text='МОСКВА',
         tag='O'
     ),
     GareevToken(
         text=',',
         tag='O'
     ),
     GareevToken(
         text='21',
         tag='O'
     ),
     GareevToken(
         text='июня',
         tag='O'
     ),
     GareevToken(
         text='.',
         tag='O'
     ),
     GareevToken(
         text='/',
         tag='O'
     ),
     GareevToken(
         text='БИЗНЕС-ТАСС',
         tag='B-ORG'
     ),
     GareevToken(
         text='/',
         tag='O'
     ),
     GareevToken(
         text='.',
         tag='O'
     ),
     GareevToken(
         text='Группа',
         tag='O'
     ),
     GareevToken(
         text='НЛМК',
         tag='B-ORG'
     ),
     GareevToken(
         text='заняла',
         tag='O'
     ),
     GareevToken(
         text='второе',
         tag='O'
     ),
     GareevToken(
         text='место',
         tag='O'
     ),
     GareevToken(
         text='в',
         tag='O'
     ),
     GareevToken(
         text='рейтинге',
         tag='O'
     ),
     GareevToken(
         text='35',
         tag='O'
     ),
     GareevToken(
         text='наиболее',
         tag='O'
     ),
     GareevToken(
         text='конкурентоспособных',
         tag='O'
     ),
     GareevToken(
         text='сталелитейных',
         tag='O'
     ),
     GareevToken(
         text='компаний',
         tag='O'
     ),
     GareevToken(
         text='мира',
         tag='O'
     ),
     GareevToken(
         text='.',
         tag='O'
     ),
     GareevToken(
         text='Рейтинг',
         tag='O'
     ),
     GareevToken(
         text='составлялся',
         tag='O'
     ),
     GareevToken(
         text='World',
         tag='B-ORG'
     ),
     GareevToken(
         text='Steel',
         tag='I-ORG'
     ),
     GareevToken(
         text='Dynamics',
         tag='I-ORG'
     ),
     GareevToken(
         text=',',
         tag='O'
     ),
     GareevToken(
         text='ведущей',
         tag='O'
     ),
     GareevToken(
         text='международной',
         tag='O'
     ),
     GareevToken(
         text='исследовательской',
         tag='O'
     ),
     GareevToken(
         text='компанией',
         tag='O'
     ),
     GareevToken(
         text=',',
         tag='O'
     ),
     GareevToken(
         text='на',
         tag='O'
     ),
     GareevToken(
         text='основе',
         tag='O'
     ),
     GareevToken(
         text='оценки',
         tag='O'
     ),
     GareevToken(
         text='23',
         tag='O'
     )]
)

load_wikiner

In [8]:
from corus import load_wikiner 

path = 'data/aij-wikiner-ru-wp3.bz2'
records = load_wikiner(path)
next(records)
Out[8]:
WikinerMarkup(
    tokens=[WikinerToken(
         text='На',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='севере',
         pos='S',
         tag='O'
     ),
     WikinerToken(
         text='граничит',
         pos='V',
         tag='O'
     ),
     WikinerToken(
         text='с',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='Латвией',
         pos='S',
         tag='I-LOC'
     ),
     WikinerToken(
         text=',',
         pos='PUNCT',
         tag='O'
     ),
     WikinerToken(
         text='на',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='востоке',
         pos='S',
         tag='O'
     ),
     WikinerToken(
         text='--',
         pos='PUNCT',
         tag='O'
     ),
     WikinerToken(
         text='с',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='Белоруссией',
         pos='S',
         tag='I-LOC'
     ),
     WikinerToken(
         text=',',
         pos='PUNCT',
         tag='O'
     ),
     WikinerToken(
         text='на',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='юго-западе',
         pos='S',
         tag='O'
     ),
     WikinerToken(
         text='--',
         pos='PUNCT',
         tag='O'
     ),
     WikinerToken(
         text='c',
         pos='PR',
         tag='O'
     ),
     WikinerToken(
         text='Польшей',
         pos='S',
         tag='I-LOC'
     ),
     WikinerToken(
         text='и',
         pos='CONJ',
         tag='O'
     ),
     WikinerToken(
         text='Калининградской',
         pos='A',
         tag='I-LOC'
     ),
     WikinerToken(
         text='областью',
         pos='S',
         tag='I-LOC'
     ),
     WikinerToken(
         text='России',
         pos='S',
         tag='B-LOC'
     ),
     WikinerToken(
         text='.',
         pos='SENT',
         tag='O'
     )]
)

load_librusec

In [9]:
from corus import load_librusec

path = 'data/librusec_fb2.plain.gz'
records = load_librusec(path)
next(records)
Out[9]:
LibrusecRecord(
    id='309169',
    text='30\xa0апреля 1722 года выдалось ясным, погожим. Мелкие тучки на голубом небе казались заблудившимися барашками, которые выбились из сил и теперь застыли на месте как прикле\n       –\xa0Гарный кулеш,\xa0– отозвался еще один казак, Иван Солонина.\xa0– Смачный. Сальца бы в него побольше… Не хватает сальца. –\xa0И горилки б доброй… нашей, казацкой, чтоб изо рта огонь\n\n        –\xa0Что ты зудишь, как назойливый комар!\xa0– неожиданно взорвался Полуботок.\xa0– Поди прочь!'
)

load_taiga_arzamas

In [10]:
from corus import load_taiga_arzamas_metas, load_taiga_arzamas

path = 'data/taiga/Arzamas.tar.gz'
metas = load_taiga_arzamas_metas(path, offset=0, count=1)
records = load_taiga_arzamas(path, metas, offset=0, count=1)
next(records)
Out[10]:
TaigaRecord(
    id='101',
    meta=Meta(
        id='101',
        timestamp=datetime.datetime(2015, 8, 19, 0, 0),
        tags=['Дети'],
        themes=['История'],
        rubric=None,
        genre=None,
        topic=None,
        author=Author(
            name='Лиза Биргер',
            readers=None,
            texts=None,
            profession='Журналист, редактор',
            about='Директор департамента стикеров и\\xa0эмодзи Arzamas. Кандидат исторических наук. <nobr>В\\xa02011–2014 годах</nobr>\\xa0— главный редактор журнала Esquire.',
            url=None
        ),
        lang=None,
        title='Нефертити и секретная комната',
        url='http://arzamas.academy/mag/101-nefertiti'
    ),
    text='Работа под названием "Захоронение Нефертити?" опубликована на научном сайте academia.edu. Николас Ривз, египтолог Института Аризоны, изучил фотографии и 3D-сканы гробницы, сделанные в начале года компанией Factum Ave, и, как он считает, увидел следы двух дверей, ведущих в скрытые помещения, одно из которых, возможно, является сокровищницей, а другое  --  местом захоронения царицы (на что якобы указывают и фрески на стене).\nНефертити, как многие полагают, была матерью Тутанхамона, но как получилось, что мать тайно похоронили в гробнице сына? Или, точнее (как формулирует Ривз), сына  --  в гробнице матери? Это редкий пример научной работы, которая читается как детектив. Те, кому лень изучать ее целиком, могут прочесть краткий пересказ в The New Yorker  --  c историей вопроса, цитатами из дневника первооткрывателя гробницы Говарда Картера (которого тоже смущали разные странности в устройстве гробницы), интервью с самим Ривзом и пр.\n\n'
)

load_taiga_fontanka

In [11]:
from corus import load_taiga_fontanka_metas, load_taiga_fontanka

path = 'data/taiga/Fontanka.tar.gz'
metas = load_taiga_fontanka_metas(path, offset=0, count=1)
records = load_taiga_fontanka(path, metas, offset=0, count=1)
next(records)
Out[11]:
TaigaRecord(
    id='20070101001',
    meta=Meta(
        id='20070101001',
        timestamp=datetime.datetime(2007, 1, 1, 12, 4),
        tags=['Санкт-Петербург',
         'Петербург',
         'СПб',
         'фонтанка',
         'фонтанка.ру',
         'АЖУР',
         'Агентство Журналистских расследований',
         'СМИ',
         'новости',
         'новости Петербурга',
         'политика',
         'экономика',
         'криминал',
         'Фонтанка',
         'информация',
         'события',
         'город',
         'культура',
         'политика',
         'бизнес',
         'общество',
         'происшествия',
         'спорт',
         'свободное время',
         'авто',
         'недвижимость',
         'зарубежная недвижимость',
         'Охта центр',
         'финансы',
         'туризм',
         'работа',
         'особое мнение'],
        themes=None,
        rubric='Бизнес',
        genre=None,
        topic=None,
        author=None,
        lang=None,
        title='Россия и Белоруссия договорились о поставках газа',
        url='http://www.fontanka.ru/2007/01/01/001/'
    ),
    text='«Газпром» и Белоруссия подписали соглашение о поставках российского газа.\nКак передает ИА «Регнум», глава компании Алексей Миллер сообщил журналистам подробности соглашения.\n\nЦена российского газа для Белоруссии составит с 1 января 100 долларов США за 1000 кубометров и в дальнейшем будет рассчитываться по формуле цены, установленной в контракте. К 2011 году она вырастет до среднеевропейского уровня. \n\nСтоимость транспортировки российского газа по территории Белоруссии вырастет с нынешних 0,75 доллара США за 1000 кубометров на 100 километров до 1,45 доллара США и будет зафиксирована на все пять лет действия контракта. \n\n"Газпром" в ближайшие 4 года выкупит 50% акций "Белтрансгаза" за 2,5 миллиарда долларов в течение 4 лет. \n\nПоследние переговоры между сторонами прошли вчера в Москве.\n                '
)

load_taiga_interfax

In [12]:
from corus import load_taiga_interfax_metas, load_taiga_interfax

path = 'data/taiga/Interfax.tar.gz'
metas = load_taiga_interfax_metas(path, offset=0, count=1)
records = load_taiga_interfax(path, metas, offset=0, count=1)
next(records)
Out[12]:
TaigaRecord(
    id='business199005',
    meta=Meta(
        id='business199005',
        timestamp=datetime.datetime(2011, 7, 12, 18, 56),
        tags='Москва',
        themes=None,
        rubric=None,
        genre=None,
        topic=None,
        author=None,
        lang=None,
        title='Комитеты Совфеда поддерживают законопроект о расширении Москвы',
        url='http://www.interfax.ru/business/199005'
    ),
    text='\nПрофильные комитеты Совета Федерации рекомендуют палате одобрить законопроект об изменении границ между Москвой и Московской областью.\n\tКак отмечается в отзывах комитетов на данный законопроект, изменения границ между Москвой и Московской областью позволят "повысить инвестиционную привлекательность как Москвы, так и области, что крайне важно для экономического и градостроительного развития".\n\tСоглашение об изменении границ подписано на днях мэром Москвы Сергеем Собяниным и губернатором Московской области Борисом Громовым.\n\t"Изменение границы между Москвой и областью носит характер уточнения, цель которого придать юридический статус фактически сложившейся ситуации и границе в целом. Земельные участки Москве передаются общей площадью 723,46 гектара, а в область отойдут земли площадью 328,45 гектара", - сказал "Интерфаксу" глава комиссии Совета Федерации по жилищной политике и жилищно-коммунальному хозяйству Валерий Парфенов.\n\n\n\n'
)

load_taiga_kp

In [13]:
from corus import load_taiga_kp_metas, load_taiga_kp

path = 'data/taiga/KP.tar.gz'
metas = load_taiga_kp_metas(path, offset=0, count=1)
records = load_taiga_kp(path, metas, offset=0, count=1)
next(records)
Out[13]:
TaigaRecord(
    id='[email protected]',
    meta=Meta(
        id='[email protected]',
        timestamp=datetime.datetime(2016, 12, 13, 10, 50),
        tags=None,
        themes=None,
        rubric='Политика>Политика',
        genre=None,
        topic=None,
        author=Author(
            name='Дарья ИВАШКИНА',
            readers=None,
            texts=None,
            profession=None,
            about=None,
            url=None
        ),
        lang=None,
        title='Путин: Россия готова пройти свою часть пути в улучшении отношений с США',
        url='http://www.kp.ru/online/news/2598286/'
    ),
    text='\n\nПрезидент РФ Владимир Путин пообщался с японскими журналистами накануне своего визита в Страну восходящего солнца. В частности, он прокомментировал намерение избранного американского лидера Дональда Трампа подружиться с Москвой.\nПричем, по словам главы нашего государства, Россия готова пройти свою часть пути в улучшении отношений с США. «Избранный президент Соединенных Штатов выступает за нормализацию отношений, и мы не можем этого не поддерживать… и готовы пройти свою часть пути», - сказал Владимир Владимирович в интервью телеканалу Nippon TV.\nКстати, напомним, еще в ноябре Путин предложил Трампу восстановить отношения России и США.\nСАМЫЕ ВАЖНЫЕ ЦИТАТЫ ИЗ ИНТЕРВЬЮ\n\n'
)

load_taiga_lenta

In [14]:
from corus import load_taiga_lenta_metas, load_taiga_lenta

path = 'data/taiga/Lenta.tar.gz'
metas = load_taiga_lenta_metas(path, offset=0, count=1)
records = load_taiga_lenta(path, metas, offset=0, count=1)
next(records)
Out[14]:
TaigaRecord(
    id='20091231boeviks',
    meta=Meta(
        id='20091231boeviks',
        timestamp=datetime.datetime(2010, 1, 1, 2, 43),
        tags=None,
        themes=None,
        rubric='Россия',
        genre=None,
        topic=None,
        author=None,
        lang=None,
        title='В Дагестане уничтожили лидера боевиков &quot;Альбаро&quot;',
        url='https://lenta.ru/news/2009/12/31/boeviks/'
    ),
    text='\nСотрудники милиции вечером 31 декабря уничтожили в Хасавюрте четверых боевиков. Об этом сообщает РИА Новости со ссылкой на представителей МВД Дагестана. Один из ликвидированных членов незаконного бандформирования - глава боевиков по имени Умалат Магомедов, известный также под кличкой "Альбаро".Примерно в 22:00 милиционеры попытались остановить на Грозненской улице автомобиль "Жигули" для проверки. Находившиеся в машине люди начали стрелять в сотрудников правоохранительных органов и были уничтожены ответным огнем. О жертвах среди милиционеров не сообщается.На месте происшествия работают оперативники. Личности остальных боевиков устанавливаются.В начале декабря представители республиканского МВД заявили, что на территории Дагестана действуют шесть группировок боевиков: махачкалинская, хасавюртовско-кизилюртовская, губденская, гимринская, балаханинская и южнодагестанская. Численность каждой из них, по данным милиционеров, составляет от 10 до 40 человек.\n'
)

load_taiga_magazines

In [15]:
from corus import load_taiga_magazines_metas, load_taiga_magazines

path = 'data/taiga/Magazines.tar.gz'
metas = load_taiga_magazines_metas(path, offset=0, count=1)
records = load_taiga_magazines(path, metas, offset=0, count=1)
next(records)
Out[15]:
TaigaRecord(
    id='corpus_druzhba_103870',
    meta=None,
    text='\n\n\n\n\n\n\n\nМиллер Лариса Емельяновна — поэт, прозаик, критик и эссеист\n\n <!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal &#9;{mso-style-parent:""; &#9;margin:0cm; &#9;margin-bottom:.0001pt; &#9;mso-pagination:widow-orphan; &#9;font-size:12.0pt; &#9;font-family:"Times New Roman"; &#9;mso-fareast-font-family:"Times New Roman";} p &#9;{font-size:12.0pt; &#9;font-family:"Times New Roman"; &#9;mso-fareast-font-family:"Times New Roman";} span.SpellE &#9;{mso-style-name:""; &#9;mso-spl-e:yes;} span.GramE &#9;{mso-style-name:""; &#9;mso-gram-e:yes;} @page Section1 &#9;{size:595.3pt 841.9pt; &#9;margin:2.0cm 42.5pt 2.0cm 3.0cm; &#9;mso-header-margin:35.4pt; &#9;mso-footer-margin:35.4pt; &#9;mso-paper-source:0;} div.Section1 &#9;{page:Section1;} --> \n\n\n\n\n\nМиллер Лариса Емельяновна — поэт, прозаик, критик и эссеист. Окончила Институт иностранных языков. Автор многих книг стихов.  Живет в Москве.\n \n* * *\nВсё время забываю вас спросить —  Меня не слишком трудно выносить? Моих стихов немыслимую груду, Мою готовность к празднику и чуду, Стремленье тайну видеть здесь и там И следовать за нею по пятам, Её рифмуя днями и ночами Из года в год с тенями и лучами? Не отвечайте. Вижу по глазам: Мои стихи вам на душу бальзам. Не затопить бы только вас бальзамом, Потоком вещих слов о самом-самом.\n \n \n* * *\nДавай отложим всё, что можно отложить, И даже, что нельзя, давай отложим тоже. Сегодня вся земля — одно большое ложе, Застеленное так, чтоб нас заворожить. На то и снегопад, чтоб было мягко спать, На то и снегопад, чтоб мы на чистом, белом Забыли обо всём, и неотложным делом Считали дивный шанс в перинах утопать.\n \n \n* * * \nА хорошо бы жить в траве Или в бездонной синеве, Иль в речке светлой тихоструйной, Но толку что, коль в дикой, буйной Стране, не помнящей родни, Навек прописаны они.\n \n \n* * *\n                         Вермееру\nА можно обходиться малым: Одним мостом, одним каналом, Одной рекой, одним окном. Увидеть можно и в одном Окне весь мир, хотя дорожка Всего одна видна в окошко. Но и на ней, но и на ней Танцует множество теней, Теней, лучей, небесных пятен, Внушая: мир невероятен.\n \n \n* * *\nВсё время время отнимают —  Беда, отчаянье одно. Неужто же не понимают, Что людям дорого оно, Что надо изменить порядки — Чтоб никаких календарей,  Что наступать нельзя на пятки И приговаривать: «Скорей!», А надо складывать в копилку Любой прожитый день и час Иль рисовать их под копирку, Чтоб был неистощим запас.\n \n \n* * *\nМы все матрёшки, все с секретом, До срока спрятанным внутри. Ну а точней, мы все с приветом. Что с виду в норме — не смотри. И вообще гляди-ка мимо Своих любимых чад, Господь. Ведь чадо, что Тобой любимо, Такую может чушь молоть, Такое учудить готово Над ближним и самим собой, Что непонятно как Ты снова Нам полог даришь голубой, Его позолотив с востока, Чтоб нам оттенки показать, Вместо того, чтоб нас жестоко И справедливо наказать.\n Мы все матрёшки, все с секретом, Что в нас живёт зимой и летом, И этим интересны мы Как летом, так и средь зимы. Непредсказуемы, опасны, А временами так прекрасны, Что в пору нам всё-всё простить И чудом света окрестить.\n \n \n* * *\nНу что добавить в эту бочку? Как что? Конечно, каплю мёда: Стихов удавшуюся строчку, Слова: «Чудесная погода!».\n Ну что добавить в ад кромешный, Который без конца и края? Как что? Смешной глазок скворешни, Улыбку, то бишь каплю рая.\n \n\n'
)

load_taiga_nplus1

In [16]:
from corus import load_taiga_nplus1_metas, load_taiga_nplus1

path = 'data/taiga/NPlus1.tar.gz'
metas = load_taiga_nplus1_metas(path, offset=0, count=1)
records = load_taiga_nplus1(path, metas, offset=0, count=1)
next(records)
Out[16]:
TaigaRecord(
    id='20160915autonomous',
    meta=Meta(
        id='20160915autonomous',
        timestamp=datetime.datetime(2016, 9, 15, 16, 25),
        tags=None,
        themes=None,
        rubric='Оружие',
        genre=None,
        topic=None,
        author=Author(
            name='Василий Сычев',
            readers=None,
            texts=None,
            profession=None,
            about=None,
            url=None
        ),
        lang=None,
        title='Американцы отказались от автономных боевых роботов',
        url='https://nplus1.ru/news/2016/09/15/autonomous'
    ),
    text='\nВооруженные силы США «никогда не будут использовать по-настоящему автономные боевые машины». Об этом, как сообщает Breaking Defense, заявил министр обороны страны Эштон Картер. По его словам, полная автономность допустима только для систем кибербезопасности, отвечающих за сканирование компьютерных сетей и автоматически предотвращающих кибератаки. Во всех остальных случаях применение вооружения роботами возможно только по команде человека.Ранее Научный совет министерства обороны США объявил, что разработка автономных систем необходима, потому что они позволят в экстренной ситуации быстро принять контрмеры. В совете не уточнили, следует ли сохранить управление вооружением автономных роботов за человеком, но отметили, то каждая самостоятельная машина должна быть легко проверяемой. Это означает, что в памяти машины должна записываться вся информация, объясняющая то или иное совершенное роботом действие.При этом заместитель министра обороны США по закупкам вооружений Фрэнк Кендалл утверждал, что отказ от разработки и применения полностью автономных боевых систем представляет угрозу национальной безопасности и делает страну уязвимой «перед менее совестливыми противниками». Заявление Картера стало ответом на призывы начать разработку полностью автономных боевых систем. По его словам, военным следует предпочесть взаимодействие солдат и боевых роботов, причем ведущая роль должна быть у людей.В октябре прошлого года профессор британского Шеффилдского университета и сооснователь Международного комитета по контролю за роботизированными вооружениями Ноэл Шарки обратился к руководству Организации объединенных наций с просьбой как можно скорее принять поправки к международным правилам ведения войны, которые бы ввели запрет на использование в боевых действиях полностью автономных вооруженных роботов.По мнению правозащитника, промедление с принятием запрета на автономных роботов может привести к непоправимым последствиям, когда использование таких боевых систем в войнах будет обычной практикой. В частности, Великобритания и США уже сегодня настаивают на том, чтобы возможный запрет распространялся только на перспективные технологии, а не на существующие системы. Если это не учитывать, то под запрет могут попасть зенитный артиллерийский комплекс Phalanx и зенитная противоракетная система «Железный купол».В конце июля 2015 года организация Future of Life Institute опубликовала открытое письмо, в котором назвала полностью автономные системы вооружения опасными для человечества и потребовала запретить их разработку. Письмо подписали множество человек, в том числе основатель частной космической компании SpaceX Илон Маск, астрофизик Стивен Хокинг, основатель Apple Стив Возняк и философ Ноам Хомский. Подписанты полагают, что автономное оружие неизбежно приведет к новой гонке вооружений.Многие правозащитники утверждают, что разработка автономных беспилотников нарушает основные положения Женевских конвенций о защите жертв международных вооруженных конфликтов. В частности, нарушается пункт о том, что на каждом из этапов разработки новые вооружения должны проходить проверку и оценку на опасность для гражданского населения. Кроме того, автономные роботы нарушают требования Декларации Мартенса, представленной в начале 1900-х годов и лежащей в основе Конвенции о законах и обычаях сухопутной войны.В разных странах мира сегодня уже разработаны несколько автономных боевых систем, которые могут применять вооружение самостоятельно, без команды человека. Однако в таком режиме они еще ни разу не использовались. Например, российские зенитные ракетные комплексы С-400 могут самостоятельно обнаруживать воздушные цели, брать их на сопровождение и обстреливать. Южнокорейские пограничные патрульные роботы SGR-1 могут обнаруживать нарушителей границы и открывать по ним пулеметный огонь.Василий Сычёв\n'
)

load_taiga_subtitles

In [17]:
from corus import load_taiga_subtitles_metas, load_taiga_subtitles

path = 'data/taiga/Subtitles.tar.gz'
metas = load_taiga_subtitles_metas(path, offset=0, count=1)
records = load_taiga_subtitles(path, metas, offset=0, count=1)
next(records)
Out[17]:
TaigaRecord(
    id='10 Things I Hate About You - 1x01 - Pilot.HDTV.XII.en',
    meta=None,
    text='\ufeff1\t00:00:07,930\t00:00:09,246\t- Привет, пап. - Доброе утро, девочки.\n2\t00:00:09,247\t00:00:11,474\tЖаль, меня не было этим утром, чтобы приготовить вам блинчики, но...\n3\t00:00:11,475\t00:00:14,328\t... никак не угадаешь, когда малыш надумает родиться.\n4\t00:00:14,662\t00:00:16,702\tПап, мы уже знаем, откуда дети берутся.\n5\t00:00:17,136\t00:00:18,963\tА знаете ли вы, как всё это получается?\n6\t00:00:19,681\t00:00:21,880\t- Поверьте мне, что нет. - Пап!\n7\t00:00:22,078\t00:00:25,539\tЛадно, сегодня ваш первый день в школе  и поэтому запомните одну важную вещь:\n8\t00:00:25,540\t00:00:27,680\t- Не забеременейте! - Пап!\n9\t00:00:27,835\t00:00:28,713\t- Пап!\n10\t00:00:29,237\t00:00:32,396\tИ я напоминаю. Парни хотят, чтобы в вашем  животе оказался ребёнок. Тебе ясно, Бьянка?\n11\t00:00:32,610\t00:00:36,437\tНо они не сделают этого, потому что ты запретил мне с ними встречаться, пока Кэт не начнет.\n12\t00:00:36,438\t00:00:39,881\tЭти правила, я сформулировал, потому что  вы, девочки, очень важны для меня.\n'
)

load_taiga_social

In [18]:
from corus import load_taiga_social

path = 'data/taiga/social.tar.gz'
records = load_taiga_social(path, offset=0, count=4)
list(records)
Out[18]:
[TaigaSocialRecord(
     id='7_5756d98d5dd2dc3dac1635f4',
     network='fb',
     text='Я,все таки,думаю,что этот дигенерат бросил тень не на Приднестровье,а на Жирика.'
 ),
 TaigaSocialRecord(
     id='7_5756d9c25dd2dc3dac164c79',
     network='fb',
     text='===========================\n\nЛадно, гулять , так гулять. \nЧерт с вами. Покажу вам весь пейзаж...\n\nУСИ МОИ СЮСИПУСИЧКИ! \n\n- Мы очень надеемся, что нам с Вашингтоном удастся добиться результата дипломатическим путем. А Керри все глубже и глубже начинал при этом погружать свой член в его полость рта: \n\nКонстант 3'
 ),
 TaigaSocialRecord(
     id='7_5756da2e5dd2dc3dac165d00',
     network='fb',
     text='ну с какого перепугу КПРФ - оппозиционная?  Может и ЛДПР - оппозиция?'
 ),
 TaigaSocialRecord(
     id=None,
     network='lj',
     text='че тут обсуждать-то? не много ли чести для всякой хуйни?)'
 ),
 TaigaSocialRecord(
     id=None,
     network='lj',
     text='Люблю НТВ...)'
 ),
 TaigaSocialRecord(
     id=None,
     network='lj',
     text='Главное что бы НТВ не полюбило тебя )'
 ),
 TaigaSocialRecord(
     id=None,
     network='lj',
     text='ага,и я, там фриков показывают))'
 ),
 TaigaSocialRecord(
     id='0_5756d98c5dd2dc3dac163478',
     network='twitter',
     text='Число россиян, вынужденных отказаться от летнего отдыха, достигло рекорда за 16 лет  Ну что, голосуем и дальше за ЕР?'
 ),
 TaigaSocialRecord(
     id='0_5756d98c5dd2dc3dac16347b',
     network='twitter',
     text='«Единая Россия» может рассчитывать более чем на 50 процентов голосов избирателей на выборах в Государственную … '
 ),
 TaigaSocialRecord(
     id='0_5756d9905dd2dc3dac16394f',
     network='twitter',
     text='@mudakoff: "Драку с мотоциклистом в Подмосковье устроил участник праймериз Единой России.\n\nРазговор с…" №1 в  '
 ),
 TaigaSocialRecord(
     id='6_5756d9a15dd2dc3dac164449',
     network='vk',
     text='Окститесь православные.И Гундяев(в миру Михайлов) и Зюганов служат одному и тому же божку--Путину.Его вывлизываемый анус для них и Христос и Карл Маркс в одном флаконе'
 ),
 TaigaSocialRecord(
     id='6_5756d9a15dd2dc3dac16444e',
     network='vk',
     text='[id272464553|Astina], "Депутаты от фракции КПРФ внесли в Госдуму законопроект о переносе Дня России на 28 июля — День крещения Руси, сообщает ТАСС."'
 )]

load_taiga_proza

In [19]:
from corus import load_taiga_proza_metas, load_taiga_proza

path = 'data/taiga/proza_ru.zip'
metas = load_taiga_proza_metas(path, offset=0, count=1)
records = load_taiga_proza(path, metas, offset=0, count=1)
next(records)
Out[19]:
TaigaRecord(
    id='20151231005',
    meta=Meta(
        id='20151231005',
        timestamp=datetime.datetime(2015, 12, 31, 23, 40),
        tags=None,
        themes=None,
        rubric=None,
        genre='Малые формы',
        topic='миниатюры',
        author=Author(
            name='Кальб',
            readers=7973,
            texts=92681,
            profession=None,
            about=None,
            url='http://www.proza.ru/avtor/sadshoot'
        ),
        lang=None,
        title='С Новым Годом!',
        url='http://www.proza.ru/2015/12/31/1875'
    ),
    text='...Искры улыбок...\n... затмят фейерверки..\n..Смех и веселье...\n... прокатят по миру..\n..Праздник разносят... многие клерки..\n..Дух мандаринов... подарки...зефирки....\n\nС Новым годом всех Вас!\n\n..с уважением к вам...Я...'
)

load_taiga_stihi

In [20]:
from corus import load_taiga_stihi_metas, load_taiga_stihi

path = 'data/taiga/stihi_ru.zip'
metas = load_taiga_stihi_metas(path, offset=0, count=1)
records = load_taiga_stihi(path, metas, offset=0, count=1)
next(records)
Out[20]:
TaigaRecord(
    id='20151231001',
    meta=Meta(
        id='20151231001',
        timestamp=datetime.datetime(2015, 12, 31, 23, 56),
        tags=None,
        themes=None,
        rubric=None,
        genre='лирика',
        topic='любовная лирика',
        author=Author(
            name='Макс Майер-Младший',
            readers=26,
            texts=2085,
            profession=None,
            about=None,
            url='http://www.stihi.ru/avtor/380979994453'
        ),
        lang=None,
        title='Ти знов являЕшся менi у снi',
        url='http://www.stihi.ru/2015/12/31/9302'
    ),
    text='Ти знов являшся мен у сн\nПриходиш, мов сюди лише твоя дорога\nТак тож чому радю я тоб!\nНапевно, це кохання  вд Бога!\n\nУ снах збуваються вс потайн бажання\nЦе нби мряти, та мр обернути в чари\nКолискою приспати ус сво страждання,\nПд нжний, мелодйний спв старенько гтари.\n\nА потм! Потм все немов у казц\nЦей дивовижний свт - не хочу прокидатись\nМагчний свт  в ньому  перлина щастя,\nВ цей свт я хочу з головою уврватись.\n\nЧому ж ти знов являшся мен у сн!\nНапевно, це кохання вд самого Бога,\nТак тож скорше знов втопитися в птьм, \nЩоб я заснути змг найшвидше якомога. '
)

load_buriy_news

In [21]:
from corus import load_buriy_news

paths = [
    'data/buriy/news-articles-2014.tar.bz2',
    'data/buriy/news-articles-2015-part1.tar.bz2',
    'data/buriy/news-articles-2015-part2.tar.bz2'
]
records = (
    record
    for path in paths
    for record in load_buriy_news(path)
)
next(records)
Out[21]:
BuriyRecord(
    timestamp=datetime.datetime(2014, 8, 22, 15, 15),
    url='http://www.ntv.ru/novosti/1200239/',
    edition=None,
    topics='novosti',
    title='Россияне на юношеских Олимпийских играх в пятницу завоевали восемь медалей',
    text='В пятницу российские спортсмены на\n'
)

load_buriy_webhose

In [22]:
from corus import load_buriy_webhose

path = 'data/buriy/webhose-2016.tar.bz2'
records = load_buriy_webhose(path)
next(records)
Out[22]:
BuriyRecord(
    timestamp=datetime.datetime(2016, 10, 1, 13, 17),
    url='https://docs.joomla.org/index.php?title=Portal:Upgrading_Versions/ru&diff=335894&oldid=334992',
    edition='docs',
    topics=None,
    title='Portal:Upgrading Versions/ru',
    text='− Прежде чем начать, очень важно, чтобы Вы знали [[S:MyLanguage/How to check the Joomla version?|на какой версии [системы] Joomla! работает Ваш вебсайт]]. Это особенно важно если Вы переходите на главную версию. Если это уже запутало Вас и Вы не знаете, что такое "главная версия", то познакомтесь с [[S:MyLanguage/release and support cycle| с циклом выпусков и поддержки]] версий Joomla. Joomla! выпускается согласно следующего наименования [ее версий]: \'\'\'[номер главной версии].[номер малой версии].[номер версии обслуживания]\'\'\'. Например, в версии 3.6.2 тройка обозначает [номер] главной версии, шестерка - [номер] малой версии и двойка - [номер] версии обслуживания. + Прежде чем начать, очень важно, чтобы Вы знали [[S:MyLanguage/How to check the Joomla version?|на какой версии [системы] Joomla! работает Ваш вебсайт]]. Это особенно важно если Вы переходите на главную версию. Если это уже запутало Вас и Вы не знаете, что такое "главная версия", то познакомтесь с [[S:MyLanguage/release and support cycle| циклом выпусков и поддержки]] версий Joomla. Joomla! выпускается согласно следующего наименования [ее версий]: \'\'\'[номер главной версии].[номер малой версии].[номер версии обслуживания]\'\'\'. Например, в версии 3.6.2 тройка обозначает [номер] главной версии, шестерка - [номер] малой версии и двойка - [номер] версии обслуживания. Начиная с версии 1.7 [функционал] обновления [версий] Joomla и перехода на новую семью версий встроен в [[S:MyLanguage/Administrator (Application)|административный]] интерфейс. Термины "обновление версии" и "переход на новую семью версий", возможно, используются как взаимозаменяемые. Начиная с Joomla 1.7 обновление версии и переход на новую семью версий во многом схожи, но Вам необходимо уделять внимание мелочам. Для того, чтобы помочь [Вам] лучше определить [разницу между этими двумя системными операциями], рекомендуется использовать термин "миграция" при переходе с [одной] главная.малая (например, 2.5) [семьи версий] на другую главная.малая (например, 3.1) семью версий. Начиная с версии 1.7 [функционал] обновления [версий] Joomla и перехода на новую семью версий встроен в [[S:MyLanguage/Administrator (Application)|административный]] интерфейс. Термины "обновление версии" и "переход на новую семью версий", возможно, используются как взаимозаменяемые. Начиная с Joomla 1.7 обновление версии и переход на новую семью версий во многом схожи, но Вам необходимо уделять внимание мелочам. Для того, чтобы помочь [Вам] лучше определить [разницу между этими двумя системными операциями], рекомендуется использовать термин "миграция" при переходе с [одной] главная.малая (например, 2.5) [семьи версий] на другую главная.малая (например, 3.1) семью версий. Line 14:'
)

load_mokoron

In [23]:
from corus import load_mokoron

path = 'data/mokoron/db.sql'
records = load_mokoron(path)
list(records)
Out[23]:
[MokoronRecord(
     id=408906695721877504,
     timestamp=datetime.datetime(2013, 12, 6, 10, 32, 8),
     user='Va5ilina',
     text='Пропавшая в Хабаровске школьница почти сутки провела в яме у коллектор',
     sentiment=2,
     replies=0,
     retweets=0,
     favourites=0,
     posts=183,
     followers=95,
     friends=158,
     lists=0
 ),
 MokoronRecord(
     id=408906695700520960,
     timestamp=datetime.datetime(2013, 12, 6, 10, 32, 8),
     user='i_wont_judge_ya',
     text='ЛЕНТА, Я СЕГОДНЯ ПОЛГОДА ДИРЕКШИОНЕЕЕЕР! С:\\nХОТЯ ВСЕ РАВНО НИКТО НЕ ПОЗДРАВИТ ЛОЛ',
     sentiment=2,
     replies=0,
     retweets=0,
     favourites=0,
     posts=19809,
     followers=804,
     friends=257,
     lists=11
 ),
 MokoronRecord(
     id=410005806927847424,
     timestamp=datetime.datetime(2013, 12, 9, 11, 19, 36),
     user='Victorika_nya',
     text='Открытые аудиозаписи нужны, чтобы прийти в гости и включить их ^.^',
     sentiment=2,
     replies=0,
     retweets=0,
     favourites=0,
     posts=426,
     followers=12,
     friends=20,
     lists=0
 ),
 MokoronRecord(
     id=408906695663161344,
     timestamp=datetime.datetime(2013, 12, 6, 10, 32, 8),
     user='victorypanasenk',
     text='Царствие Божие внутрь вас есть.',
     sentiment=2,
     replies=0,
     retweets=0,
     favourites=0,
     posts=1080,
     followers=986,
     friends=412,
     lists=0
 )]

load_wiki

In [24]:
from corus import load_wiki

path = 'data/ruwiki-latest-pages-articles.xml.bz2'
records = load_wiki(path)
list(records)
Out[24]:
[WikiRecord(
     id='7',
     url='?curid=7',
     title='Литва',
     text='Литва\n\nЛитва́ (), официальное название\xa0— Лито́вская Респу́блика ()\xa0— государство, расположенное в северо-восточной части Европы. Столица страны\xa0— Вильнюс.Площадь\xa0— км². Протяжённость с севера на юг\xa0— 280\xa0км, а с запада на восток\xa0— 370 км. Население составляет человек\xa0— по этим показателям является крупнейшим прибалтийским государством. Имеет выход к Балтийскому морю, расположена на его восточном побережье. Береговая линия составляет всего 99 км (наименьший показатель среди прибалтийских государств). На севере граничит с Латвией, на юго-востоке\xa0— с Белоруссией, на юго-западе\xa0— с Польшей и Калининградской областью России.Член ООН с 1991 года, ЕС и НАТО\xa0— с 2004 года, ОЭСР\xa0— с мая 2018 года. Входит в Шенгенскую зону и Еврозону.== Географические данные ==Поверхность\xa0— равнинная со следами древнего оледенения. Поля и луга занимают 57\xa0% территории, леса и кустарники\xa0— 30\xa0%, болота\xa0— 6\xa0%, внутренние воды\xa0— 1\xa0%.Высшая точка\xa0— 293,84 м над уровнем моря\xa0— холм Аукштояс () (или Аукштасис калнас ()) в юго-восточной части страны, в 23,5\xa0км от Вильнюса.Крупнейшие реки\xa0— Неман () и Вилия ().Более 3 тыс. озёр (1,5\xa0% территории): крупнейшее из них\xa0— Друкшяй (, ) на границе Латвии, Литвы и Белоруссии (площадь 44,8 км²), самое глубокое\xa0— Таурагнас (, 61 м), самое длинное\xa0— Асвея (, длина 30 км) у местечка Дубингяй.Климат переходный от морского к континентальному. Средняя температура зимой минус 5 °С, летом +17 °С. Выпадает 748\xa0мм осадков в год.Полезные ископаемые: торф, минеральные материалы, строительные материалы.== История ===== Древнейшая история ===Территория современной Литвы была заселена людьми с конца X—IX тысячелетия до\xa0н.\xa0э. Жители занимались охотой и рыболовством, использовали лук и стрелы с кремнёвыми наконечниками, скребки для обработки кожи, удочки и сети. В конце неолита (III—II тыс. до\xa0н.\xa0э.) на территорию современной Литвы проникли индоевропейские племена. Они занимались земледелием и скотоводством, при этом охота и рыболовство оставались основными занятиями местных жителей вплоть до широкого распространения железных орудий труда. Индоевропейцы, заселившие земли между устьями Вислы и Западной Двины, выделились в отдельную группу, названную учёными балтами.Традиционно считается, что этническая основа Литвы сформирована носителями археологочической культуры восточнолитовских курганов, сформировавшейся в V веке н.\xa0э. на территории современных Восточной Литвы и Северо-Западной Белоруссии. Около VII века н.\xa0э. литовский язык отделился от латышского.=== Зарождение государства ===Становление государственности на территории современной Литвы относят к XIII веку, при этом само название «Литва» впервые упомянуто в Кведлинбургских анналах под 1009 годом в сообщении об убийстве язычниками миссионера Бруно на границе Руси и Литвы. По наиболее распространённой версии, топоним возник от названия небольшой реки Летавка, притока Няриса. Согласно более современной гипотезе, название страны могло произойти от этнонима «леты» или «лейти», которым жители окрестных земель называли дружинников литовских князей.В начале XIII века в земли балтов-язычников с запада началось вторжение немецких рыцарей-крестоносцев. Они покорили Пруссию и Ливонию. В это же время с юга началась экспансия Галицко-Волынского княжества. К середине XIII века многие литовские земли были объединены под властью князя Миндовга, принявшего в 1251 году католическое крещение и коронованного в 1253 году. Через несколько лет Миндовг отрёкся от христианства и до начала XIV века литовские земли оставались языческими. Несмотря на то, что уже в 1263 году Миндовг был свергнут, его правление положило начало более чем пятисотлетнему существованию Великого княжества Литовского.=== Великое княжество Литовское ===В XIV\xa0— начале XV веках территория Великого княжества Литовского стремительно росла, в основном за счёт присоединения земель Западной Руси. Включение в состав государства славянских земель, многократно превышающих по площади и количеству населения собственно литовские земли, привело к перениманию литовскими князьями, получившими во владение русские земли, православной культуры и западнорусского языка. Со временем западнорусский язык стал официальным языком канцелярии великих князей. Собственно литовский язык до XVI века оставался бесписьменным, хотя и продолжал использоваться на этнически литовских землях.В 1385 году великий князь литовский Ягайло заключил Кревскую унию с Королевством Польским. По условиям унии, Ягайло обязался присоединить Великое княжество Литовское к Королевству Польскому и крестить литовские земли по католическому обряду, а сам становился королём Польши и сохранял титул великого князя литовского. Однако вскоре он вынужден был уступить власть в Великом княжестве Литовском своему двоюродному брату Витовту. Витовт, хотя и признал себя вассалом Ягайло, проводил самостоятельную внешнюю политику и таким образом полное объединение государств не состоялось. В годы правления Витовта (1392—1430) Великое княжество Литовское достигло наивысшего расцвета, а его территория составила примерно 930 тысяч км².В этот же период литовские князья из династии Гедиминовичей вели тяжёлую борьбу с Тевтонским орденом, который был разбит в 1410 году в Грюнвальдской битве объединёнными войсками Великого княжества Литовского и Королевства Польского. В 1422 году в состав Великого княжества Литовского окончательно вошла Жемайтия.Великий князь Казимир, одновременно бывший и королём польским, расширил влияние династии Ягеллонов\xa0— подчинил Пруссию, посадил своего сына на чешский и венгерский троны. В 1492—1526 годах существовала политическая система государств Ягеллонов, охватывавшая Польшу (с вассалами Пруссией и Молдавским княжеством), Великое княжество Литовское, Чехию и Венгрию.Правовой основой государства являлся стату́т, изданный в трёх редакциях (1529, 1566, 1588), отражающих социально-экономические и политические изменения. Статут регламентировал вопросы гражданского, уголовного и процессуального права. На территории Великого княжества третья редакция статута действовала до 1840 года.=== В Речи Посполитой ===В 1569 году в Люблине была заключена новая уния с Польшей, в результате которой образована Речь Посполитая. Согласно акту Люблинской унии Литвой и Польшей правил совместно избираемый король, а государственные дела решались в общем Сейме. Однако правовые системы, армия и чиновники оставались раздельными.В XVI—XVIII веках в Литве по польскому образцу сложилась политическая система, известная как шляхетская демократия. Она характеризовалась наличием широких прав шляхты (дворянства) в управлении государством. Одновременно с этим происходила полонизация шляхты, выраженная в перенимании правящим сословием Великого княжества Литовского польского языка, культуры и идентичности. На непривилегированные сословия полонизация столь значительного влияния не оказала.=== В составе Российской империи ===В XVIII веке в результате опустошительных войн и всеобъемлющего государственного кризиса Речь Посполитая пришла к упадку и попала под влияние Российской империи. В 1772, 1793 и 1795 годах состоялись разделы Речи Посполитой между Россией, Пруссией и Австрией. Почти вся территория бывшего Великого княжества Литовского была присоединена к Российской империи.В попытках восстановить государственность польско-литовское дворянство приняло сторону Наполеона в 1812 году, а также неоднократно поднимало восстания (1830—1831, 1863—1864), которые, однако, окончились поражением. В стремлении ликвидировать польское влияние в Литве российские власти предприняли широкую кампанию деполонизации и русификации. В 1864 году была запрещена литовская печать латиницей. Литовское население, особенно католическое духовенство, сопротивлялись русификации: кирилличные издания игнорировали, а книги, напечатанные латиницей, книгоноши нелегально ввозили из соседней Пруссии. В 1904 году запрет на литовскую латиницу был отменён.=== Во время Первой мировой войны ===Начавшаяся Первая мировая война быстро распространилась по территории Литвы, к концу 1915 года все этнически литовские земли контролировались Германией. Литовцы потеряли все политические права. Вначале даже запрещены Литовские периодические издания. Однако литовская интеллигенция попыталась воспользоваться геополитической ситуацией и начала искать возможности для восстановления независимости Литвы. 18-22 сентября 1917 года в Вильнюсе была проведена Литовская конференция, во время которой была избрана Литовская Тариба («Совет Литвы»). В ходе конференции было принято решение о необходимости создания независимого литовского государства в этнографических границах и со столицей в Вильнюсе. Председателем Совета был избран Антанас Сметона.11 декабря 1917 года было провозглашено восстановление Литовского государства. 23 марта 1918 года император Вильгельм II признал независимость Литвы. На основании акта о признании литовской государственности Тариба была преобразована в Государственный Совет Литвы.13 июля 1918 года Государственный Совет принял решение установить в Литве конституционную монархию и предложить вюртембергскому принцу Вильгельму фон Ураху корону. Впрочем, 2 ноября 1918 года это решение было отозвано. Были приняты основные положения Временной конституции Литвы. 11 ноября 1918 года Президиум Государственного Совета утвердил первое временное правительство Литвы из шести министров под руководством Аугустинаса Вольдемараса, тем самым дав начало созданию государственного аппарата Литвы.=== Литовская Республика ===После ухода основных немецких частей и начала боёв с большевистской Красной армией 16 декабря 1918 года была образована Литовская советская республика. 27 февраля 1919 года в Вильнюсе состоялось объединённое заседание ЦИКов Литвы и Белоруссии, где было провозглашено образование Литовско-Белорусской ССР (Литбел).В феврале-марте 1919 года войска литовской Тарибы, поддержанные немецкими гарнизонами, начали военные действия против Литбела, в апреле 1919 года к ним присоединилась польская армия. В результате территория Литбела была занята польскими частями. Для борьбы с Польшей Советской России требовался нейтралитет Литвы, для чего в 12 июля 1920 года в Москве был заключён советско-литовский договор. Литбел прекратил своё существование, Советская Россия признала независимость Литвы и передачу ей спорного Виленского края.После поражения Красной Армии под Варшавой и советского отступления польские части под командованием генерала Люциана Желиговского инсценировали мятеж и якобы самовольно заняли территорию Виленского края. 12 октября 1920 года было объявлено о создании на территории края государства Срединная Литва, однако уже в 1922 году оно вошло в состав Польской Республики в качестве воеводства. Литовские власти продолжали считать Вильнюс столицей Литвы, хотя фактически руководство осуществлялось из Каунаса.В 1919 году в Литве введена должность президента, первым президентом государства был избран Антанас Сметона. 5 мая 1920 года состоялось первое заседание демократически избранного Учредительного собрания. В 1921 году страна была принята в Лигу Наций. В 1922 году была принята постоянная Конституция. Приведены реформы в области земельных ресурсов, финансов и образования, введена литовская валюта (лит), открыт Литовский университет.Клайпедский край (Мемельланд), населённый в основном прусскими литовцами и немцами, по решению Лиги наций находился под временным управлением французской администрации. В 1923 году в результате восстания местных литовцев и при негласном участии литовской полиции Клайпедский край был присоединён к Литве на правах автономии. Французская администрация не предприняла никаких шагов для борьбы с восстанием, 16 февраля 1923 года страны Антанты признали присоединение Клайпедского края к Литве.В декабре 1926 года в Литве произошёл военный переворот, вернувший к власти лидера националистов Антанаса Сметону. Началась так называемая авторитарная фаза управления государством. В 1928 году была принята Конституция, расширяющая президентские полномочия. Оппозиционные партии были запрещены, цензура ужесточена, а права национальных меньшинств урезаны.17 марта 1938 года Польша предъявила Литве ультиматум с требованием признать Виленский край неотъемлемой частью польского государства. Год спустя, 20 марта 1939 года, Литва получила ультиматум Германии с требованием вернуть ей Клайпедский край. Оба ультиматума Литва была вынуждена принять.=== Вторая мировая война и присоединение к СССР ===Согласно секретному протоколу к заключённому в августе 1939 года пакту Молотова-Риббентропа, Литва была включена в сферу интересов Германии. 1 сентября Германия начала вторжение в Польшу, а 17 сентября СССР осуществил вторжение, по итогам которого присоединил восточные земли Польши, в том числе и Вильно.25 сентября СССР инициировал переговоры об отказе Германии от претензий на Литву в обмен на территории Варшавского и Люблинского воеводств Польши. 10 октября 1939 года в Москве был подписан «Договор о передаче Литовской республике города Вильно и Виленской области и о взаимопомощи между Советским Союзом и Литвой» сроком на 15 лет, предусматривавший ввод в Литву 20-тысячного контингента советских войск. 14—15 июля 1940 года, после принятия советского ультиматума и ввода дополнительного советского военного контингента, в Литве были проведены выборы в Народный сейм, к участию в которых был допущен лишь просоветский «Блок трудового народа». 21 июля Народный сейм провозгласил образование Литовской ССР, 3 августа 1940 года она была принята в состав СССР. В 1940 году, уже будучи в составе СССР, Литва получила часть территории Советской Белоруссии.22 июня 1941 года, после нападения Германии на СССР, последовали антисоветские выступления в Литве. В Каунасе было провозглашено Временное правительство Литвы, поддерживавшее тесные контакты с немцами. Однако после начала фактической немецкой оккупации это Временное правительство было распущено, а территория Литвы включена в рейхскомиссариат Остланд (генеральный округ Литва), в рамках которого ей была предоставлена некоторая автономия. Оккупационную администрацию возглавлял генерал Пятрас Кубилюнас.В 1944 году нацисты были изгнаны Красной Армией с территории Литовской ССР (см. Белорусская операция (1944)).=== Послевоенный период ===В 1944—1953 годах происходили столкновения между советским правительством и литовскими партизанами. Подавив партизанское сопротивление, советские власти столкнулись с ненасильственным сопротивлением местной националистической интеллигенции и католического духовенства.В годы перестройки движение за независимость Литвы значительно усилилось и находило всё больше поддержки со стороны местных властей. В 1989 году была организована акция «Балтийский путь». Жители Литвы, Латвии и Эстонии, выражая своё желание выйти из состава СССР, выстроили живую цепь длиной почти в 600\xa0км.=== Восстановление независимости ===11 марта 1990 года Верховный Совет объявил о восстановлении независимости Литвы. Литва стала первой советской республикой, объявившей о выходе из СССР.20 апреля 1990 года СССР ввёл экономическую блокаду, прекратив поставку нефти. Блокада продолжалась 74 дня, но литовские власти продолжили курс на независимость. Постепенно экономические отношения были восстановлены. Напряжённость вновь возникла в январе 1991 года, когда советские отдельные части армии, милиции и КГБ попытались совершить силовой захват власти. Мирное сопротивление литовского населения привело к поражению путча, потери гражданского населения составили 14 человек. Вскоре после этого, в феврале 1991 года Исландия стала первой страной, признавшей независимость Литвы.6 сентября 1991 года Государственный совет СССР признал независимость Литвы. 17 сентября того же года Литва была принята в Организацию Объединённых Наций.25 октября 1992 года граждане Литовской Республики проголосовали на референдуме за принятие Конституции Литовской Республики. 14 февраля 1993 года всеобщим голосованием Альгирдас Бразаускас был избран президентом страны. 31 августа того же года последние части Советской Армии покинули территорию Литвы.С 29 марта 2004 года Литва вошла в блок НАТО, а с 1 мая 2004 года стала полноправным членом Европейского Союза.== Административное деление ==Территория Литвы разделена на 10 уездов (). Уезды образуют территории самоуправлений () 9 городов и 43 районов, а также 8 вновь образованных самоуправлений. Самоуправления делятся на староства ().=== Города Литвы ===В Литве выделяются три типа населённых пунктов: города, местечки (городки) и деревни. Статус города предоставляет Сейм Литовской Республики. В 2004 году насчитывалось 106 городов.Крупнейшие города (население на 1 января 2013 года):: Вильнюс ()\xa0— 537 152 жителей.: Каунас ()\xa0— 306 888 жителей.: Клайпеда ()\xa0— 158 541 жителей.: Шяуляй ()\xa0— 106 470 жителей.: Паневежис ()\xa0— 97 343 жителей.: Алитус ("Alytus")\xa0— 57 281 жителей.== Население ==По данным Всемирного банка на 2013−2014 годы, Литва попала в список стран мира, исчезающих быстрее всего. Потерю популяции\xa0— 28.366 (1\xa0%) поощрила быстрая эмиграция жителей, увеличившаяся смертность, уменьшающаяся рождаемость. По разным данным, Литву с момента обретения независимости и вступления в ЕС в 2004 году покинуло около миллиона жителей. Большинство из них уехало на заработки в страны Западной Европы. По оценкам департамента статистики Литовской Республики, в начале сентября 2015 года в стране проживало человек. С 1992 происходит депопуляция страны, причиной которой стала как эмиграция, так и отрицательный естественный прирост.По данным всеобщей переписи 2011, литовцы составляют 84,16\xa0% населения страны, поляки\xa0— 6,58\xa0%, русские\xa0— 5,81\xa0%, белорусы\xa0— 1,19\xa0%, украинцы\xa0— 0,54\xa0%, евреи\xa0— 0,10\xa0%. По данным Всемирной организации здравоохранения (ВОЗ), Литва признана самой пьющей страной в Европе и в мире.В религиозном отношении 77,3\xa0% жителей Литвы\xa0— католики, 4,1\xa0%\xa0— православные, 6,1\xa0%\xa0— неверующие.=== Языковая ситуация ===Государственным языком Литвы является литовский язык, один из балтийских языков, родной для 84,1\xa0% населения Литвы (около 2,45\xa0млн человек).== Государственный строй ==Литва\xa0— парламентская республика, с характерными чертами президентской республики. Срок полномочий избираемого всенародно Президента\xa0— 5 лет. На данный момент президентом Литовской Республики является избранная в 2009 году и переизбранная в 2014 году Даля Грибаускайте.Парламент республики\xa0— однопалатный Сейм Литовской Республики с 141 местом. Из них 71 депутат избирается по мажоритарной системе в одномандатных округах и остальные 70\xa0— по пропорционально-списочной системе с барьером 5\xa0%. Срок депутатских полномочий\xa0— 4 года.== Правовая система ==Высшая судебная инстанция\xa0— Верховный Суд ("Aukščiausiasis Teismas"), суды апелляционной инстанции\xa0— апелляционные инстанции ("apeliacinis teismas"), суды первой инстанции\xa0— окружные суды ("Apygardos teismas"), низшее звено судебной системы\xa0— районные суды ("Apylinkės teismas").== Политическая жизнь ===== Партии ===В настоящее время (2016) в Литве зарегистрировано 38 (реально действуют\xa0— 23) политических партий.=== Внутренняя политика ===В июне 2008 года парламент Литвы принял закон, уравнивающий нацистскую и советскую символику и запрещающий её использование в публичных местах: она «"может восприниматься как пропаганда нацистских и коммунистических оккупационных режимов"». Запрещено «"демонстрирование флагов и гербов, знаков и униформ нацистской Германии, СССР, Литовской ССР, а также флагов, знамён, гербов, знаков, униформ, составными частями которых являются флаги, гербы нацистской Германии, СССР и Литовской ССР"». Запрещено использование «нацистской свастики, советского серпа и молота, советской пятиконечной красной звезды, а также исполнение гимнов нацистской Германии, СССР и Литовской ССР».=== Внешняя политика ===Литовские солдаты принимали участие в Иракской войне и до сих пор находятся в Афганистане в рамках операции НАТО.* "Об отношениях с Россией см. Литовско-российские отношения."* "Об отношениях с Белоруссией см. Белоруссия и Литва."* "Об отношениях с США см. Американо-литовские отношения."== Экономика ==Средняя начисленная зарплата (брутто) в Литве, за исключением индивидуальных предприятий, в третьем квартале 2016 года была 793,3 евро.Минимальная зарплата с июля 2016 года составляет 380 евро. С 1 января 2019 года минимальный размер оплаты труда составляет 555 евро (брутто) и 396 евро (нетто). По состоянию на 3 квартал 2018 год средний размер оплаты труда в Литве составляет 935 евро (брутто), и 728 евро (нетто). Индекс Кейтца (отношение МРОТ к средней зарплате) по состоянию на 3 квартал 2018 года составляет около 43%.Средняя начисленная зарплата (брутто) в Литве, за исключением индивидуальных предприятий, во втором квартале 2018 года была 1174 евро, после вычета налогов - 892 евро.Минимальный размер оплаты труда в Литве с 2018 года составляет 400 евро.Преимущества: успешно перешла к стабильной рыночной экономике. Низкая инфляция (1,2\xa0%). Национальная валюта\xa0— евро.Слабые стороны: Скудная сырьевая база. Растущий дефицит баланса услуг.В 2009 году антикризисная помощь Евросоюза стала крупнейшей статьёй дохода государственного бюджета Литвы за всю историю страны. Согласно прогнозу Министерства финансов Литвы финансовая помощь ЕС должна была составить 30,8\xa0% от всех доходов бюджета страны в 2009 году и в 2010 году должна была увеличиться ещё на несколько процентных пунктов.=== Промышленность ===== Транспорт ==; ЖелезнодорожныйЛитовские железные дороги, как и в других странах бывшего СССР, имеют широкую колею (1520\xa0мм против 1435\xa0мм в Западной Европе).6 февраля 2003 года начато регулярное движение поезда комбинированного транспорта «Викинг». <br>«Викинг»\xa0— совместный проект железных дорог Литвы, Украины и Беларуси, стивидорных компаний и портов Клайпеда, Черноморск и Одесса, соединяющий цепь морских контейнерных и контрейлерных линий Балтийского региона с аналогичной системой Чёрного, Средиземного и Каспийского морей.Строится литовский участок панъевропейской дороги Rail Baltica.; Авиационный* Вильнюсский международный аэропорт* Международный аэропорт Паланги* Каунасский международный аэропорт* Шяуляйский международный аэропорт; МорскойКлайпедский порт\xa0— крупнейший порт Литвы, связанный паромами с большинством важных городов побережья Балтийского моря.== Культура ==; Литература; Кинематограф; Образование и наука; СпортНациональным видом спорта в Литве считается баскетбол (см. ЛБЛ). Литовские баскетбольные команды и сборная регулярно участвуют в важнейших соревнованиях Европы и мира.Молодёжная сборная Литвы по футболу становилась победителем Спартакиады-1983.; СМИМножество газет (в том числе на русском, польском, белорусском языках, см. ).Много журналов.Два государственных (LTV и LTV2) и множество частных телеканалов (в столице имеется одна действующая Вильнюсская телебашня. С 2012\xa0г. эфирное вещание переведено в цифровой формат).Более двух десятков радиостанций (также вещающих и на русском, польском, английском языках) в диапазоне FM, как с собственных передатчиков, так и с арендованных государственных.В Литве 54,7\xa0% домохозяйств были подключены к сети Интернет (2009).== Вооружённые силы ==== См. также ==* Праздники и памятные дни Литвы* История почты и почтовых марок Литвы* Ордена Литвы== Примечания ==;Комментарии;Источники== Литература ==* "Эйдинтас А.", "Бумблаускас А.", "Кулакаускас А.", "Тамошайтис М." История Литвы / пер. Е. Суворовой.\xa0— Вильнюс: Eugrimas, 2013.\xa0— 317 c. ISBN 978-609-437-165-3.* "Eidintas A.", "Bumblauskas A.", "Kulakauskas A.", "Tamošaitis M." The History of Lithuania / Translated and edited by S. Kondratas and R. Kondratas.\xa0— Revised 2nd edition.\xa0— Vilnius: Eugrimas, 2015.\xa0— 328 p. ISBN 978-609-437-163-9.== Ссылки ==* olitve.ru\xa0— Портал «Всё о Литве»* * Lithuania. CIA Chiefs of State and Cabinet Members of Foreign Governments* Lithuania from "UCB Libraries GovPubs"'
 )]

load_bsnlp

In [25]:
from corus import load_bsnlp

path = 'data/bsnlp'
records = load_bsnlp(path)
record = next(records)
record
Out[25]:
BsnlpMarkup(
    id='ru-ryanair-new-extra-1',
    name='Nord_Stream_2_extra.xml_file_1',
    lang='ru',
    date=datetime.datetime(2019, 1, 10, 0, 0),
    url='https://www.epravda.com.ua/rus/news/2019/01/10/644185/',
    text='Климкин рассказал, чего ожидает от газовых переговоров с Россией в Брюсселе\n\nУкраина во время второго раунда трехсторонних переговоров в Брюсселе будет настаивать на том, что транзит газа должен происходить в соответствии с нормами европейского законодательства. Об этом заявил министр иностранных дел Украины Павел Климкин на совместном брифинге с главой МИД Литвы Линасом Линкявичюсом в четверг, 10 января, передает\n\n"Наша позиция относительно будущего транзита, а также по европейской энергетической безопасности предельно четкая: мы готовы выполнить все соответствующие европейские регуляторные нормы для нашей газотранспортной системы. Мы считаем, что будущий транзит должен базироваться на прозрачных и эффективных регуляторах ЕС", - сказал Климкин. "Это означает, например, что газ будет покупаться на восточной границе Украины, что транзитный тариф будет рассчитываться по европейской методологии. То есть общий смысл нашей позиции - транзит должно происходить в соответствии с европейским законодательством ", - отметил глава МИД.\n\nОн подчеркнул, что общей позицией Украины и Литвы является то, что требования европейского законодательства должны быть распространены и на Nord stream-2, что фундаментально повысит европейскую энергетическую безопасность против России. Подытоживая, Климкин подчеркнул, что Украина готова к конструктивному диалогу о будущем транзита газа в Европу, но он должен базироваться на очень четких условиях, самое главное из которых - соответствие нормам европейского законодательства для обеспечения четких, эффективных и прозрачных предпосылок транзита. "Поэтому во время переговоров в Брюсселе 21 января мы будем исходить из этих очень простых, но очень важных требований", - отметил Климкин. Ранее глава НАК "Нафтогаз Украины" Андрей Коболев заявил о готовности Украины, при согласовании этого вопроса правительством, обсудить возможность просмотра или отказа от второго транзитного иска к российскому "Газпрому" на сумму более 12 млрд долларов в привязке с заключением нового долгосрочного контракта. Действующий контракт по транзиту российского газа через Украину заканчивается в конце 2019 года.\n',
    substrings=[BsnlpSubstring(
         text='"Газпрому"',
         normal='"Газпром"',
         type='ORG',
         id='ORG-Gazprom'
     ),
     BsnlpSubstring(
         text='Nord stream-2',
         normal='Nord stream-2',
         type='PRO',
         id='PRO-Nord-Stream-2'
     ),
     BsnlpSubstring(
         text='Андрей Коболев',
         normal='Андрей Коболев',
         type='PER',
         id='PER-Andrey-Kobolev'
     ),
     BsnlpSubstring(
         text='Брюсселе',
         normal='Брюссель',
         type='LOC',
         id='GPE-Brussles'
     ),
     BsnlpSubstring(
         text='ЕС',
         normal='ЕС',
         type='ORG',
         id='ORG-European-Union'
     ),
     BsnlpSubstring(
         text='Европу',
         normal='Европа',
         type='LOC',
         id='LOC-Europe'
     ),
     BsnlpSubstring(
         text='Климкин',
         normal='Климкин',
         type='PER',
         id='PER-Pavel-Klimkin'
     ),
     BsnlpSubstring(
         text='Линасом Линкявичюсом',
         normal='Линас Линкявичюс',
         type='PER',
         id='PER-Linas-Linkavichus'
     ),
     BsnlpSubstring(
         text='Литвы',
         normal='Литва',
         type='LOC',
         id='GPE-Lithuania'
     ),
     BsnlpSubstring(
         text='МИД Литвы',
         normal='МИД Литвы',
         type='ORG',
         id='ORG-Foreign-Office-Lithuania'
     ),
     BsnlpSubstring(
         text='МИД',
         normal='МИД',
         type='ORG',
         id='ORG-Foreign-Office'
     ),
     BsnlpSubstring(
         text='НАК "Нафтогаз Украины"',
         normal='НАК "Нафтогаз Украины"',
         type='ORG',
         id='ORG-Naftogaz'
     ),
     BsnlpSubstring(
         text='Павел Климкин',
         normal='Павел Климкин',
         type='PER',
         id='PER-Pavel-Klimkin'
     ),
     BsnlpSubstring(
         text='Россией',
         normal='Россия',
         type='LOC',
         id='GPE-Russia'
     ),
     BsnlpSubstring(
         text='России',
         normal='Россия',
         type='LOC',
         id='GPE-Russia'
     ),
     BsnlpSubstring(
         text='Украина',
         normal='Украина',
         type='LOC',
         id='GPE-Ukraine'
     ),
     BsnlpSubstring(
         text='Украину',
         normal='Украина',
         type='LOC',
         id='GPE-Ukraine'
     ),
     BsnlpSubstring(
         text='Украины',
         normal='Украина',
         type='LOC',
         id='GPE-Ukraine'
     )]
)

load_ods_interfax

In [26]:
from corus import load_ods_interfax

path = 'data/ods/interfax.csv.gz'
records = load_ods_interfax(path)
next(records)
Out[26]:
NewsRecord(
    timestamp=datetime.datetime(2019, 4, 30, 13, 26),
    url='https://www.sport-interfax.ru/659837',
    edition='www.sport-interfax.ru',
    topics='Спорт',
    authors=None,
    title='Российского чемпиона мира по греко-римской борьбе отстранили за допинг',
    text='Москва. 30 апреля. INTERFAX.RU - Чемпион мира по греко-римской борьбе 2014 года Чингиз Лабазанов наказан дисквалификацией сроком на один год за нарушение антидопинговых правил, сообщает во вторник пресс-служба Российского антидопингового агентства во вторник.n"Федерация борьбы России, по решению РАА РУСАДА, вынесла решение, по которому спортсмен Лабазанов Чингиз лишен права на 1 год за нарушение ст. 2.4 Всероссийских антидопинговых правил, период, начинающийся 11 апреля 2019 года", - говорится в сообщении.nКроме этого, на четыре года за нарушение антидопинговых правил отстранен еще один отечественный борец - Валерий Гусаров. Его наказание начинается с 31 июля 2018 года.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ods_gazeta

In [27]:
from corus import load_ods_gazeta

path = 'data/ods/gazeta.csv.gz'
records = load_ods_gazeta(path)
next(records)
Out[27]:
NewsRecord(
    timestamp=datetime.datetime(2008, 11, 21, 15, 19, 14),
    url='https://www.gazeta.ru/news/business/2008/11/21/n_1298950.shtml',
    edition=None,
    topics='Бизнес',
    authors=None,
    title='Госдума сокращает срок действия ставки экспортных пошлин на нефть',
    text='Госдума приняла сегодня в первом чтении и сразу в целом поправки в закон «О таможенном тарифе», сокращающие срок действия ставки экспортных пошлин на нефть с 2-х до 1-го месяца.nnДля установления средних цен на нефть марки Urals и расчета экспортных пошлин правительство России в течение двух месяцев проводит мониторинг на международных рынках нефтяного сырья (средиземноморском и роттердамском), экспортные пошлины на нефть устанавливаются также раз в два месяца.nnСокращение на месяц периода мониторинга (с 15-го числа каждого календарного месяца по 14-е число следующего месяца) и соответственно срока действия ставок экспортных пошлин «позволит более оперативно реагировать на изменения экономической ситуации в стране и сэкономить нефтяникам миллиарды рублей», считают разработчики. Экспортные ставки будут вводиться с 1 числа календарного месяца, следующего за окончанием периода мониторинга.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ods_izvestia

In [28]:
from corus import load_ods_izvestia

path = 'data/ods/iz.csv.gz'
records = load_ods_izvestia(path)
next(records)
Out[28]:
NewsRecord(
    timestamp=datetime.datetime(2017, 1, 24, 18, 24),
    url='https://iz.ru/699785/nataliia-portiakova/chtoby-pomnili',
    edition=None,
    topics='Мир',
    authors=['Наталия Портякова'],
    title='Чтобы помнили',
    text='В Европейском\xa0парламенте\xa0(ЕП) 24 января прошла официальная церемония памяти жертв холокоста, приуроченная к одноименному международному дню (отмечается 27 января). Главный посыл ее участников свелся к тому, что мир обязан не только чтить невинно убитых —\xa0а их было свыше 6 млн\xa0человек, —\xa0но и в том, чтобы не позволить экстремизму любого толка вновь поднять голову.nМероприятия, посвященные памяти жертв холокоста, проходят в Европе регулярно. Правда, из года в год социальный и политический контекст, на фоне которого Европа вспоминает жертв преступлений нацизма, становится всё\xa0более тревожным.nВице-президент Европейского парламента Мэред Макгиннесс в своем выступлении сделала\xa0акцент не столько на самих проблемах, сколько на том, что необходимо предпринять, чтобы их решить. Главное здесь, по ее логике, —\xa0вписать красной нитью во всю систему европейского образования одну простую, но важную мысль:\xa0никогда больше не позволить экстремизму какого-либо толка окрепнуть в умах европейцев.nЛозунг «больше никогда»\xa0не раз звучал из уст других выступавших в зале Европарламента. Но наибольшую реакцию у публики вызвали всё\xa0же заявления с политическим подтекстом.n— Меньше месяца назад синагоги в Мальмё и Гетеборге забросали бутылками с зажигательной смесью из-за абсурдной веры в то, что европейские евреи —\xa0виновники дипломатических заявлений, сделанных неевреем за тысячу миль от Европы.\xa0А он всего лишь\xa0озвучил самую очевидную истину о том, что Иерусалим является столицей Израиля, —\xa0заявил, в частности, один из организаторов мероприятия —\xa0президент Европейского еврейского общества Вячеслав Кантор.nСледующий выступающий —\xa0спикер израильского кнессета Юлий Эдельштейн удостоился аплодисментов за речь, в которой, по сути, обвинил европейцев в неискренности в борьбе\xa0с антисемитизмом.n— Недавно делегация Евросоюза побывала в Тегеране. Никто почему-то не выразил протест против конкурса карикатур на лучшего «отрицателя холокоста»\xa0(Иран давно известен своим показательным отрицанием факта холокоста\xa0и периодически проводит конкурсы и\xa0круглые столы на эту тему. —\xa0«Известия»), —\xa0заметил спикер, продемонстрировав собравшимся рисунок победителя. —\xa0Между прочим, француза, получившего за него $50 тыс.\xa0Нужны искренние меры. Борьба с антисемитизмом —\xa0это больше, чем слова и резолюции.nОдна из немногих стран, кого сложно упрекнуть в антисемитизме, —\xa0это Россия, у которой к холокосту особое отношение. Ведь именно советские войска 27 января 1945 года освободили заключенных крупнейшего\xa0нацистского\xa0лагеря\xa0смерти Освенцим (Аушвиц-Биркенау), в котором, по разным данным, погибло от 1,5 до 4 млн\xa0человек. И именно Россия была одним из инициаторов резолюции Генассамблеи ООН 2005 года об\xa0установлении\xa0Международного дня памяти жертв холокоста. Наконец, именно Россия\xa0год за годом вносит на рассмотрение Генеральной Ассамблеи ООН проект специальной резолюции о борьбе с героизацией нацизма, неонацизмом и другими видами проявления расизма и нетерпимости.nВ России в этом году центральным событием, посвященным\xa0Международному дню памяти жертв холокоста, стала фотовыставка «Холокост: уничтожение, освобождение, спасение». Она открылась 17 января в Совете Федерации и представила зрителям более 70 уникальных экспонатов —\xa0документальных свидетельств и фотографий узников нацистских лагерей смерти и их освободителей —\xa0солдат Красной Армии.nПодобные выставки также\xa0впервые представили в посольствах России в ряде европейских столиц и штаб-квартире ООН в Нью-Йорке. Открывая ее 18 января, глава МИДа Сергей Лавров так же, как и выступившие сегодня в Европарламенте депутаты и представители еврейских организаций, не стал скрывать тревогу по поводу «ползучей реабилитации нацизма».\xa0Назвав холокост «одним из самых ужасных преступлений против человечности», шеф российской дипломатии подчеркнул, что долг всего международного сообщества —\xa0не только в почитании памяти миллионов жертв нацизма, но и в том, чтобы делать максимум, не допуская повторения подобных трагедий в будущем.nНесмотря на целый ряд мер, принимаемых\xa0как ЕП, так и отдельными странами в сфере борьбы с проявлениями антисемитизма, искоренить\xa0это явление не удается. Как следует из последних данных Европейской комиссии, на фоне угроз и роста антисемитизма еврейская диаспора в ЕС сократилась (за счет эмиграции в Израиль) с 1,12 млн человек в 2009 году до 1,08 млн в 2015 году.nТревожные тенденции налицо не только во Франции, где проживает самая крупная в Европе диаспора\xa0(460 тыс.), но и в Германии с ее 200-тысячной еврейской общиной\xa0—\xa0стране, в силу понятных исторических причин щепетильней других подавляющей любые проявления нацизма и антисемитизма. Число преступлений на почве нацизма и антисемитизма в 2017 году выросло там на 4% по сравнению с 2016 годом.nМестные политики связывают это не только с ростом ультраправых настроений в обществе, но и с наплывом в страну беженцев-мусульман с Ближнего Востока, которых никогда нельзя было заподозрить в симпатиях к Израилю и евреям. Как сетовал в конце прошлого года глава Центрального комитета евреев Германии Йозеф Шустер, в некоторых районах страны появление в кипе или со звездой Давида на шее может стать основанием для оскорблений и угроз физической расправы.nРеагируя на рост антисемитизма, в начале года правящий в Германии блок ХДС/ХСС выдвинул идею зафиксировать законодательно пункт о высылке из страны иностранцев, замеченных в антисемитских высказываниях и отрицающих существование Государства Израиль. Звучало и предложение в рамках политики по интеграции обязать всех претендентов на статус беженца в Германии посещать бывший концентрационный лагерь —\xa0чтобы ужасы холокоста стали для них очевиднее. Впрочем, эти идеи не были воплощены в жизнь, зато Берлин откликнулся на рекомендацию Европарламента, предложившего летом 2017 года странам ЕС учредить должности\xa0национальных комиссаров по вопросу антисемитизма. За учреждение в стране такого нового поста бундестаг проголосовал\xa0на прошлой неделе.nВ настоящее время в Израиле и 16 европейских странах публичное отрицание самого факта холокоста является уголовно наказуемым преступлением, за которое можно получить тюремный срок от двух до пяти лет. В России закон об ответственности за реабилитацию нацизма и отрицание нацистских преступлений против человечества, установленных Международным военным трибуналом в Нюрнберге, а также за «распространение заведомо ложных сведений о деятельности СССР в годы Второй мировой войны»\xa0был принят в мае 2015 года. А вот в США, известных своей многочисленной еврейской диаспорой, отрицание холокоста не входит в число уголовных преступлений —\xa0это напрямую связано с Первой\xa0поправкой\xa0к конституции страны, защищающей право на свободное выражение мнения.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ods_meduza

In [29]:
from corus import load_ods_meduza

path = 'data/ods/meduza.csv.gz'
records = load_ods_meduza(path)
next(records)
Out[29]:
NewsRecord(
    timestamp=datetime.datetime(2019, 8, 6, 14, 15),
    url='https://meduza.io/feature/2019/08/06/matros-razgovarival-v-kazarme-po-videosvyazi',
    edition=None,
    topics=None,
    authors=None,
    title='Матрос разговаривал в\xa0казарме по\xa0видеосвязи',
    text='С\xa0марта 2019 года российским военным запрещено пользоваться смартфонами и\xa0публиковать в\xa0интернете фотографии со\xa0службы. Соответствующие поправки к\xa0закону «О\xa0статусе военнослужащих» правительство подготовило в\xa0сентябре 2018 года, а\xa0Госдума и\xa0Совет Федерации одобрили их\xa0в\xa0феврале 2019-го. В\xa0марте закон подписал президент России Владимир Путин, и\xa017\xa0марта онnвступилnв\xa0силу. Российских военных сразу\xa0же начали наказывать за\xa0найденные у\xa0них смартфоны и\xa0фото в\xa0социальных сетях: обычно им\xa0дают от\xa0пяти до\xa015 суток ареста, выяснила «Медуза», изучив решения военных судов.nВ\xa0пояснительной записке к\xa0поправкам правительствоnсвязывалоnих\xa0необходимость с\xa0военной операцией в\xa0Сирии: еще до\xa0того, как Россия в\xa0сентябре 2015 года официально объявила о\xa0ее\xa0начале, расследователи заявлялиnо\xa0присутствии в\xa0странеnроссийских военных\xa0— в\xa0том числе на\xa0основании их\xa0фотографий из\xa0соцсетей. Ранее участникиnConflict Intelligence Teamnи\xa0другие независимыеnрасследователиnпубликовали материалы о\xa0том, что Россия воюет на\xa0востоке Украины.nНовый закон не\xa0только запретил военным и\xa0призывникам рассказывать в\xa0интернете о\xa0своей службе, но\xa0и\xa0вообще иметь при себе смартфоны, планшеты и\xa0другие гаджеты с\xa0доступом в\xa0интернет и/или возможностью съемки фото и\xa0видео. Этот\xa0же закон отнес найденные у\xa0военных на\xa0службе гаджеты к\xa0грубым дисциплинарным проступкам, за\xa0которыеnполагаетсяnдо\xa030 суток ареста. Отправить под арест может только военный суд.nПри этом на\xa0мобильные телефоны без камер и\xa0интернета закон не\xa0распространяется,nговорилnв\xa0феврале первый заместитель председателя комитета Госдумы по\xa0обороне Андрей Красов. В\xa0быту военным разрешено пользоваться смартфонами.nВ\xa0середине июля 2019 годаnсразу несколькоnизданийnобратили внимание, что принятием закона дело не\xa0ограничилось\xa0— аналогичные поправки Минобороны решило внести в\xa0дисциплинарный устав Вооруженных\xa0сил. Документ с\xa0проектом соответствующего приказа президента РФ\xa0былnопубликованnна\xa0портале проектов нормативных актов. По\xa0состоянию на\xa06\xa0августа документ все еще не\xa0одобрен. Будущее принятие поправок в\xa0уставnмногие сочлиnфактическим началом практики по\xa0«приравниванию смартфонов к\xa0дедовщине» в\xa0российской армии.nНа\xa0самом деле массово отправлять российских военнослужащих под арест за\xa0смартфоны или за\xa0публикации в\xa0соцсетях начали почти одновременно с\xa0принятием закона, свидетельствуют судебные решения, опубликованные на\xa0портале ГАС «Правосудие». Военные суды уже приняли десятки решений по\xa0таким делам.nНапример, 1\xa0апреля, меньше чем через две недели после вступления закона в\xa0силу, военнослужащий Андрей Тарханов, находясь на\xa0боевом дежурстве «в\xa0качестве механика-водителя», опубликовал фотографии «в\xa0информационно- телекоммуникационную сеть „Интернет“, социальную сеть Instagram»,nговоритсяnв\xa0решении\xa0Саратовского гарнизонного военного суда от\xa019\xa0апреля. Тарханов получил 15 суток ареста на\xa0гауптвахте.nУ\xa0рядового Андрея Трубачева 20\xa0апреля был обнаружен и\xa0изъят «абонентский терминал с\xa0расширенными мультимедийными возможностями\xa0— iPhone 8, который он\xa0использовал с\xa0января 2019\xa0г. в\xa0личных нуждах после отбоя»,nсказаноnв\xa0решении Челябинского военного суда от\xa017\xa0мая. Трубачев получил пять суток ареста. Матрос Магомед-Хусейн Демельханов 10\xa0апреля разговаривал в\xa0казарме «по\xa0видеосвязи, используя смартфон». Севастопольский военный суд 24\xa0апреляnсчелn, что Демельханову будет достаточно одних суток ареста.nИногда командиры пытаются отправить солдат под арест за\xa0смартфоны, найденные еще до\xa0вступления закона в\xa0силу. Например, у\xa0военнослужащего Сергея Черного телефон нашли в\xa0январе 2019 года. Он\xa0«делал на\xa0нем фотографии и\xa0записывал видео по\xa0месту прохождения военной службы». Уссурийский военный судnотказалсяnарестовывать Черного задним числом\xa0— при этом сам военнослужащий признал себя виновным.nНо\xa0так бывает не\xa0всегда. Например, военнослужащий Егор Круглов, находясь на\xa0боевом дежурстве в\xa0декабре 2018 года и\xa0апреле 2019 года, взял сотовый телефон у\xa0сослуживца, после чего «сделал несколько своих снимков и\xa0отправил их\xa0своей девушке при помощи социальной сети», говорится в\xa0решении Саратовского военного суда от\xa030\xa0мая (название соцсети в\xa0решении не\xa0уточняется). Военнослужащий признал себя виновным по\xa0обоим эпизодам, включая 2018 год, суд тоже не\xa0стал исключать его из\xa0решения. Кругловnполучилn15 суток ареста.nЮрист «Комитета солдатских матерей» Вадим Жернаков сказал «Медузе», что командирам и\xa0судам действительно не\xa0нужно было дожидаться принятия поправок в\xa0дисциплинарный устав. «Если исходить из\xa0принципа главенства нормативной базы, то\xa0сначала идет Конституция, потом федеральные законы, потом подзаконные акты,\xa0— объясняет юрист. —\xa0А\xa0поскольку уставы утверждаются указом президента\xa0— это подзаконные акты. Даже если чего-то нет в\xa0подзаконном акте\xa0— а\xa0они меняются медленнее, чем законы\xa0— руководствоваться нужно федеральным законодательством».nПетр Лохов',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ods_ria

In [30]:
from corus import load_ods_ria

path = 'data/ods/ria.csv.gz'
records = load_ods_ria(path)
next(records)
Out[30]:
NewsRecord(
    timestamp=datetime.datetime(2019, 8, 10, 6, 35),
    url='https://ria.ru/20190810/1557366973.html',
    edition='ria.ru',
    topics='Происшествия',
    authors=None,
    title='Восемнадцать туристов застряли на пляже в Приморье из-за ливней',
    text='ВЛАДИВОСТОК, 10 авг – РИА Новости.nВосемнадцать туристов, среди которых есть двое детей, застряли на пляже в Приморье из-за ливней, сообщает ГУ МЧС РФ по Приморскому краю.n"На пляже находятся 18 человек, из них двое детей. Люди остались отрезанными и самостоятельно выбраться с места отдыха не могут", - сообщает региональный главк МЧС.nСигнал о бедствии поступил в пятницу в оперативную дежурную смену Центра управления в кризисных ситуациях. Выяснилось, что в результате подъёма уровня воды затруднён проезд легкового автотранспорта к пляжу через устье ручья Чёрный в районе бухты Ежовая. По сообщению спасателей, все отдыхающие были неоднократно и заблаговременно предупреждены об ухудшении погодных условий.nСпасатели уже вышли на связь с туристами, чтобы уточнить обстановку. Для оказания помощи к месту, где "заблокированы" 18 туристов, на плавстредствах направлена аэромобильная группировка МЧС России по Приморскому краю. Спасатели доставляют людям бутилированную воду, продукты питания и предметы первой необходимости.nПо словам спасателей, в целом, ситуация в данном районе стабильная. В настоящий момент наблюдается спад воды.nТропический шторм "Франциско", смещаясь вдоль южного побережья Приморья, ночью в четверг принес в регион до 60% месячной нормы осадков. Ему на смену в пятницу пришёл не менее сильный атмосферный фронт с ливнями.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=0,
        views=70,
        comments=None
    )
)

load_ods_rt

In [31]:
from corus import load_ods_rt

path = 'data/ods/rt.csv.gz'
records = load_ods_rt(path)
next(records)
Out[31]:
NewsRecord(
    timestamp=datetime.datetime(2019, 6, 26, 14, 0),
    url='https://russian.rt.com/russia/news/644595-avto-ekspert-rossiya',
    edition=None,
    topics='Россия',
    authors=None,
    title='Эксперт прокомментировал ситуацию с возможным лишением прав за нечитаемые номера',
    text='Как считает эксперт, россиянам не стоит переживать, что их заподозрят в намеренном загрязнении госзнака в непогоду.n«Когда идёт дождь или снег, то у водителя нет никакого умысла, чтобы номер был грязным, — он сам по себе такой. В теории в идеальной ситуации это должно учитываться инспекторами и судом», —nзаявилnон.nРанее пленум Верховного суда Россииnвыпустил постановлениеn, разъясняющее, какие санкции могут быть применены в отношении автолюбителей, которые приняли меры, чтобы государственные знаки, установленные на их автомобилях, стали нечитаемыми.nРуководитель Федерации автовладельцев России Сергей Канаев в беседе с ФАНnоценилnпредложение правительства России ввести штраф до 2500 рублей для автомобилистов, которые не оплачивают проезд по платной дороге.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ods_tass

In [32]:
from corus import load_ods_tass

path = 'data/ods/tass-001.csv.gz'
records = load_ods_tass(path)
next(records)
Out[32]:
NewsRecord(
    timestamp=datetime.datetime(2019, 8, 10, 17, 12, 51),
    url='https://tass.ru/proisshestviya/6751577',
    edition=None,
    topics='proisshestviya',
    authors=None,
    title='Военные завершили работы по борьбе с паводками в Тулунском районе Иркутской области',
    text='ТАСС, 10 августа. Военнослужащие группировки Минобороны России по ликвидации последствий паводков завершили выполнение задач в Тулунском районе Иркутской области, сообщили\xa0журналистам в военном ведомстве.n"В городе Тулун состоялась торжественная церемония награждения военнослужащих группировки Минобороны России, принимавших участие в ликвидации последствий паводка в Тулунском районе Иркутской области", - сообщили в Минобороны.nКак сообщили в Минобороны, военные железнодорожники механизированного батальона железнодорожного соединения Центрального военного округа (ЦВО) восстановили участки береговой защитной дамбы на реке Ия города Тулуна. "Для восстановления около трех километров береговой защитной дамбы в районе моста федеральной трассы Р-255 военные специалисты отсыпали около 25 тыс. кубических метров скального грунта, ширина защитного вала увеличена до 5 метров, высота до 4 метров", - сообщили в военном ведомстве.nВсего за время работы группировка Минобороны очистила от завалов 100 га территории в Тулуне, разобрала более 70 разрушенных паводком домов.nПо информации военного ведомства, губернатор Иркутской области Сергей Левченко и мэр города Тулуна Юрий Карих поблагодарили военнослужащих за оказание помощи местному населению, наиболее отличившимся из них были вручены почетные грамоты и ценные подарки.nО группировке МинобороныnПервые отряды военнослужащих ЦВО прибыли для ликвидации последствий паводка в Иркутскую область в начале июля. Военные медики проводили вакцинацию, а также оказывали первую помощь населению, пекари готовили хлеб, раздавали питьевую воду местным жителям, авиация доставляла гуманитарную помощь в отрезанные водой поселки. Одновременно военные химики проводили дезинфекцию социальных объектов, а железнодорожники восстанавливали дамбу и разбирали завалы.n"12 врачебно-сестринских бригад провели вакцинацию от вирусного гепатита "А" около 4 тыс. жителей города, в том числе 580 детей", - проинформировали в Минобороны.nГруппировка военнослужащих Минобороны России по оказанию помощи в ликвидации последствий паводка в Тулунском районе Иркутской области насчитывала около 1 тыс. человек, порядка 120 единиц военной и специальной техники.',
    stats=Stats(
        fb=None,
        vk=None,
        ok=None,
        twitter=None,
        lj=None,
        tg=None,
        likes=None,
        views=None,
        comments=None
    )
)

load_ria_raw

In [33]:
from corus import load_ria_raw

path = 'data/ria.json.gz'
records = load_ria_raw(path)
next(records)
Out[33]:
RiaRawRecord(
    title='большинство детей, которых пытались увезти в сша из гаити, не сироты',
    text='<p><strong></strong></p>\n<p><strong>москва, 31 янв - риа новости.</strong> большая часть из 33 детей, которых граждане сша пытались вывезти из гаити в организованный в доминиканской республике приют, не являются сиротами, сообщает в воскресенье <a href="http://www.afp.com" target="_blank">агентство франс пресс</a> со ссылкой на заявление представителя международной организации "детские деревни sos" (sos children\'s village), оказывающей помощь детям, оставшимся без родителей</p>\n<p>как заявила агентству патрисия варгас (patricia vargas), курирующая программы "детских деревень sos" в центральной америке, мексике и на карибах, поговорив с детьми она выяснила, что родители многих из них живы. некоторые дети смогли назвать свои домашние адреса и номера телефонов, что дает возможность связаться с их родителями.</p>\n<p>в это воскресенье <a href="http://rian.ru/society/20100131/207037914.html" target="_blank">гаитянская полиция задержала десятерых граждан сша</a>, подозреваемых в попытке без разрешения вывезти более 30 детей в доминиканскую республику.</p>\n<p>представитель баптистской церкви в городе меридиан американского штата айдахо шон лэнкфорд (sean lankford) заявил, что задержанные прибыли на гаити в составе группы, помогающей детям, которые остались без родителей после разрушительного землетрясения 12 января.</p>\n<p>лэнкфорд также сообщил, что в числе задержанных его дочь и жена, и они думали, что у них имеются все необходимые документы, позволяющие вывезти детей в организованный в доминиканской республике приют.</p>\n<p>в настоящее время все эти дети, за исключением маленькой девочки, страдающей от истощения, которая была госпитализирована, находятся в благотворительном центре организации в городе круа-де-букет (croix des bouquets), расположенном в 12 километрах к северо-востоку от столицы гаити порт-о-пренса.</p>\n<p>по словам варгас, точный возраст малышки не известен, врачи полагают, что ей около 7 месяцев.</p>\n<p>центр "детских деревень sos" на гаити юридически не является сиротским приютом и не отдает детей на усыновление.</p>\n<p><em><strong>ранее гаитянские интернет-ресурсы сообщали, что</strong></em> <strong><a href="http://www.rian.ru/society/20100128/206736391.html" target="_blank">за  детьми, оставшимися сиротами после землетрясения, охотятся педофилы и торговцы  людьми &gt;&gt;</a></strong></p>\n<p>как отмечает франс пресс, после разгула стихии на гаити были установлены новые правила усыновления, согласно которым премьер-министр страны жан-макс бельрив должен лично разрешить вывоз сирот. целью подобных мер является пресечение попыток незаконного вывоза детей для преступных целей в условиях хаоса, царящего в стране после разгула стихии.</p>\n<p>по данным ответственных лиц на гаити, тысячи детей могли быть разлучены с родителями или лишиться их в результате <a href="http://www.rian.ru/trend/earthquake_haiti_13012010/" target="_blank">двух землетрясений магнитудой 7 и 5,9</a>, произошедших у побережья этого островного государства 12 января.</p>'
)

load_ria

In [34]:
from corus import load_ria

path = 'data/ria.json.gz'
records = load_ria(path)
next(records)
Out[34]:
RiaRecord(
    title='большинство детей, которых пытались увезти в сша из гаити, не сироты',
    prefix='москва, 31 янв - риа новости.',
    text='большая часть из 33 детей, которых граждане сша пытались вывезти из гаити в организованный в доминиканской республике приют, не являются сиротами, сообщает в воскресенье агентство франс пресс со ссылкой на заявление представителя международной организации "детские деревни sos" (sos children\'s village), оказывающей помощь детям, оставшимся без родителей\nкак заявила агентству патрисия варгас (patricia vargas), курирующая программы "детских деревень sos" в центральной америке, мексике и на карибах, поговорив с детьми она выяснила, что родители многих из них живы. некоторые дети смогли назвать свои домашние адреса и номера телефонов, что дает возможность связаться с их родителями.\nв это воскресенье гаитянская полиция задержала десятерых граждан сша, подозреваемых в попытке без разрешения вывезти более 30 детей в доминиканскую республику.\nпредставитель баптистской церкви в городе меридиан американского штата айдахо шон лэнкфорд (sean lankford) заявил, что задержанные прибыли на гаити в составе группы, помогающей детям, которые остались без родителей после разрушительного землетрясения 12 января.\nлэнкфорд также сообщил, что в числе задержанных его дочь и жена, и они думали, что у них имеются все необходимые документы, позволяющие вывезти детей в организованный в доминиканской республике приют.\nв настоящее время все эти дети, за исключением маленькой девочки, страдающей от истощения, которая была госпитализирована, находятся в благотворительном центре организации в городе круа-де-букет (croix des bouquets), расположенном в 12 километрах к северо-востоку от столицы гаити порт-о-пренса.\nпо словам варгас, точный возраст малышки не известен, врачи полагают, что ей около 7 месяцев.\nцентр "детских деревень sos" на гаити юридически не является сиротским приютом и не отдает детей на усыновление.\nранее гаитянские интернет-ресурсы сообщали, что за  детьми, оставшимися сиротами после землетрясения, охотятся педофилы и торговцы  людьми >>\nкак отмечает франс пресс, после разгула стихии на гаити были установлены новые правила усыновления, согласно которым премьер-министр страны жан-макс бельрив должен лично разрешить вывоз сирот. целью подобных мер является пресечение попыток незаконного вывоза детей для преступных целей в условиях хаоса, царящего в стране после разгула стихии.\nпо данным ответственных лиц на гаити, тысячи детей могли быть разлучены с родителями или лишиться их в результате двух землетрясений магнитудой 7 и 5,9, произошедших у побережья этого островного государства 12 января.'
)

load_ud_gsd

In [35]:
from corus import load_ud_gsd

path = 'data/ud/ru_gsd-ud-dev.conllu'
records = load_ud_gsd(path)
next(records)
Out[35]:
UDSent(
    id='dev-s3',
    text='Он и являлся&#39;&#39; полным властелином всей Ахсауской местности&#39;&#39; и родоначальником Телакуровых, построивших здесь свой замок.',
    attrs={},
    tokens=[UDToken(
         id='1',
         text='Он',
         lemma='он',
         pos='PRON',
         feats={'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing',
          'Person': '3'},
         head_id='3',
         rel='nsubj'
     ),
     UDToken(
         id='2',
         text='и',
         lemma='и',
         pos='PART',
         feats={},
         head_id='3',
         rel='advmod'
     ),
     UDToken(
         id='3',
         text='являлся',
         lemma='являться',
         pos='VERB',
         feats={'Aspect': 'Imp',
          'Gender': 'Masc',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Mid'},
         head_id='0',
         rel='root'
     ),
     UDToken(
         id='4',
         text='&#39;&#39;',
         lemma='&#39;&#39;',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='5',
         text='полным',
         lemma='полный',
         pos='ADJ',
         feats={'Case': 'Ins',
          'Degree': 'Pos',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='6',
         rel='amod'
     ),
     UDToken(
         id='6',
         text='властелином',
         lemma='властелин',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Ins',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='3',
         rel='xcomp'
     ),
     UDToken(
         id='7',
         text='всей',
         lemma='весь',
         pos='DET',
         feats={'Case': 'Gen',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='9',
         rel='det'
     ),
     UDToken(
         id='8',
         text='Ахсауской',
         lemma='ахсауский',
         pos='ADJ',
         feats={'Case': 'Gen',
          'Degree': 'Pos',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='9',
         rel='amod'
     ),
     UDToken(
         id='9',
         text='местности',
         lemma='местность',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Gen',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='6',
         rel='nmod'
     ),
     UDToken(
         id='10',
         text='&#39;&#39;',
         lemma='&#39;&#39;',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='11',
         text='и',
         lemma='и',
         pos='CCONJ',
         feats={},
         head_id='12',
         rel='cc'
     ),
     UDToken(
         id='12',
         text='родоначальником',
         lemma='родоначальник',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Ins',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='6',
         rel='conj'
     ),
     UDToken(
         id='13',
         text='Телакуровых',
         lemma='Телакуров',
         pos='PROPN',
         feats={'Animacy': 'Anim',
          'Case': 'Gen',
          'Gender': 'Masc',
          'Number': 'Plur'},
         head_id='12',
         rel='nmod'
     ),
     UDToken(
         id='14',
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         head_id='15',
         rel='punct'
     ),
     UDToken(
         id='15',
         text='построивших',
         lemma='построить',
         pos='VERB',
         feats={'Animacy': 'Anim',
          'Aspect': 'Perf',
          'Case': 'Gen',
          'Number': 'Plur',
          'Tense': 'Past',
          'VerbForm': 'Part',
          'Voice': 'Act'},
         head_id='13',
         rel='acl'
     ),
     UDToken(
         id='16',
         text='здесь',
         lemma='здесь',
         pos='ADV',
         feats={'Degree': 'Pos'},
         head_id='15',
         rel='advmod'
     ),
     UDToken(
         id='17',
         text='свой',
         lemma='свой',
         pos='DET',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='18',
         rel='det'
     ),
     UDToken(
         id='18',
         text='замок',
         lemma='замок',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='15',
         rel='obj'
     ),
     UDToken(
         id='19',
         text='.',
         lemma='.',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     )]
)

load_ud_taiga

In [36]:
from corus import load_ud_taiga

path = 'data/ud/ru_taiga-ud-dev.conllu'
records = load_ud_taiga(path)
next(records)
Out[36]:
UDSent(
    id='instagram-16',
    text='@screened-88 ✅взабраться на статую Христа - только что!😄',
    attrs={'newpar': None,
     'speaker': 'screened-18',
     'genre': 'social'},
    tokens=[UDToken(
         id='1',
         text='@screened-88',
         lemma='@screened-88',
         pos='X',
         feats={'Foreign': 'Yes'},
         head_id='3',
         rel='vocative'
     ),
     UDToken(
         id='2',
         text='✅',
         lemma='✅',
         pos='PUNCT',
         feats={},
         head_id='3',
         rel='punct'
     ),
     UDToken(
         id='3',
         text='взабраться',
         lemma='взобраться',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'VerbForm': 'Inf',
          'Voice': 'Mid'},
         head_id='0',
         rel='root'
     ),
     UDToken(
         id='4',
         text='на',
         lemma='на',
         pos='ADP',
         feats={},
         head_id='5',
         rel='case'
     ),
     UDToken(
         id='5',
         text='статую',
         lemma='статуя',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='3',
         rel='obl'
     ),
     UDToken(
         id='6',
         text='Христа',
         lemma='Христос',
         pos='PROPN',
         feats={'Animacy': 'Anim',
          'Case': 'Gen',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='5',
         rel='nmod'
     ),
     UDToken(
         id='7',
         text='-',
         lemma='-',
         pos='PUNCT',
         feats={},
         head_id='9',
         rel='punct'
     ),
     UDToken(
         id='8',
         text='только',
         lemma='только',
         pos='PART',
         feats={},
         head_id='9',
         rel='advmod'
     ),
     UDToken(
         id='9',
         text='что',
         lemma='что',
         pos='PRON',
         feats={'Case': 'Nom'},
         head_id='3',
         rel='parataxis'
     ),
     UDToken(
         id='10',
         text='!',
         lemma='!',
         pos='PUNCT',
         feats={},
         head_id='3',
         rel='punct'
     ),
     UDToken(
         id='11',
         text='😄',
         lemma='😄',
         pos='SYM',
         feats={},
         head_id='3',
         rel='discourse'
     )]
)

load_ud_pud

In [37]:
from corus import load_ud_pud

path = 'data/ud/ru_pud-ud-test.conllu'
records = load_ud_pud(path)
next(records)
Out[37]:
UDSent(
    id='n01010042',
    text='«Был момент, — сказал господин Панвалкар, — когда он чувствовал, что они должны покинуть здание».',
    attrs={'newdoc id': 'n01010',
     'english_text': 'There was a time, Mr Panvalkar said, when he felt that they should leave the building.'},
    tokens=[UDToken(
         id='1',
         text='«',
         lemma='«',
         pos='PUNCT',
         feats={},
         head_id='2',
         rel='punct'
     ),
     UDToken(
         id='2',
         text='Был',
         lemma='быть',
         pos='AUX',
         feats={'Aspect': 'Imp',
          'Gender': 'Masc',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         head_id='0',
         rel='root'
     ),
     UDToken(
         id='3',
         text='момент',
         lemma='момент',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='2',
         rel='nsubj'
     ),
     UDToken(
         id='4',
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='5',
         text='—',
         lemma='—',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='6',
         text='сказал',
         lemma='сказать',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'Gender': 'Masc',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         head_id='2',
         rel='parataxis'
     ),
     UDToken(
         id='7',
         text='господин',
         lemma='господин',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='6',
         rel='nsubj'
     ),
     UDToken(
         id='8',
         text='Панвалкар',
         lemma='Панвалкар',
         pos='PROPN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='7',
         rel='flat:name'
     ),
     UDToken(
         id='9',
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='10',
         text='—',
         lemma='—',
         pos='PUNCT',
         feats={},
         head_id='6',
         rel='punct'
     ),
     UDToken(
         id='11',
         text='когда',
         lemma='когда',
         pos='SCONJ',
         feats={},
         head_id='13',
         rel='mark'
     ),
     UDToken(
         id='12',
         text='он',
         lemma='он',
         pos='PRON',
         feats={'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing',
          'Person': '3'},
         head_id='13',
         rel='nsubj'
     ),
     UDToken(
         id='13',
         text='чувствовал',
         lemma='чувствовать',
         pos='VERB',
         feats={'Aspect': 'Imp',
          'Gender': 'Masc',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         head_id='3',
         rel='advcl'
     ),
     UDToken(
         id='14',
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         head_id='17',
         rel='punct'
     ),
     UDToken(
         id='15',
         text='что',
         lemma='что',
         pos='SCONJ',
         feats={},
         head_id='17',
         rel='mark'
     ),
     UDToken(
         id='16',
         text='они',
         lemma='они',
         pos='PRON',
         feats={'Case': 'Nom',
          'Number': 'Plur',
          'Person': '3'},
         head_id='17',
         rel='nsubj'
     ),
     UDToken(
         id='17',
         text='должны',
         lemma='должен',
         pos='ADJ',
         feats={'Degree': 'Pos',
          'Number': 'Plur',
          'Variant': 'Short'},
         head_id='13',
         rel='ccomp'
     ),
     UDToken(
         id='18',
         text='покинуть',
         lemma='покинуть',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'VerbForm': 'Inf',
          'Voice': 'Act'},
         head_id='17',
         rel='xcomp'
     ),
     UDToken(
         id='19',
         text='здание',
         lemma='здание',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Neut',
          'Number': 'Sing'},
         head_id='18',
         rel='obj'
     ),
     UDToken(
         id='20',
         text='»',
         lemma='»',
         pos='PUNCT',
         feats={},
         head_id='2',
         rel='punct'
     ),
     UDToken(
         id='21',
         text='.',
         lemma='.',
         pos='PUNCT',
         feats={},
         head_id='2',
         rel='punct'
     )]
)

load_ud_syntag

In [38]:
from corus import load_ud_syntag

path = 'data/ud/ru_syntagrus-ud-dev.conllu'
records = load_ud_syntag(path)
next(records)
Out[38]:
UDSent(
    id='2013Algoritm.xml_16',
    text='Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:',
    attrs={},
    tokens=[UDToken(
         id='1',
         text='Различные',
         lemma='различный',
         pos='ADJ',
         feats={'Case': 'Nom',
          'Degree': 'Pos',
          'Number': 'Plur'},
         head_id='2',
         rel='amod'
     ),
     UDToken(
         id='2',
         text='определения',
         lemma='определение',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Nom',
          'Gender': 'Neut',
          'Number': 'Plur'},
         head_id='9',
         rel='nsubj'
     ),
     UDToken(
         id='3',
         text='алгоритма',
         lemma='алгоритм',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Gen',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='2',
         rel='nmod'
     ),
     UDToken(
         id='4',
         text='в',
         lemma='в',
         pos='ADP',
         feats={},
         head_id='8',
         rel='case'
     ),
     UDToken(
         id='5',
         text='явной',
         lemma='явный',
         pos='ADJ',
         feats={'Case': 'Loc',
          'Degree': 'Pos',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='8',
         rel='amod'
     ),
     UDToken(
         id='6',
         text='или',
         lemma='или',
         pos='CCONJ',
         feats={},
         head_id='7',
         rel='cc'
     ),
     UDToken(
         id='7',
         text='неявной',
         lemma='неявный',
         pos='ADJ',
         feats={'Case': 'Loc',
          'Degree': 'Pos',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='5',
         rel='conj'
     ),
     UDToken(
         id='8',
         text='форме',
         lemma='форма',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Loc',
          'Gender': 'Fem',
          'Number': 'Sing'},
         head_id='9',
         rel='obl'
     ),
     UDToken(
         id='9',
         text='содержат',
         lemma='содержать',
         pos='VERB',
         feats={'Aspect': 'Imp',
          'Mood': 'Ind',
          'Number': 'Plur',
          'Person': '3',
          'Tense': 'Pres',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         head_id='0',
         rel='root'
     ),
     UDToken(
         id='10',
         text='следующий',
         lemma='следующий',
         pos='ADJ',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Degree': 'Pos',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='11',
         rel='amod'
     ),
     UDToken(
         id='11',
         text='ряд',
         lemma='ряд',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='9',
         rel='obj'
     ),
     UDToken(
         id='12',
         text='общих',
         lemma='общий',
         pos='ADJ',
         feats={'Case': 'Gen',
          'Degree': 'Pos',
          'Number': 'Plur'},
         head_id='13',
         rel='amod'
     ),
     UDToken(
         id='13',
         text='требований',
         lemma='требование',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Gen',
          'Gender': 'Neut',
          'Number': 'Plur'},
         head_id='11',
         rel='nmod'
     ),
     UDToken(
         id='14',
         text=':',
         lemma=':',
         pos='PUNCT',
         feats={},
         head_id='9',
         rel='punct'
     )]
)

load_morphoru_gicrya

In [39]:
from corus import load_morphoru_gicrya

path = 'data/morphoru/gikrya_new_test.out'
records = load_morphoru_gicrya(path)
next(records)
Out[39]:
MorphoSent(
    tokens=[MorphoToken(
         text='А',
         lemma='а',
         pos='CONJ',
         feats={},
         feats2=None
     ),
     MorphoToken(
         text='потом',
         lemma='потом',
         pos='ADV',
         feats={'Degree': 'Pos'},
         feats2=None
     ),
     MorphoToken(
         text='опять',
         lemma='опять',
         pos='ADV',
         feats={'Degree': 'Pos'},
         feats2=None
     ),
     MorphoToken(
         text='появлялись',
         lemma='появляться',
         pos='VERB',
         feats={'Mood': 'Ind',
          'Number': 'Plur',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Mid'},
         feats2=None
     ),
     MorphoToken(
         text='эсэсовцы',
         lemma='эсэсовец',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Plur'},
         feats2=None
     ),
     MorphoToken(
         text='.',
         lemma='.',
         pos='PUNCT',
         feats={},
         feats2=None
     )],
    attrs=()
)

load_morphoru_rnc

In [40]:
from corus import load_morphoru_rnc

path = 'data/morphoru/RNCgoldInUD_Morpho.conll'
records = load_morphoru_rnc(path)
next(records)
Out[40]:
MorphoSent(
    tokens=[MorphoToken(
         text='Кстати',
         lemma='кстати',
         pos='H',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='о',
         lemma='о',
         pos='ADP',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='вопросе',
         lemma='вопрос',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Loc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2={}
     ),
     MorphoToken(
         text='"',
         lemma='"',
         pos='PUNCT',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='Пушкин',
         lemma='Пушкин',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2={'NameType': 'Sur'}
     ),
     MorphoToken(
         text='и',
         lemma='и',
         pos='CONJ',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='святитель',
         lemma='святитель',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2={}
     ),
     MorphoToken(
         text='Филарет',
         lemma='Филарет',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2={'NameType': 'Giv'}
     ),
     MorphoToken(
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='митрополит',
         lemma='митрополит',
         pos='NOUN',
         feats={'Animacy': 'Anim',
          'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2={}
     ),
     MorphoToken(
         text='Московский',
         lemma='московский',
         pos='ADJ',
         feats={'Case': 'Nom',
          'Gender': 'Masc',
          'Number': 'Sing',
          'Variant': 'Full'},
         feats2={}
     ),
     MorphoToken(
         text='"...',
         lemma='"...',
         pos='PUNCT',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='ты',
         lemma='ты',
         pos='PRON',
         feats={'Case': 'Nom',
          'Number': 'Sing',
          'Person': '2'},
         feats2={}
     ),
     MorphoToken(
         text='надумал',
         lemma='надумать',
         pos='VERB',
         feats={'Gender': 'Masc',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         feats2={'Subcat': 'Tran',
          'Aspect': 'Perf'}
     ),
     MorphoToken(
         text=',',
         lemma=',',
         pos='PUNCT',
         feats={},
         feats2={}
     ),
     MorphoToken(
         text='что',
         lemma='что',
         pos='PRON',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Neut',
          'Number': 'Sing'},
         feats2={}
     ),
     MorphoToken(
         text='можно',
         lemma='можно',
         pos='ADV',
         feats={'Degree': 'Pos'},
         feats2={'Predic': 'Yes'}
     ),
     MorphoToken(
         text='сказать',
         lemma='сказать',
         pos='VERB',
         feats={'VerbForm': 'Inf',
          'Voice': 'Act'},
         feats2={'Subcat': 'Tran',
          'Aspect': 'Perf'}
     ),
     MorphoToken(
         text='?',
         lemma='?',
         pos='PUNCT',
         feats={},
         feats2={}
     )],
    attrs=['==> blogs.xhtml <==',
     '==newfile==']
)

load_morphoru_corpora

In [41]:
from corus import load_morphoru_corpora

path = 'data/morphoru/unamb_sent_14_6.conllu'
records = load_morphoru_corpora(path)
next(records)
Out[41]:
MorphoSent(
    tokens=[MorphoToken(
         text='«',
         lemma='«',
         pos='PUNCT',
         feats={},
         feats2=None
     ),
     MorphoToken(
         text='Школа',
         lemma='ШКОЛА',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Nom',
          'Gender': 'Fem',
          'Number': 'Sing'},
         feats2=None
     ),
     MorphoToken(
         text='злословия',
         lemma='ЗЛОСЛОВИЕ',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Gen',
          'Gender': 'Neut',
          'Number': 'Sing'},
         feats2=None
     ),
     MorphoToken(
         text='»',
         lemma='»',
         pos='PUNCT',
         feats={},
         feats2=None
     ),
     MorphoToken(
         text='учит',
         lemma='УЧИТЬ',
         pos='VERB',
         feats={'Aspect': 'Imp',
          'Mood': 'Ind',
          'Number': 'Sing',
          'Person': '3',
          'Tense': 'Notpast',
          'VerbForm': 'Fin'},
         feats2=None
     ),
     MorphoToken(
         text='прикусить',
         lemma='ПРИКУСИТЬ',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'VerbForm': 'Inf'},
         feats2=None
     ),
     MorphoToken(
         text='язык',
         lemma='ЯЗЫК',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         feats2=None
     )],
    attrs=()
)

load_gramru

In [42]:
from corus import load_gramru

path = 'data/gramru/GramEval_private_test.conllu'
records = load_gramru(path)
next(records)
Out[42]:
UDSent(
    id=None,
    text=None,
    attrs={},
    tokens=[UDToken(
         id='1',
         text='А',
         lemma='а',
         pos='CCONJ',
         feats={},
         head_id='5',
         rel='cc'
     ),
     UDToken(
         id='2',
         text='потом',
         lemma='потом',
         pos='ADV',
         feats={'Degree': 'Pos'},
         head_id='5',
         rel='advmod'
     ),
     UDToken(
         id='3',
         text='мы',
         lemma='мы',
         pos='PRON',
         feats={'Case': 'Nom',
          'Number': 'Plur',
          'Person': '1'},
         head_id='5',
         rel='nsubj'
     ),
     UDToken(
         id='4',
         text='все',
         lemma='весь',
         pos='DET',
         feats={'Case': 'Nom',
          'Number': 'Plur'},
         head_id='3',
         rel='det'
     ),
     UDToken(
         id='5',
         text='погрузились',
         lemma='погружаться',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'Mood': 'Ind',
          'Number': 'Plur',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Mid'},
         head_id='0',
         rel='root'
     ),
     UDToken(
         id='6',
         text='в',
         lemma='в',
         pos='ADP',
         feats={},
         head_id='7',
         rel='case'
     ),
     UDToken(
         id='7',
         text='автобус',
         lemma='автобус',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='5',
         rel='obl'
     ),
     UDToken(
         id='8',
         text='и',
         lemma='и',
         pos='CCONJ',
         feats={},
         head_id='9',
         rel='cc'
     ),
     UDToken(
         id='9',
         text='поехали',
         lemma='поехать',
         pos='VERB',
         feats={'Aspect': 'Perf',
          'Mood': 'Ind',
          'Number': 'Plur',
          'Tense': 'Past',
          'VerbForm': 'Fin',
          'Voice': 'Act'},
         head_id='5',
         rel='conj'
     ),
     UDToken(
         id='10',
         text='их',
         lemma='они',
         pos='PRON',
         feats={'Case': 'Acc',
          'Number': 'Plur',
          'Person': '3'},
         head_id='9',
         rel='obj'
     ),
     UDToken(
         id='11',
         text='в',
         lemma='в',
         pos='ADP',
         feats={},
         head_id='12',
         rel='case'
     ),
     UDToken(
         id='12',
         text='аэропорт',
         lemma='аэропорт',
         pos='NOUN',
         feats={'Animacy': 'Inan',
          'Case': 'Acc',
          'Gender': 'Masc',
          'Number': 'Sing'},
         head_id='13',
         rel='obl'
     ),
     UDToken(
         id='13',
         text='провожать',
         lemma='провожать',
         pos='VERB',
         feats={'Aspect': 'Imp',
          'VerbForm': 'Inf',
          'Voice': 'Act'},
         head_id='9',
         rel='xcomp'
     ),
     UDToken(
         id='14',
         text='.',
         lemma='.',
         pos='PUNCT',
         feats={},
         head_id='13',
         rel='punct'
     )]
)

load_corpora

In [43]:
from corus import load_corpora

path = 'data/annot.opcorpora.xml.byfile.zip'
records = load_corpora(path)
next(records)
Out[43]:
CorporaText(
    id='1000',
    parent_id='226',
    name='21820 Коморовский солидарен с Туском в оценке отчёта МАК',
    tags=['url:http://www.chaskor.ru/news/komorovskij_solidaren_s_tuskom_v_otsenke_otcheta_mak_21820',
     'Год:2011',
     'Дата:14/01',
     'Тема:ЧасКор:В мире',
     'Тема:ЧасКор:В мире/Европа'],
    pars=[CorporaPar(
         id='9865',
         sents=[CorporaSent(
              id='30908',
              text='Коморовский солидарен с Туском в оценке отчёта МАК',
              tokens=[CorporaToken(
                   id='553738',
                   rev_id='1386821',
                   text='Коморовский',
                   forms=[CorporaForm(
                        id='0',
                        text='коморовский',
                        grams=['UNKN']
                    )]
               ),
               CorporaToken(
                   id='553739',
                   rev_id='1386822',
                   text='солидарен',
                   forms=[CorporaForm(
                        id='328999',
                        text='солидарен',
                        grams=['ADJS',
                         'Qual',
                         'masc',
                         'sing']
                    )]
               ),
               CorporaToken(
                   id='553740',
                   rev_id='1386823',
                   text='с',
                   forms=[CorporaForm(
                        id='311151',
                        text='с',
                        grams=['PREP']
                    )]
               ),
               CorporaToken(
                   id='553741',
                   rev_id='4507175',
                   text='Туском',
                   forms=[CorporaForm(
                        id='390933',
                        text='туск',
                        grams=['NOUN',
                         'anim',
                         'masc',
                         'Sgtm',
                         'Surn',
                         'sing',
                         'ablt']
                    )]
               ),
               CorporaToken(
                   id='553742',
                   rev_id='1386825',
                   text='в',
                   forms=[CorporaForm(
                        id='37409',
                        text='в',
                        grams=['PREP']
                    )]
               ),
               CorporaToken(
                   id='553743',
                   rev_id='3540152',
                   text='оценке',
                   forms=[CorporaForm(
                        id='221498',
                        text='оценка',
                        grams=['NOUN',
                         'inan',
                         'femn',
                         'sing',
                         'loct']
                    )]
               ),
               CorporaToken(
                   id='553744',
                   rev_id='1386827',
                   text='отчёта',
                   forms=[CorporaForm(
                        id='219980',
                        text='отчёт',
                        grams=['NOUN',
                         'inan',
                         'masc',
                         'sing',
                         'gent']
                    )]
               ),
               CorporaToken(
                   id='553745',
                   rev_id='4495999',
                   text='МАК',
                   forms=[CorporaForm(
                        id='389925',
                        text='мак',
                        grams=['NOUN',
                         'inan',
                         'masc',
                         'Sgtm',
                         'Fixd',
                         'Abbr',
                         'Orgn',
                         'sing',
                         'gent']
                    )]
               )]
          ),
          CorporaSent(
              id='30909',
              text='Однако фундаментальных возражений к выводам комиссии у Варшавы нет.',
              tokens=[CorporaToken(
                   id='553746',
                   rev_id='2624489',
                   text='Однако',
                   forms=[CorporaForm(
                        id='203386',
                        text='однако',
                        grams=['INTJ']
                    ),
                    CorporaForm(
                        id='203387',
                        text='однако',
                        grams=['CONJ',
                         'Prnt']
                    )]
               ),
               CorporaToken(
                   id='553747',
                   rev_id='4312891',
                   text='фундаментальных',
                   forms=[CorporaForm(
                        id='368633',
                        text='фундаментальный',
                        grams=['ADJF',
                         'Qual',
                         'plur',
                         'gent']
                    )]
               ),
               CorporaToken(
                   id='553748',
                   rev_id='1386831',
                   text='возражений',
                   forms=[CorporaForm(
                        id='49606',
                        text='возражение',
                        grams=['NOUN',
                         'inan',
                         'neut',
                         'plur',
                         'gent']
                    )]
               ),
               CorporaToken(
                   id='553749',
                   rev_id='1386832',
                   text='к',
                   forms=[CorporaForm(
                        id='127460',
                        text='к',
                        grams=['PREP']
                    )]
               ),
               CorporaToken(
                   id='553750',
                   rev_id='1386833',
                   text='выводам',
                   forms=[CorporaForm(
                        id='56345',
                        text='вывод',
                        grams=['NOUN',
                         'inan',
                         'masc',
                         'plur',
                         'datv']
                    )]
               ),
               CorporaToken(
                   id='553751',
                   rev_id='4288196',
                   text='комиссии',
                   forms=[CorporaForm(
                        id='136905',
                        text='комиссия',
                        grams=['NOUN',
                         'inan',
                         'femn',
                         'sing',
                         'gent']
                    )]
               ),
               CorporaToken(
                   id='553752',
                   rev_id='3301950',
                   text='у',
                   forms=[CorporaForm(
                        id='352818',
                        text='у',
                        grams=['PREP']
                    )]
               )]
          )]
     )]
)

load_russe_hj

In [44]:
from corus import load_russe_hj

path = 'data/russe/sem/hj.csv'
records = load_russe_hj(path)
list(records)
Out[44]:
[RusseSemRecord(
     word1='автомобиль',
     word2='машина',
     sim=0.958333
 ),
 RusseSemRecord(
     word1='маг',
     word2='волшебник',
     sim=0.958333
 ),
 RusseSemRecord(
     word1='доллар',
     word2='бакс',
     sim=0.952381
 ),
 RusseSemRecord(
     word1='мальчик',
     word2='парень',
     sim=0.952381
 ),
 RusseSemRecord(
     word1='машина',
     word2='автомобиль',
     sim=0.952381
 ),
 RusseSemRecord(
     word1='кладбище',
     word2='погост',
     sim=0.916667
 )]

load_russe_rt

In [45]:
from corus import load_russe_rt

path = 'data/russe/sem/rt.csv'
records = load_russe_rt(path)
list(records)
Out[45]:
[RusseSemRecord(
     word1='аберрация',
     word2='год',
     sim=0.0
 ),
 RusseSemRecord(
     word1='аберрация',
     word2='человек',
     sim=0.0
 ),
 RusseSemRecord(
     word1='аберрация',
     word2='заблуждение',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абзац',
     word2='отрывок',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абзац',
     word2='время',
     sim=0.0
 ),
 RusseSemRecord(
     word1='абзац',
     word2='район',
     sim=0.0
 ),
 RusseSemRecord(
     word1='абиссиния',
     word2='население',
     sim=0.0
 )]

load_russe_ae

In [46]:
from corus import load_russe_ae

path = 'data/russe/sem/ae2.csv'
records = load_russe_ae(path)
list(records)
Out[46]:
[RusseSemRecord(
     word1='абажур',
     word2='торшер',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абажур',
     word2='люстра',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абажур',
     word2='лампа',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абажур',
     word2='свет',
     sim=1.0
 ),
 RusseSemRecord(
     word1='абажур',
     word2='ночник',
     sim=1.0
 )]

load_toloka_lrwc

In [47]:
from corus import load_toloka_lrwc

path = 'data/toloka/lrwc-1.1-aggregated.tsv'
records = load_toloka_lrwc(path)
list(records)
Out[47]:
[LRWCRecord(
     hyponym='автомобиль',
     hypernym='автомашина',
     genitive='автомашины',
     judgement=1.0,
     confidence=99.75
 ),
 LRWCRecord(
     hyponym='автомобиль',
     hypernym='автомототранспорт',
     genitive='автомототранспорта',
     judgement=1.0,
     confidence=99.96
 ),
 LRWCRecord(
     hyponym='автомобиль',
     hypernym='автомототранспортный',
     genitive='автомототранспортного',
     judgement=1.0,
     confidence=99.99
 ),
 LRWCRecord(
     hyponym='автомобиль',
     hypernym='автомототранспортное_средство',
     genitive='автомототранспортного_средства',
     judgement=1.0,
     confidence=99.99
 ),
 LRWCRecord(
     hyponym='автомобиль',
     hypernym='внедорожник',
     genitive='внедорожника',
     judgement=0.0,
     confidence=61.28
 ),
 LRWCRecord(
     hyponym='автомобиль',
     hypernym='железный_конь',
     genitive='железного_коня',
     judgement=0.0,
     confidence=77.76
 )]

load_simlex

In [48]:
from corus import load_simlex

path = 'data/simlex/ru_simlex965_tagged.tsv'
records = load_simlex(path)
list(records)
Out[48]:
[SimlexRecord(
     word1='авария_NOUN',
     word2='бедствие_NOUN',
     score=6.15
 ),
 SimlexRecord(
     word1='август_NOUN',
     word2='месяц_NOUN',
     score=2.85
 ),
 SimlexRecord(
     word1='авиация_NOUN',
     word2='полет_NOUN',
     score=6.77
 ),
 SimlexRecord(
     word1='эксцентричный_ADJ',
     word2='странный_ADJ',
     score=6.31
 ),
 SimlexRecord(
     word1='эластичный_ADJ',
     word2='гибкий_ADJ',
     score=7.92
 ),
 SimlexRecord(
     word1='элегантность_NOUN',
     word2='стиль_NOUN',
     score=6.46
 )]

load_omnia

In [49]:
from corus import load_omnia

path = 'data/ru_om1000a.x1_.xz'
docs = load_omnia(path)
next(docs)
Out[49]:
OmniaDoc(
    id='ta.ma.00000000',
    attrs={'file': 'corpus_arion_100198.txt',
     'path': 'Magazines/texts/corpus_arion_100198.txt'},
    pars=[OmniaPar(
         sents=[OmniaSent(
              tokens=[OmniaToken(
                   text='Алексей',
                   lemma='Алексей',
                   atag='Nn',
                   tag='Npmsny',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='Алехин',
                   lemma='Алехин',
                   atag='Nn',
                   tag='Npmsny',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='—',
                   lemma='--',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='Олег',
                   lemma='Олег',
                   atag='Nn',
                   tag='Npmsny',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='Чухонцев',
                   lemma='чухонцев',
                   atag='Nn',
                   tag='Npmsny',
                   ztag='1',
                   g=False
               )]
          )]
     ),
     OmniaPar(
         sents=[OmniaSent(
              tokens=[OmniaToken(
                   text='БЕСПОМОЩНОСТЬ',
                   lemma='беспомощность',
                   atag='Nn',
                   tag='Ncfsnn',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='ЛИРИКИ',
                   lemma='лирика',
                   atag='Nn',
                   tag='Ncfsgn',
                   ztag='1',
                   g=False
               )]
          )]
     ),
     OmniaPar(
         sents=[OmniaSent(
              tokens=[OmniaToken(
                   text='А.',
                   lemma='А.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='А.',
                   lemma='А.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='Вообще-то',
                   lemma='Вообще-то',
                   atag='Cj',
                   tag='C',
                   ztag='0',
                   g=False
               ),
               OmniaToken(
                   text='о',
                   lemma='о',
                   atag='Pp',
                   tag='Sp-l',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='поэзии',
                   lemma='поэзия',
                   atag='Nn',
                   tag='Ncfsln',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='лучше',
                   lemma='хорошо',
                   atag='Av',
                   tag='Rc',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='писать',
                   lemma='писать',
                   atag='Vb',
                   tag='Vmn----a-e',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text=',',
                   lemma=',',
                   atag='Zz',
                   tag=',',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='чем',
                   lemma='чем',
                   atag='Cj',
                   tag='C',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='говорить',
                   lemma='говорить',
                   atag='Vb',
                   tag='Vmn----a-e',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='...',
                   lemma='...',
                   atag='Zz',
                   tag='Afpmpaf',
                   ztag='0',
                   g=False
               )]
          )]
     ),
     OmniaPar(
         sents=[OmniaSent(
              tokens=[OmniaToken(
                   text='О.',
                   lemma='О.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='Ч.',
                   lemma='Ч.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='Ну',
                   lemma='ну',
                   atag='Pt',
                   tag='Q',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='да',
                   lemma='да',
                   atag='Pt',
                   tag='Q',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='.',
                   lemma='.',
                   atag='Zz',
                   tag='SENT',
                   ztag='1',
                   g=False
               )]
          ),
          OmniaSent(
              tokens=[OmniaToken(
                   text='На',
                   lemma='на',
                   atag='Pp',
                   tag='Sp-a',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='крайний',
                   lemma='крайний',
                   atag='Aj',
                   tag='Afpmsaf',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='случай',
                   lemma='случай',
                   atag='Nn',
                   tag='Ncmsan',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='—',
                   lemma='--',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='вести',
                   lemma='вести',
                   atag='Vb',
                   tag='Vmn----a-e',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='разговор',
                   lemma='разговор',
                   atag='Nn',
                   tag='Ncmsan',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='"',
                   lemma='"',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='из',
                   lemma='из',
                   atag='Pp',
                   tag='Sp-g',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='двух',
                   lemma='два',
                   atag='Nm',
                   tag='Mcm-g',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='углов',
                   lemma='угол',
                   atag='Nn',
                   tag='Ncmpgn',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='"',
                   lemma='"',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text=',',
                   lemma=',',
                   atag='Zz',
                   tag=',',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='письменно',
                   lemma='письменно',
                   atag='Av',
                   tag='R',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='...',
                   lemma='...',
                   atag='Zz',
                   tag='Afpmpaf',
                   ztag='0',
                   g=False
               )]
          )]
     ),
     OmniaPar(
         sents=[OmniaSent(
              tokens=[OmniaToken(
                   text='А.',
                   lemma='А.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='А.',
                   lemma='А.',
                   atag='Ab',
                   tag='Afpmpaf',
                   ztag='a',
                   g=False
               ),
               OmniaToken(
                   text='Что',
                   lemma='что',
                   atag='Pn',
                   tag='P--nsan',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='делать',
                   lemma='делать',
                   atag='Vb',
                   tag='Vmn----a-e',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='.',
                   lemma='.',
                   atag='Zz',
                   tag='SENT',
                   ztag='1',
                   g=False
               )]
          ),
          OmniaSent(
              tokens=[OmniaToken(
                   text='У',
                   lemma='у',
                   atag='Pp',
                   tag='Sp-g',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='нас-то',
                   lemma='нас-то',
                   atag='Pn',
                   tag='P--nsnn',
                   ztag='0',
                   g=False
               ),
               OmniaToken(
                   text='с',
                   lemma='с',
                   atag='Pp',
                   tag='Sp-i',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='вами',
                   lemma='вы',
                   atag='Pn',
                   tag='P-2-pin',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='устный',
                   lemma='устный',
                   atag='Aj',
                   tag='Afpmsnf',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='"',
                   lemma='"',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='формат',
                   lemma='формат',
                   atag='Nn',
                   tag='Ncmsnn',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='"',
                   lemma='"',
                   atag='Zz',
                   tag='-',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='.',
                   lemma='.',
                   atag='Zz',
                   tag='SENT',
                   ztag='1',
                   g=False
               )]
          ),
          OmniaSent(
              tokens=[OmniaToken(
                   text='Случайности',
                   lemma='случайность',
                   atag='Nn',
                   tag='Ncfsdn',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text=',',
                   lemma=',',
                   atag='Zz',
                   tag=',',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='недоговоренности',
                   lemma='недоговоренности',
                   atag='Nn',
                   tag='Ncfsdn',
                   ztag='0',
                   g=False
               ),
               OmniaToken(
                   text='неизбежны',
                   lemma='неизбежный',
                   atag='Aj',
                   tag='Afpmpns',
                   ztag='1',
                   g=True
               ),
               OmniaToken(
                   text='.',
                   lemma='.',
                   atag='Zz',
                   tag='SENT',
                   ztag='1',
                   g=False
               )]
          ),
          OmniaSent(
              tokens=[OmniaToken(
                   text='Но',
                   lemma='но',
                   atag='Cj',
                   tag='C',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='я',
                   lemma='я',
                   atag='Pn',
                   tag='P-1-snn',
                   ztag='1',
                   g=False
               ),
               OmniaToken(
                   text='все-таки',
                   lemma='все-таки',
                   atag='Pt',
                   tag='Q',
                   ztag='0',
                   g=False
               ),
               OmniaToken(
                   text='запасся',
                   lemma='запасся',
                   atag='Vb',
                   tag='Vmis-smm-e',
                   ztag='0',
                   g=False
               )]
          )]
     )]
)

load_ruadrect

In [50]:
from corus import load_ruadrect

path = 'data/toloka/ruadrect/task2_ru_test.tsv'
records = load_ruadrect(path)
next(records)
Out[50]:
RuADReCTRecord(
    tweet_id='892079521922416641',
    tweet='@A_Kapustin запретить на хрен..  недосмотр однако.. только прозак, только хардкор',
    label='0'
)

load_rudrec

In [51]:
from corus import load_rudrec

path = 'data/rudrec/rudrec_annotated.json'
records = load_rudrec(path)
next(records)
Out[51]:
RuDReCRecord(
    file_name='172744.tsv',
    text='нам прописали, так мой ребенок сыпью покрылся, глаза опухли, сверху и снизу на веках высыпала сыпь, ( 8 месяцев сыну)А от виферона такого не было... У кого ещё такие побочки, отзовитесь!1 Чем спасались?\n',
    sentence_id=0,
    entities=[RuDReCEntity(
         entity_id='*[0]_se',
         entity_text='виферона',
         entity_type='Drugform',
         start=122,
         end=130,
         concept_id='C0021735',
         concept_name=nan
     ),
     RuDReCEntity(
         entity_id='*[1]',
         entity_text='сыпью покрылся',
         entity_type='ADR',
         start=31,
         end=45,
         concept_id='C0015230',
         concept_name=nan
     ),
     RuDReCEntity(
         entity_id='*[2]',
         entity_text='глаза опухли',
         entity_type='ADR',
         start=47,
         end=59,
         concept_id='C4760994',
         concept_name=nan
     ),
     RuDReCEntity(
         entity_id='*[3]',
         entity_text='на веках высыпала сыпь',
         entity_type='ADR',
         start=76,
         end=98,
         concept_id='C0015230',
         concept_name=nan
     )]
)
In [ ]: