NLP: проверка правописания — взгляд изнутри (часть 3)

    (Часть 1, Часть 2) В прошлый раз я преждевременно упомянул токенизацию; теперь можно поговорить и о ней, а заодно и о маркировке частей речи (POS tagging).

    Предположим, мы уже выловили все ошибки (какие догадались выловить) на уровне анализа текста регулярными выражениями. Стало быть, пора переходить на следующий уровень, на котором мы будем работать с отдельными словами предложения. Разбиением на слова занимается модуль токенизации. Даже в столь простой задаче есть свои подводные камни. Я даже не говорю о языках вроде китайского и японского, где даже вычленение отдельных слов текста нетривиально (иероглифы пишут без пробелов); в английском или в русском тоже есть над чем подумать. Например, входит ли точка в слово-сокращение или представляет собой отдельный токен? («др.» — это один токен или два?) А имя человека? «J. S. Smith» — сколько здесь токенов? Конечно, по каждому пункту можно принять волевое решение, но в дальнейшем оно может привести к различным последствиям, и это надо иметь в виду.

    Примерно так я рассуждал на начальных этапах нашего проекта, теперь же склоняюсь к тому, что в задачах обработки текстов частенько приходится подчиняться решениям других людей. Это будет уже ясно на примере маркировки частей речи.

    Маркировка частей речи

    Зная разбиение предложения на слова, можно уже искать по тексту часто встречающиеся опечатки. Например, переправлять «egg yoke» на «egg yolk» (эта опечатка, видимо, так популярна, что о ней даже упоминает Википедия). Но настоящий прогресс по сравнению с регулярными выражениями обеспечивает маркировка частей речи, то есть сопоставление каждому слову текста его части речи:

    «I love big dogs.» -> «I_PRP love_VBP big_JJ dogs_NNS ._.»

    В этом примере используются следующие маркеры: PRP — местоимение; VBP — глагол настоящего времени, единственного лица, не третьего числа; JJ — прилагательное; NNS — существительное во множественном числе. Ну а точка — это просто точка.

    Зная части речи отдельных слов, можно формулировать более сложные паттерны ошибок. Например, «DT from» -> «DT form». Маркер DT обозначает «определяющее слово» — артикль или указатели вроде this/that. Если в тексте встретилось сочетание «the from» или «this from», скорее всего, это опечатка, и имелся в виду не предлог from, а «форма» — form. Можно ещё хитрее: «MD know VB» -> «MD now VB». Здесь идёт отлов опечатки «know вместо now» — паттерн «модальный глагол + know + глагол». Под него попадает, скажем, фраза «I can know say something more».

    Само собой, несложно реализовать простейшие операции, такие как «или» («если встретилось то или это») и отрицание («встретилось не это»). Именно на таких выражениях работает уже упомянутая система LanguageTool. Поскольку распространяется она по лицензии LGPL, я решил перенести все её правила в нашу систему. Почему бы и нет? Люди проделали большую работу, было бы глупо не воспользоваться результатами, коли разрешают. Об ограничениях этого подхода мы ещё поговорим, а пока вернёмся к маркировке частей речи.

    Наиболее популярный на сегодня способ POS-разметки сводится к той же самой задаче классификации, на сей раз уже в полном варианте. Мы даём на вход обучающемуся алгоритму слово и его контекст — обычно начальные и конечные символы слова, а также данные о предыдущих словах предложения — сами эти слова и соответствующие им части речи. Также мы сообщаем часть речи слова в текущем контексте, и алгоритм эту информацию запоминает. Если теперь подать на вход контекст, алгоритм сможет сделать разумную догадку о части речи.

    Здесь тоже частенько используют модель максимальной энтропии. Хотя можно бы и поиграться с другими алгоритмами. Например, существует разработка на основе support vector machines (SVMTool).

    Аннотированные корпусы, великие и ужасные

    В прошлый раз я не заострял на этом внимание, но теперь уж точно пора. Чтобы POS tagger заработал, его нужно натренировать на большой коллекции текстов, где каждому слову приписан тег части речи. Тогда возникает резонный вопрос: а где ж эту коллекцию взять?

    Такие коллекции («аннотированные корпусы») существуют, хотя их не так много. Чаще всего встречается POS-маркировка, реже — глубокое аннотирование, то есть маркировка синтактико-семантических связей между словами в предложении. Крупнейший глубоко аннотированный корпус английского языка называется Penn Treebank и содержит почти три миллиона слов. Хорошие корпусы существуют также для немецкого и русского — это из тех, что я лично изучал.

    Теперь подумаем вот о чём. Существуют языковые тонкости, относительно которых различные лингвисты придерживаются различных мнений. Например, сколько падежей в русском языке? Ответ школьника — шесть, однако я могу назвать, по крайней мере, восемь-девять. В английском языке какой частью речи является слово book в сочетании book market? Я бы сказал, что это прилагательное, но можно отстаивать и трактовку как «существительного в роли прилагательного».

    Таким образом, можно по-разному размечать текст, исходя из каких-либо лингвистических или практических соображений. К сожалению, наши соображения вряд ли воплотятся в итоговой системе, ибо пользуясь готовым корпусом, мы вынужденно принимаем правила игры его разработчиков. Если я тренирую POS tagger на корпусе Penn Treebank, придётся смириться, что «book» в роли прилагательного всё равно трактуется как существительное. Кому не нравится — может создавать свой собственый корпус и размечать его по своему усмотрению.

    Аналогично, в Penn Treebank знак препинания всегда является отдельным токеном, поэтому запись «etc.» — это два токена, а «J. S. Smith» — пять токенов, даже если это соглашение для меня неудобно. Выбора нет. Это, кстати, к вопросу о наличии лингвистов в проекте. Если бы у меня были неограниченные бюджеты и куча времени, можно было бы попытаться сделать полностью свою систему, воплощающую наши взгляды на проверку правописания. Однако в реальных условиях существующие NLP инструменты и текстовые корпусы направляют действия по достаточно чёткому маршруту, оставля не так уж и много простора для фантазии.

    Да, ещё замечание. Естественно, готовые коллекции содержат корректные тексты, лишённые явных грамматических ошибок. Что это значит для нас? Ну, возьмём тот же POS tagger. Сначала мы его тренируем на корректных текстах (где он никогда не видит сочетаний вроде «I has»), а потом используем его для маркировки слов в текстах с ошибками. Будет ли он столь же хорош в новых условиях? Да кто ж его знает; но создавть корпус с типичными ошибками ради тренировки разметчика для нас слишком большая роскошь.

    Продолжим в следующей части.
    Поделиться публикацией

    Похожие публикации

    Комментарии 50
    • НЛО прилетело и опубликовало эту надпись здесь
        +2
        Думаю, при описанном сценарии уровень дебильности пользователя всегда будет превышать способности системы этот уровень преодолевать :))
        Для меня самого в Ворде вполне хватает коррекции опечаток. Опечатки у всех бывают. Впрочем, иногда и сочетаемость слов полезно проверить — бывает, написал абзац, потом заменил «я» на «мы» или наоборот, а глагол остался.

        Но самое главное — это помощь тем, для кого язык сочиняемого текста — не родной. Тут любая помощь полезна.

        Ещё такое соображение: дебильный пользователь сочинит дебильный текст. Даже если текст будет грамматически верен, умнее от этого сочинение не станет.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            А вот если бы вы проверили свой текст перед отправкой с помощью системы проверки правописания, читать его было бы приятнее.
        0
        Насколько я понимаю, еще один вариант POS Tagging — это обучение без учителя. Т.е. скорее всего можно взять много текстов, поделить их по словоформам и выделить классы. Вероятно, что эти классы будут более-менее соответствовать частям речи.

        Ну и возможны смешанные варианты, конечно(semisupervised learning).
          0
          Как это? Я ещё понимаю, в русском, например, есть окончания, а в английском? Как он догадается, что red — это прилагательное, read — глагол, а bread — существительное?
            0
            Смотреть не только на отдельные словоформы, но и на контекст, кажем ± 2 слова.
            Насколько я понимаю, примерно так работает hmm-подход(конечно, в этом случае есть только левый контекст).

            Кроме того, скорее всего это очень сильно зависит от количества тегов — есть же деление на fine-grained POS, и coarse-grained POS.
          0
          Жаль, что всё это для английского. Хотелось бы видеть это в применении к русскому языку. И так материалы по NLP практически все на английском, хотя бы что-то было бы на русском
            0
            Вообще-то нигде ничего на язык не завязано. Я лишь привожу примеры для разных языков. Для английского примеры просто берутся из личной практики — так удобнее. А так — все алгоритмы работают без изменений и для нашего языка.
            0
            Хорошая статья, спасибо.
            На счет правил в LanguageTool. Скажите, а сколько их там? Есть ощущение, что их много, и писать их и поддреживать не так просто.
              +1
              Вот полная таблица. Да, я думаю, непросто, но выбора нет.
                0
                Не так много, как я думал, но все же.
                Я к тому, может, как то статистически это отработать. Идей как это сделать нет, но есть ощущение, что можно. Через тот же machine learning/svm.
                  0
                  Ну тогда для этого нужны примеры как корректных предложений, так и ошибочных.

                  Вообще если был аннотированный корпус предложений с ошибками — это было бы круто. Но нет такого :(
                    0
                    Я находил один для английского: www.dcs.bbk.ac.uk/~jenny/Downloads/CorpusFiles.zip

                    Правда, там маловато ошибок.
                    А в целом, да хороших юзабельных корпусов ошибок на связных текстах не встречал.
                      0
                      А, товарищ Фостер, да, знаю её.
                      Но там речь идёт только об опечатках, и корпус не столь велик (около 1000 предложений по-моему?)
                        0
                        Ога, всего 673 строк.
              0
              Например, сколько падежей в русском языке? Ответ школьника — шесть, однако я могу назвать, по крайней мере, восемь-девять.

              Интересно, это какие еще есть падежи в дополнение к этим 6-ти? :)
                +1
                Ну, из совсем очевидного:

                1) звательный («Миш!», «Гриш!», «Господи!»);
                2) локатив («о лесе» — предложный, «в лесу» — локатив);
                3) партитив («кусочек сахару» — «производство сахара»; «ещё чаю!» — «нет чая»)
                  0
                  Я думаю, что не все из этих примеров корректны (хотя специалистом по русскому языку не могу себя назвать). От того, что Вы выбросили окончание или изменили его, падеж не должен измениться.

                  1) отвечает на вопрос «Кто?» (или «Что?») — именительный падеж
                  2) тут сложно что-то придумать :)
                  3) отвечает на вопрос «Кого?» (или «Чего?») — родительный падеж. Какая разница между «кусочек сахара» и «кусочек сахару»?
                    +1
                    Мы приходим к полуфилософскому вопросу о том, что такое падеж. Если на вопрос «кто?» отвечают слова «Гриша» и «Гриш», как тогда это трактовать? Падеж чётко соответствует некоей языковой ситуации; слова «Гриш» и «Гриша» нельзя использовать наравне, так же как и «сахара-сахару».

                    А понять различия проще всего сравнивая с другими языками, где данные падежи используются более широко. Например, звательный падеж (насколько знаю) широко ходит в украинском — пусть знатоки поправят.

                    Партитив очень распространён в финском — он используется вместо винительного падежа обязательно с некоторыми глаголами («я люблю Х» — Х всегда в партитиве), а также когда речь идёт о части или веществе в противовес целому (в русском тоже есть разница — «дай мне чашку и налей молока» — почему тарелка в одном падеже, а молоко в другом?)

                    Кусочек сахару может быть, потому что это часть целого; а производство сахару быть не может, потому что производим вещество «сахар».
                      0
                      *чашка, тарелка… :)
                        0
                        Ваши познания в данной области несравненно больше моих, поэтому дискутировать дальше наверное нет смысла :)

                        Поскольку моим вторым родным языком является украинский, то да, соглашусь, что в нем звательный падеж используется широко. Имена в этом случае часто оканчиваются на -ко, -ку (хотя, конечно, это далеко не единственные возможные окончания).
                  0
                  Гулять в лесу.
                  Коль, подойди.
                  Ждать у моря погоды.
                  Подался в лингвисты.

                  0
                  Наверное, я далеко не первый, кто задаётся этим вопросом, но всё же: насколько тяжело (человеко-лет, мешко-денег) создать полную математическую модель русского (английского, удмуртского, албанского, etc.) языка? Со всеми буквами, слогами, словами, словоформами, словосочетаниями, членами предложений, частями слова и речи, падежами, склонениями, спряжениями, пунктуацией и прочими понятиями, которые я сейчас припомнить не могу.
                    +1
                    Вопрос в том, что конкретно понимается под математической моделью языка. Что она должна уметь?

                    В том или ином виде модели и сейчас существуют.
                      0
                      Полная математическая модель должна выполнять любые функции, которые могут придти на ум:
                      — компиляция (в первой или второй части вы о ней упомянули, кажется) текста;
                      — анализ (частичный или полный) текста — составление модели текста в том или ином виде для дальнейшей обработки информации или как входные данные для других систем;
                      — синтез текста — здесь вообще море идей от «очеловечивания» домашних ОС до написания 100 новых романов Донцовой;
                      — самообучение — попытка анализа незнакомых модели языковых конструкций с точки зрения уже известных, плюс внесение с согласия оператора этих конструкций в базу модели.

                      Прошу заметить, я не говорю об ИИ, я говорю о модели языка, которая может стать отличным инструментом для учёных и инженеров совершенно разных областей.
                        +1
                        Ну, если совсем коротко, то машинный перевод во многом считается одной из самых сложных связанных с этим делом областей — где и обкатываются многие теории и модели. Как мы видим, успехи переменные.

                        Сложно назвать сходу одну сверх-проблему. Наверно, можно сказать, что идеального решения даже самой простой задачи в нашей области нужен полноценный интеллект. Вот буквально сегодня видел сравнение: «Jane and Mary are sisters; July and Ann are mothers.»

                        Вроде бы грамматически одно и то же, однако в первом случае понятно, что девушки — сёстры друг другу, а во втором — обе женщины имеют детей. Это можно понять лишь хорошо зная мир вокруг, а он меняется постоянно и слишком сложен для прямого моделирования.

                        И так во всём — если по-русски мы говорим «брат-сестра», то японцы обычно уточняют — «старший/младший брат/сестра». Значит, нужен широкий контекст входного документа, чтобы адекватно перевести кусок… а ведь формально машинный перевод — это просто отображение одного языка в другой, трансляция данных без преобразования.
                          0
                          Я пока что не говорю про перевод. Для каждого языка будут совершенно разные модели языков. Вообще проблема перевода, на мой взгляд, самая сложная из всех связанных с языками, она абсолютно точно относится к интеллектуальным задачам. Вы меня поправите, если я не прав, но, наверное, только 85% всех текстов, исполненных на каком-либо языке, вообще возможно перевести на другие языки.

                          Я же пока что говорю о составлении модели текста (пока без ошибок, если уж упрощать задачу), следуя всем правилам из учебника русского языка. Решать проблемы по мере их поступления, как сказать.
                          0
                          Поясню про анализ текста и составление его модели. К примеру, я хочу подключить свободный пользовательский ввод к какой-либо программе. Пользователь пишет на свободном языке, используя термины того тезауруса, который ему доступен на данный момент. Понятное дело, что программа не поймёт всё, что хочет от ней пользователь, но тут на помощь приходит матмодель языка. Ей известно (декларативно), что понимает программа, и пытается в диалоговом режиме добиться от пользователя инструкций.

                          Пользовательница пишет:
                          — Я сохранить хочу этот документик на моей розовой флешке, пожалуйста.

                          Матмодель пишет:
                          — О_о?

                          Матмодель распознаёт ввод, исправляет ошибки, строит модель, отсекает ненужные программе части этой получившийся модели, у неё остаётся это:
                          — открыть диалоговое окно сохранения документа со стартовым местоположением на диске F:\

                          Пользовательница подтверждает, что именно это она и хочет, модель отдаёт команду программе, та исполняет.

                          P.S.: Понятно, что это всё совсем не нужно, ибо давно придумана иконка «Сохранить», но мне хотелось раскрыть смысл и привести самый простой базовый пример.
                            0
                            Обычно, это не мат. моделью называется.
                            Лингвисты выделяют отдельные ступени, и задействуют их при решении каких-то задач.

                            К примеру, для поиска синонимов обычно достаточно почистить текст и заюзать морфологию.
                            Для вытаскивания фактов точно понадобится синтаксис.
                            А для вашей задачи — полный набор: морфология, синтаксис, семантика, прагматика + спелл-чекер в придачу.

                            Да, и еще задачу сильного АИ решить, чтоб перед записью уточнил, что за розовую флешку вы имели ввиду :)

                            Вобщем, сложно это. Сейчас решаются только сильно ограниченные задачи, да и то с ограничениями :).

                              0
                              Мой пример — это только одна сторона мат. модели, на мой взгляд. В принципе, неважно, как это будет называться, лишь бы свои функции выполняло.

                              Можно поподробнее про семантику, синтаксис и прагматику, что вы имели в виду? Я не силён в лингвистике, я больше программист, хотелось бы разобраться в вашей мысли.

                              > Да, и еще задачу сильного АИ решить, чтоб перед записью уточнил, что за розовую флешку вы имели ввиду :)

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

                              > Вобщем, сложно это. Сейчас решаются только сильно ограниченные задачи, да и то с ограничениями :).

                              Прекрасно понимаю, что сложно, у меня нет даже представления о том, насколько сложно. Именно поэтому в корневом комментарии и задал вопрос, насколько сложно? У вас, кстати, есть примеры решения таких ограниченных задач, пусть даже с ограничениями? =) Только интересные какие-нибудь примеры.
                                0
                                Слово «мат. модель» меня вообще применительно к языку смущает. Что это — уравнение? Набор ограничений?

                                Если очень грубо провести параллель между человеческим языком и языком программирования, то ваш пример — это «программирование действий» на естественном языке. И тогда речь идёт об «интерпретаторе языка», где фраза задаёт действие.

                                Но проблема в том, что возможности естественного языка шире. На Паскале можно только командовать, а по-русски можно сказать «небо синее», вот и всё.

                                Ну а простые текстовые команды… гм, вспомним квесты восьмидесятых годов, там это всё реализовано — «иди на восток», «подбери ключи»…
                                  0
                                  Не нужно цепляться к слову «программирование». =) Я прекрасно понимаю разницу между естественными языками и языками программирования, не сомневайтесь.

                                  Как уверяет Wikipedia:
                                  Математи́ческая моде́ль — это математическое представление реальности.

                                  Таким образом, под мат. моделью я понимаю некую структуру, описывающую и хранящую все знания о естественном языке. О всех его структурных составляющих (в том числе база слов, синонимов, шуток-прибауток, etc.), о связях между ними (синий, красный — категория «цвет») и других аспектах языка.

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

                                  Но «синее небо» мат. модель тоже должна описать, только уже в других условиях. Результатом будет граф текста, лексический разбор, возможные тематики, да бог знает, что ещё! Как же использовать этот результат, это уже другая задача, другой вопрос.
                                    0
                                    > Математи́ческая моде́ль — это математическое представление реальности.
                                    Ну, очень мило, кошка — это кошка. Что такое «математическое»? Вот если так, шаг за шагом, описывать конкретику, то станет ясно, что в абсолютно любую сторону можно копать бесконечно. Стало быть, «математическая модель» превращается в очень грубое приближение, которое NLP с каждым годом пытается расширять, но довольно скудно. Прорыва пока нет.

                                    По отдельности разные вещи существуют. Есть, например, проект Cyc, ознакомьтесь. Есть WordNet. Есть трибанки. Всё это и есть составляющие мат. модели, описывающие различные аспекты языка. Но соединить всё вместе не получается.

                                    Ну а чем вам пример с text adventure не нравится? В принципе, эти системы восьмидесятых можно поднять при нынешних возможностях на качественно новый уровень. Просто оказалось, что тыкать мышью проще, чем набирать текст.
                                      0
                                      Хорошо, признаю свою несостоятельность в способности изложить свои мысль и идею. Забываю слова «математическая модель».

                                      > Ну а чем вам пример с text adventure не нравится?

                                      С чего вы взяли, что пример не нравится? =) Я его не комментировал. Эти MUD я сам делал в большом количестве, как вариации движков (простые, с триггерами, скриптами, вероятностями и прочими рюшечками), так и сам контент. Ничего хорошего не вышло, так как разрабатывать приходилось как анализ пользовательского ввода, так и возможности самих игр, а опыта было поменьше… В общем, ничего хорошего. Но не о том речь, я повторюсь: распознавание пользовательского командного ввода — лишь одно из возможных применений… системы.

                                      Почему я вообще завёл об этом разговор — дальнейшее развитие — привязывание этого распознавания к распознаванию речи. А это всяко удобнее, чем тыкать мышью.

                                      «Проект Сус» найти не смог. =(
                                        0
                                          0
                                          Классная штука этот проект, да. Но похожие базы знаний в упрощённом виде делались ещё на LISP аж в 60-е. Жаль, что принципиально дальше не продвинулись.
                                          0
                                          Кстати, не думаю, что речевой интерфейс тоже удобнее. Мышкой перетащить десять файлов или сказать «выдели файлы в текущей папке со второго по двадцатый, кроме третьего, и удали с возможностью восстановления».
                                            0
                                            Откуда столько скептицизма? Это же магия! Волшебство!

                                            В примере с выборочным удалением файлов — да, удобнее мышью это сделать, но ведь я и не призываю от неё отказаться. Но зато как классно было бы говорить:
                                            — отложи страничку, потом почитаю;
                                            — не понял, что это оно упало?;
                                            — я дам тебе флешку, а ты спрячь куда-нибудь всё с неё и через год напомни удалить;
                                            — запусти какую-нибудь игрушку, у меня есть 10 минут перед выходом;
                                            — спи, моя радость, усни.

                                            Да сколько всего можно придумать! И всё это возможно двумя способами:
                                            — доступным на данный момент: писать каждый паттерн в каком-нибудь Горыныче;
                                            — недоступным на данный момент: анализировать и распознавать речь, составлять модель сказанного, вычленять смысл с оглядкой на возможности ОС или её прослойки.
                                    0
                                    Я не видел реально работающих. Самому интересно.

                                    Я видел демки систем. Одна из них — бронирование авиабилетов, другая — справочник по городу. На входе — речь. На выходе — купленный билет или справка.
                                    Но в живую и в реальности я таких фокусов не видел. Может быть, где-то все же есть.

                                    Если интересует как это все может работать и на сколько сложно — гляньте книжку Artificial Intelligence: A Modern Approach. Там довольно подробно обсуждаются проблемы и решения в этой теме.

                                    ps искусственный интеллект это и есть математика )
                                      0
                                      Хорошо, посмотрю книгу, спасибо.
                                        0
                                        PDF найти не смог ни платный, ни бесплатный. На OZON книга стоит 4557 рублей. Вопрос: нет ли какого-то более доступного способа ознакомиться с книгой? =)

                                        P.S.: Всё есть математика в силу определения слова математика. =)
                                          +1
                                          Да есть, конечно. Смотрите личку.
                                            0
                                            На Амазоне второе английское издание (на основе которого сделан русский перевод) начинается с 20 долларов. Потому что уже третье вышло.
                              0
                              Спасибо за статьи, видимо, буду по этой теме писать диплом.
                                0
                                Друзья, прочитав статью, пошел искать больше информации, наткнулся на SynTagRus но нигде не могу найти ее чтобы скачать, буду очеееень благодарен за линк, если таковой существует конечно

                                упоминание есть вот тут: en.wikipedia.org/wiki/Treebank в разделе List of treebanks sorted by language

                                а возможно есть еще какие базы для русского?
                                  0
                                  Синтагрус дают скачать для noncommercial research purposes по договорённости.
                                  Т.е. надо связаться с авторами и попросить.
                                    0
                                    получил ответ по поводу syntagrus

                                    для поиска по корпусу синтаксически, лексико-функционально и морфологически аннотированных текстов
                                    можно воспользоваться сайтом ruscorpora.ru, поддерживаемом компанией «Яндекс».

                                    Сам корпус предоставляется заинтересованным академическим институтам бесплатно
                                    после заключения лицензионного соглашения с ИППИ РАН (правообладатель).

                                    Коммерческие организации могут приобрести лицензию на использование корпуса в своих целях.


                                    вот такие пироги…
                                    0
                                    Есть ещё различные корпусы, упоминаемые в этой презентации:
                                    — Национальный корпус русского языка (НКРЯ) от ИРЯ Виноградова РАН, ИЯз РАН, ИППИ РАН,… (пример)
                                    — Уппсальский корпус (Uppsala Russian Corpus; пример)
                                    Тюбингенский корпус
                                    ХАНКО (хельсинский корпус)

                                    Но вообще, я за то, чтобы всем вместе делать общий корпус под лицензией Creative Commons тут: opencorpora.org. Это возможно прямо на сайте!
                                    0
                                    Искусственный интеллект — слишком сложно. Искусственный инстинкт- более реалистично. ;))

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое