|
1 |
| -plainrussian |
| 1 | +Plain Russian Language / Понятный (простой) русский язык. |
2 | 2 | ============
|
3 | 3 |
|
4 |
| -Plain Russian Language / Понятный (простой) русский язык. |
| 4 | +# Зачем всё это нужно |
| 5 | +Оценка читаемости текстов необходима для автоматического определения сложности текстов на русском языке. |
| 6 | + |
| 7 | +# Что было сделано |
| 8 | +Есть 5 американских алгоритмов оценки читаемости текстов, это: |
| 9 | +* Flesch-Kinkaid - http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests |
| 10 | +* Dale-Chale readability formula - http://en.wikipedia.org/wiki/Dale%E2%80%93Chall_readability_formula |
| 11 | +* Coleman-Liau index - http://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index |
| 12 | +* SMOG - http://en.wikipedia.org/wiki/SMOG |
| 13 | +* Automated Readability Index - http://en.wikipedia.org/wiki/Automated_Readability_Index |
| 14 | + |
| 15 | +Были накоплены тексты на русском языке с разметками по уровню чтения, это: |
| 16 | +* тексты для внеклассного чтения; |
| 17 | +* экспертно размеченные взрослые тексты; |
| 18 | +* особо сложные тексты законов; |
| 19 | +* и так далее. |
| 20 | + |
| 21 | +Все алгоритмы были обучены под русский язык - специальным образом каждая формула была подобрана на основе обучающей выборки. |
| 22 | +Для всех формул были применены коэффициенты позволяющие применять их к русским текстам. |
| 23 | + |
| 24 | +На базе этих формул был сделан специальный веб-сервис который позволяет передавать ему текст или ссылку и оценивать его на сложность. |
| 25 | + |
| 26 | +# Как работает API |
| 27 | + |
| 28 | +API доступно по ссылке и http://api.plainrussian.ru/api/1.0/ru/measure/ |
| 29 | +и для его работы ему необходимо передать параметр url (для ссылки) или text (как текст). |
| 30 | + |
| 31 | +Параметр url передается при обращении через GET запрос, пример такого обращения выглядит вот так: |
| 32 | +- http://api.plainrussian.ru/api/1.0/ru/measure/?url=http://minsvyaz.ru/ru/news/index.php?id_4=44264 |
| 33 | + |
| 34 | +вот с примером простого текста: |
| 35 | +- http://api.plainrussian.ru/api/1.0/ru/measure/?url=http://www.anekdot.ru/id/674877/ |
| 36 | + |
| 37 | +или вот: |
| 38 | +- http://api.plainrussian.ru/api/1.0/ru/measure/?url=http://www.gosuslugi.ru/pgu/cms/content/isr/view/00000000000/290/309&debug=1 |
| 39 | + |
| 40 | +Результат выглядит вот так: |
| 41 | + |
| 42 | + ` ` |
| 43 | + `{` |
| 44 | + `metrics: ` |
| 45 | + `{` |
| 46 | + `wsyllabes: ` |
| 47 | + `{` |
| 48 | + `1: 94,` |
| 49 | + `2: 116,` |
| 50 | + `3: 140,` |
| 51 | + `4: 87,` |
| 52 | + `5: 139,` |
| 53 | + `6: 45,` |
| 54 | + `7: 18,` |
| 55 | + `8: 4,` |
| 56 | + `15: 1` |
| 57 | + `},` |
| 58 | + `c_share: 32.142857142857146,` |
| 59 | + `chars: 6000,` |
| 60 | + `avg_slen: 46,` |
| 61 | + `spaces: 510,` |
| 62 | + `n_syllabes: 2232,` |
| 63 | + `n_words: 644,` |
| 64 | + `letters: 5170,` |
| 65 | + `n_sentences: 14,` |
| 66 | + `n_complex_words: 207,` |
| 67 | + `n_simple_words: 437,` |
| 68 | + `avg_syl: 3.4658385093167703` |
| 69 | + `},` |
| 70 | + `status: 0,` |
| 71 | + `indexes: ` |
| 72 | + `{` |
| 73 | + `grade_SMOG: "Аспирантура, второе высшее образование, phD",` |
| 74 | + `grade_ari: "Аспирантура, второе высшее образование, phD",` |
| 75 | + `index_fk: 33.342906832298134,` |
| 76 | + `grade_cl: "Аспирантура, второе высшее образование, phD",` |
| 77 | + `grade_fk: "Аспирантура, второе высшее образование, phD",` |
| 78 | + `index_cl: 23.062857142857148,` |
| 79 | + `grade_dc: "Аспирантура, второе высшее образование, phD",` |
| 80 | + `index_dc: 30.300857142857147,` |
| 81 | + `index_ari: 32.11796894409938,` |
| 82 | + `index_SMOG: 34.046178356649776` |
| 83 | + `}` |
| 84 | + `} ` |
| 85 | + |
| 86 | +Кроме того, вместо параметра url можно использовать text, чтобы при запросе передавался текст, а не гиперссылка на текст. Вместо GET-запроса имеет смысл использовать POST, чтобы обойти ограничение на размер URI. |
| 87 | +Пример того, как это выглядит в Python с использованием библиотеки requests: |
| 88 | + |
| 89 | + import requests |
| 90 | + text = "Здесь может быть Ваш текст" |
| 91 | + response = requests.post("http://api.plainrussian.ru/api/1.0/ru/measure/", data={"text":text}) |
| 92 | + response.json() |
| 93 | + |
| 94 | +Параметры означают: |
| 95 | +## indexes - набор индикаторов читаемости текста: |
| 96 | +* grade_SMOG - уровень образования необходимый для понимания текста по формуле SMOG, человеческим языком |
| 97 | +* grade_ari - уровень образования необходимый для понимания текста по формуле Automated Readability Index, человеческим языком |
| 98 | +* grade_cl - уровень образования необходимый для понимания текста по формуле Coleman-Liau, человеческим языком |
| 99 | +* grade_fk - уровень образования необходимый для понимания текста по формуле Flesch-Kinkaid, человеческим языком |
| 100 | +* grade_dc - уровень образования необходимый для понимания текста по формуле Dale-Chale, человеческим языком |
| 101 | +* index_SMOG - уровень образования необходимый для понимания текста по формуле SMOG, в годах обучения от 1 до бесконечности |
| 102 | +* index_ari - уровень образования необходимый для понимания текста по формуле Automated Readability Index, в годах обучения от 1 до бесконечности |
| 103 | +* index_cl - уровень образования необходимый для понимания текста по формуле Coleman-Liau, в годах обучения от 1 до бесконечности |
| 104 | +* index_fk - уровень образования необходимый для понимания текста по формуле Flesch-Kinkaid, в годах обучения от 1 до бесконечности |
| 105 | +* index_dc - уровень образования необходимый для понимания текста по формуле Dale-Chale, в годах обучения от 1 до бесконечности |
| 106 | + |
| 107 | +## metrics - набор расчетных показателей из текста |
| 108 | +* chars - сколько всего знаков тексте |
| 109 | +* spaces - сколько пробелов в тексте |
| 110 | +* letters - сколько букв в тексте |
| 111 | +* n_words - число слов |
| 112 | +* n_sentences - число предложений |
| 113 | +* n_complex_words - число слов с более чем 4-мя слогами |
| 114 | +* n_simple_words - число слов до 4-х слогов включительно |
| 115 | +* avg_slen - среднее число слов на предложение |
| 116 | +* avg_syl - среднее число слогов на предложение |
| 117 | +* c_share - процент сложных слов от общего числа |
| 118 | +* w_syllabes - словарь из значений: число слогов и число слов с таким числом слогов в этом тексте |
| 119 | + |
| 120 | +Если передать параметр debug=1, то также вернется значение текста которое было передано. |
| 121 | + |
| 122 | +Вот несколько примеров текстов на которых шло обучение. |
| 123 | +- Бианки "Лесной дом", 1-й класс - http://api.plainrussian.ru/api/1.0/ru/measure/?url=http://plainrussian.ru/textsbygrade/1/bianki_lesdom.txt |
| 124 | +- Астафьев "Солдат", 9-й класс - http://api.plainrussian.ru/api/1.0/ru/measure/?url=http://plainrussian.ru/textsbygrade/9/astafiev_soldier.txt |
| 125 | +и так много документов. |
| 126 | + |
5 | 127 |
|
6 |
| -Данный проект создан для того чтобы собрать в одном месте разрозненный код, тексты и материалы по понятности / простоте / ясности русского языка. |
7 | 128 |
|
8 |
| -* readability.io - доступное API сервиса readability.io - https://github.com/ivbeg/readability.io/wiki/API |
9 |
| -* textmetric - примеры текстов и метрика расчета читаемости текстов. |
| 129 | +* textmetric - библиотека кода для измерения простоты русского языка |
10 | 130 |
|
11 | 131 |
|
12 | 132 | Текстовые файлы в textmetric - это специально подобранные тексты с предварительными возрастными пометками. Это позволяет разрабатывать собственные алгоритмы анализа читабельности, простоты, понятности текстов на базе этих метрик.
|
|
0 commit comments