Автоматическое определение типов вопросительных предложений русского языка

Методы типологизации вопросительных предложений. Автоматическая типологизация вопросительных предложений русского языка с использованием метода регулярных выражений. Применение алгоритмов глубинного обучения в классификации вопросительных предложений.

Рубрика Иностранные языки и языкознание
Вид дипломная работа
Язык русский
Дата добавления 04.12.2019
Размер файла 276,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Широко известно, что представление текста - одна из ключевых проблем в связанных с автоматической обработкой естественного языка задачах машинного обучения, например, таких, в классификации. Один из наиболее распространенных подходов к отбору признаков - это упомянутая выше классическая модель bag-of-words (мешок слов). Для отбора более специфических признаков, возможно применение других методов, таких, как взаимная информация (Cover, Thomas, 2012) и вероятностный латентно-семантический анализ (Cai, Hoffmann, 2003). Взаимная информация - это статистическая функция двух случайных величин, описывающая количество информации, содержащееся в одной случайной величине относительно другой. Вероятностный латентно-семантический анализ - статистический метод анализа корреляции двух типов данных.

Еще один подход, получивший большое распространение в последние годы, это так называемое распределенное представление слов. Данный подход основан на применении принципа дистрибутивной семантики к лексическим единицам любого языка. Т.н. «эмбеддинги», т.е. распределенные представления языковых единиц различных уровней, - один из эффективных способов решения проблемы разреженности данных.

В простейшей форме, эмбеддинги слов получают простой нумерацией слов в некотором достаточно обширном словаре и установкой значения единицы в длинном векторе размерности. Так, для примера (кошка, сидит, на, окне, муха, варенье), вектор размерности представляет собой (0, 0, 0, 0, 0, 0), а слово «сидит» представляется, как (0, 1, 0, 0, 0, 0). Данный метод построения эмбеддингов называется унитарным кодированием.

Тем не менее, унитарное кодирование является простейшей репрезентацией текста, практически идентичной вышеописанному формату мешка слов. Современные статистические модели векторного представления слов, в свою очередь, во многом основаны на гипотезе локальности. Ее применение к эмбеддингам слов было предложено в статье “Distributed Representations of Words and Phrases and their Compositionality” 2013 года командой исследователей из Google (Mikolov, 2013). Согласно данной гипотезе, слова, встречающиеся в одинаковых окружениях, обладают семантической близостью. Понятие «близость» в данном случае коррелирует с понятием «сочетаемость» и позволяет отражать семантические и синтагматические связи слов.

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

Рисунок 2. Визуализация семантических отношений между словами в многомерном пространстве.

Здесь можно заметить, как семантическое противопоставление «мужчина-женщина» являет собой некоторый вектор диспозиции на семантическом поле. Данное семантическое отношение сохраняется и для пар слов «дядя - тетя», «король - королева». Возможно моделировать также следующие семантические отношения между словами: «женщина - мужчина = королева - король», и «женщина - королева = мужчина - король», что имеет под собой сематическое обоснование.

Данный метод основан на вероятностной оценке совместного употребления слов и нейронной сети, самообучающейся на корпусах текстов. Существуют два основных алгоритма обучения подобной модели: т.н. CBoW (Continous Bag of Words, «непрерывный мешок со словами») и Skip-gram. Они обладают противоположными принципами действия. Архитектура CBoW нацелена на определение слов на основании окружающего их контекста, в то время как Skip-gram архитектура, наоборот, предсказывает окружение данного слова.

Подобный метод извлечения эмбеддингов получил название word2vec, и используется для числового представления отдельных слов, предложений и целых документов. В настоящее время, идея word2vec получила активное развитие с использованием более сложных моделей, таких, как doc2vec (Le, Mikolov, 2014: 1188-1196), FastText (Bojanowski et al., 2017), ELMO (Peters et al., 2017), BERT (Devlin et al., 2018). Тем не менее, для решения данной задачи был использован word2vec. (Goldberg, Levy, 2014)

Для русского языка доступна предобученная на Национальном корпусе русского языка модель (250 миллионов слов, размерность 300 (Kutuzov, Kuzmenko, 2017). Важно, однако, заметить, что вопросы в наборе данных состоят из ограниченного словаря, из которого особой важностью обладают так называемые «стоп-слова».

Стоп-слова, иначе называемые «шумовыми» - это высокочастотные элементы предложения, которые, как правило, не несут самостоятельной семантической нагрузки и в основном игнорируются поисковыми системами при ранжировании или индексации сайтов. Как правило, стоп-слова разделяют на две группы: общие и зависимые (Гращенко, 2013).

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

Зависимые стоп-слова актуализируются в контексте. Например, при поиске по запросу «Владимир Иванович Даль», как правило, релевантны документы, содержащие:

- Даль, Владимир Иванович;

- Даль, Владимир;

- Даль, Иванович;

- Даль

Однако, документы, содержащие только элементы «Владимир» и «Иванович», как правило, нерелевантны. Соответственно, в данном запросе шумовыми словами являются «Владимир» и «Иванович».

Для решения данной задачи важность представляют в первую очередь общие стоп-слова. В задачах автоматической обработки естественного языка, особенно при работе с большими объемами данных, эти слова зачастую удаляются при предобработке, поэтому в предобученную НКРЯ-модель word2vec эти слова не вошли. По этой причине для общих стоп-слов были использованы нулевые векторы.

Для представления вопроса в матричном виде, выделялись вектора для первых восьми слов в предложении (среднее количество слов на предложение в обучающем корпусе - 7). Если предложение короче, оно дополнялось до выбранного размера стоп-словами, которые по результатам предобработки получали нулевой вектор. Более длинные предложения обрезались.

Для задействования важных в определении типов вопросов стоп-слов, также были введены 40 бинарных признаков. Каждое слово в предложении проверялось в соответствии с составленным вручную списком слов, зачастую являющихся индикаторами конкретного типа вопросительных предложений. К примеру, союз «или» не имеет word2vec представления, однако важен для определения вопроса типа 6, «выбор».

Данные бинарные признаки присоединялись к семантическим векторам каждого из слов. После этого, 8 векторов размерностью 340 преобразовывались в матрицы размера 340х8. Получившиеся матрицы поступали на вход в двумерный сверточный слой. Стоит отметить, что первые вычислительные эксперименты данного этапа были связаны с описанной выше рекуррентно сверточной архитектурой. Тем не менее, полученный ей результат в 9% свидетельствует о недостаточном на данный момент объеме данных для успешной утилизации в решении данной задачи.

Были использованы три структурных компонента: сверточный слой, слой пулинга (подвыборки) и полносвязный слой. На вход сеть получает структуру размерностью 340x8x1 и следующие гиперпараметры, полученные путем кросс-валидации на обучающей выборке по трем блокам:

Число фильтров: 26. Была предприняты попытки использования нескольких слоев, 2 (26-52) и 3 (26-52-104) с различными комбинациями фильтров (13 or 52 на первом слое). Наилучший результат был достигнут при одиночном слое в 26 фильтров. Это объяснимо тем, что:

1) Объем данных невелик;

2) 26 делимо на количество классов (13);

Размер ядра свертки: 20x3.

Также использовалась одна из модификаций (Leaky ReLU (Maas et al., 2013)) функции активации Rectified Linear Unit, производящей линейную ректификацию. Линейная ректификация - операция отсечения отрицательной части скалярной величины. В настоящий момент, ReLu и ее модификации - наиболее часто используемые функции активации в глубоких, в частности, в сверточных, нейросетях.

Для предотвращения переобучения, в архитектуру также была включена функция т.н. исключения (dropout). Данная функция случайным образом исключает определенное количество нейронов из дальнейших вычислений. Включение dropout с эмпирически полученным параметром в 0.2 (исключение 20% нейронов) позволило увеличить показатель точности на 2%. Подробно архитектуру возможно рассмотреть на рисунке 3.

Рисунок 3. Архитектура сверточной нейронной сети.

Используя описанную модель (https://github.com/Pythonimous/Q-A-System), удалось достичь точность в 72.38% (F-мера 0.67), что значительно превышает базовую точность в 60.2%. Среди прочих обученных на том же представлении (векторы размерностью 340) моделей (SVM 1 vs All, Логистическая регрессия, Наивный байесовский классификатор, Linear SVC), наилучший результат продемонстрировала модель линейной регрессии, со значениями F-меры и точности в 0.59 и 57%, соответственно, что, тем не менее, ниже, чем базовый триграмм-результат, полученный с помощью метода опорных векторов.

Принимая во внимание небольшой объем обучающих данных, было решено предпринять попытку достичь сопоставимой точности классификации с использованием простого мультиномиального наивного байесовского классификатора и автоматического определения соответствующих словесных признаков в текстах. Была применена своя версия наивного байесовского классификатора (https://github.com/WonderingTachikoma/naive_bayes) с простым аддитивным сглаживанием (Field, 1988: 709-712). В данном случае использовались только словесные признаки.

Изначально был построен словарь на основании всего обучающего корпуса, с извлечением 4912 и 3380 словоформ из необработанной и лемматизированной версий, соответственно.

Далее были построены матрицы совместной встречаемости для обеих версий обучающего корпуса. В данных матрицах размерностей размерности 4912х13 (необработанный) и 3380х13 (лемматизированный) была зафиксирована абсолютная частота каждого слова в каждом из типов вопроса. После этого, была применена методика аддитивного сглаживания, а частоты были заменены на значения метрики «поточечная взаимная информация» (далее ПВИ) (Bouma, 2009: 31-40).

ПВИ - это метрика, демонстрирующая, во сколько раз возрастает вероятность события A при наблюдении события B, и наоборот. В контексте данной задачи ПВИ демонстрирует, насколько вероятно отнесение вопросительного предложения к определенному типу при условии наличия в нем некоторого слова из ограниченного словаря.

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

В таблице 7 показаны результаты для различного количества информативных признаков. Наилучший результат был достигнут с использованием топ-1200 наиболее информативных слов: 70.72% точность. Данный результат значительно превышает базовый и сопоставим с полученным сверточной моделью (72.38%).

Таблица 7. Результаты при отборе ПВИ-признаков

Слова

Все

2000

1500

1200

800

400

200

Точность

59.7%

62.4%

65.7%

70.7%

69.1%

68%

61.9%

Заключение

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

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

На первом этапе работы была составлена комплексная классификация вопросов и вопросительных предложений русского языка, выделены типичные маркеры каждого типа, разработан алгоритм классификации. С помощью языка программирования Python и модуля re (регулярные выражения) были составлены шаблоны для каждого из типов и реализован автоматический типологизатор предложений русского языка. Классификатор на данном этапе работы учитывал в первую очередь формальные характеристики языковых единиц (морфемы, конкретные слова, наличие/отсутствие предлогов, союзов, и т.д.). На данном этапе был получен первый результат в 52.7% точности классификации, принятый на следующем этапе за базовый.

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

Наиболее точный классификатор на этом этапе (на основе метода опорных векторов с линейным ядром), обученный на предварительно нормализованных триграммах, достиг точности классификации в 65.3% и 68.7% для подробной и упрощенной типологий соответственно, в отличие от базового результата. Полученный результат был проанализирован и сопоставлен с аналогичным для английского языка; также были выявлены возможные проблемы набора данных и классификации для их устранения на следующем этапе работы.

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

В качестве репрезентации на заключительном этапе исследования была выбрана комбинированная word2vec-репрезентация и признаки на основе метода регулярных выражений, которые были разработаны с учетом результатов первого этапа исследования: наличие/отсутствие конкретных служебных частей речи, присутствие в предложении характерных для какого-либо из типов вопросов слов, и так далее. Это позволило использовать семантические признаки лексических единиц в предложении, а также формальные маркеры, указывающие на тип вопроса.

Классификатор (сверточная нейронная сеть) достиг результата в 72.38% точности, что превосходит бейслайн-результат в 60.22%, полученный путем повторного применения использованных на предыдущем этапе методов на модифицированном корпусе. Исходя из существующих исследований, это может считаться наилучшим результатом для классификации вопросительных предложений русского языка на данный момент. Учитывая небольшой объем набора данных, вероятнее всего, 72.38% - максимальный результат, которого можно достичь на данном корпусе.

В данной работе представлена одна из немногих попыток решения проблемы типологизации вопросительных предложений русского языка с использованием больших наборов данных. Примененные в работе методы продемонстрировали относительно хорошие результаты (учитывая малый для эффективного применения методов машинного обучения объем корпусов) в сравнении с уже описанными в литературе результатами для русского языка, однако возможности для совершенствования остаются. Должна быть проделана большая работа для достижения результатов, сопоставимых с полученной исследовательским сообществом точностью в 90% для английского языка.

Точность классификации представляется возможным улучшить несколькими способами:

1) Дальнейшая работа над корпусом:

a. Извлечение и разметка дополнительных данных. Дополнительные данные возможно извлечь с таких ресурсов, как «Ответы Mail.ru», различных русскоязычных форумов. Для эффективной маркировки можно задействовать полуавтоматические методы, к примеру, уже обученный классификатор в так называемом pseudo-labelling: получении классовых меток для еще не охарактеризованных предложений с неабсолютной точностью для дальнейшего их использования в обучении и повышении качества обучения;

b. На данный момент, мы не задействовали все возможные стратегии, направленные на работу с несбалансированными классами. Единственной принятой мерой явилась ручная работа с малопредставленными классами и извлечение дополнительных объектов для расширения таких классов. Однако существует несколько стратегий, применимых непосредственно в процессе обучения. Так, одной из наиболее эффективных мер при работе с неравномерно распределенными данными является их взвешивание: если, предположим, в наборе данных два класса с 50 и 500 объектами соответственно, то при балансировке один объект менее представленного класса считается за 10 объектов более представленного класса, и их роль в процессе обучения и последующей классификации становится равной;

2) С увеличением объема данных потенциально возможно применение более сложных моделей и архитектур, как, например, описанная во второй главе рекуррентно-сверточная нейронная сеть, или т.н. long-short term memory (долгая краткосрочная память), которая также активно используется в задачах классификации текстов (Zhou et al., 2015);

3) Хотя word2vec до сих пор применяется в различных задачах автоматической обработки естественного языка, он не является наиболее актуальной моделью репрезентации текста. Таким образом, можно использовать более поздние методы векторного представления, такие, как упомянутые во второй главе doc2vec, FastText, ELMO, и BERT.

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

Библиографический список

1) Галкина-Федорук Е. М., Горшкова К. В., Шанский Н. М. Современный русский язык //Ч. IM. - 2009. - Т. 19. - №. 2.

2) Гращенко Л. А. О модельном стоп-словаре //Известия Академии наук Республики Таджикистан. Отделение физико-математических, химических, геологических и технических наук. - 2013. - №. 1. - С. 150.

3) Гудков В. Ю., Гудкова Е. Ф. N-граммы в лингвистике //Вестник Челябинского государственного университета. - 2011. - №. 24.

4) Гужва Ф. К. Трудные вопросы синтаксиса и пунктуации: Справочник для учителя. - Рад. школа,, 1981.

5) Коршунов А., Гомзин А. тическое моделирование текстов на естественном языке //Труды Института системного программирования РАН. - 2012. - Т. 23.

6) Мозговой М. В. Простая вопросно-ответная система на основе семантического анализатора русского языка //Вестник Санкт-Петербургского университета. Серия 10. Прикладная математика. Информатика. Процессы управления. - 2006. - №. 1.

7) Невольникова С. В. Функционально-семантические разновидности русских вопросительных предложений и их роль в текстообразовании //Ростов-н/Д. - 2004.

8) Сиротинина О. Б. Лекции по синтаксису русского языка. - УРСС, 2003.

9) Соловьев А. А., Пескова О. В. Построение вопросно-ответной системы для русского языка: модуль анализа вопросов //Новые информационные технологии в автоматизированных системах. - 2010. - №. 13.

10) Соснин П. И. Вопросно-ответное моделирование в разработке автоматизованных систем. - 2007.

11) Сулейманов Д. Ш. Исследование базовых принципов построения семантического интерпретатора вопросно-ответных текстов на естественном языке в АОС //Образовательные технологии и общество. - 2001. - Т. 4. - №. 3.

12) Тихомиров И. А. Вопросно-ответный поиск в интеллектуальной поисковой системе Exactus //Труды четвертого российского семинара по оценке методов информационного поиска РОМИП. - 2006. - С. 80-85.

13) Шведова Н.Ю. Русская грамматика. В двух томах. Том II. - Москва: Наука, 1980.

14) Abadi M. et al. TensorFlow: A System for Large-Scale Machine Learning //OSDI. - 2016. - Т. 16. - С. 265-283.

15) Bojanowski P., Grave E., Joulin A., Mikolov T. Enriching word vectors with subword information // Transactions of the Association for Computational Linguistics 5 (2017). P. 135-146.

16) Bengio Y. et al. A neural probabilistic language model //Journal of machine learning research. - 2003. - Т. 3. - №. Feb. - С. 1137-1155.

17) Bouma G. Linguistic knowledge and question answering //Proceedings of the Workshop KRAQ'06 on Knowledge and Reasoning for Language Processing. - Association for Computational Linguistics, 2006. - С. 2-3.

18) Bouma G. Normalized (pointwise) mutual information in collocation extraction // Proceedings of GSCL (2009). P. 31-40.

19) Bunescu R., Huang Y. Towards a general model of answer typing: Question focus identification //Proceedings of The 11th International Conference on Intelligent Text Processing and Computational Linguistics (CICLing 2010), RCS Volume. - 2010. - С. 231-242.

20) Burger J. et al. Issues, tasks and program structures to roadmap research in question & answering (Q&A) //Document Understanding Conferences Roadmapping Documents. - 2001. - С. 1-35.

21) Cai L., Hofmann T. Text categorization by boosting automatically extracted concepts //Proceedings of the 26th annual international ACM SIGIR conference on Research and development in informaion retrieval. - ACM, 2003. - С. 182-189.

22) Collobert R. et al. Natural language processing (almost) from scratch //Journal of Machine Learning Research. - 2011. - Т. 12. - №. Aug. - С. 2493-2537.

23) Cooper R. J., Rьger S. M. A Simple Question Answering System //TREC. - 2000.

24) Cover T. M., Thomas J. A. Elements of information theory. - John Wiley & Sons, 2012.

25) Damljanovic D., Agatonovic M., Cunningham H. Identification of the Question Focus: Combining Syntactic Analysis and Ontology-based Lookup through the User Interaction //LREC. - 2010.

26) Devlin J., Chang M.-W., Lee K., Toutanova K. Bert: Pre-training of deep bidirectional transformers for language understanding // arXiv preprint arXiv:1810.04805 (2018).

27) Elman J. L. Finding structure in time //Cognitive science. - 1990. - Т. 14. - №. 2. - С. 179-211.

28) Ferrucci D. et al. Building Watson: An overview of the DeepQA project //AI magazine. - 2010. - Т. 31. - №. 3. - С. 59-79.

29) Field D. A. Laplacian smoothing and Delaunay triangulations //Communications in applied numerical methods. - 1988. - Т. 4. - №. 6. - С. 709-712.

30) Galea A. Open-domain surface-based question answering system //Proceedings of CSAW. - 2003. - Т. 3.

31) Gobeill J. et al. Answering gene ontology terms to proteomics questions by supervised macro reading in Medline //EMBnet. journal. - 2012. - Т. 18. - №. B. - С. pp. 29-31.

32) Goldberg Y., Levy O. word2vec explained: Deriving mikolov et al.'s negative-sampling word-embedding method //arXiv preprint arXiv:1402.3722. - 2014.

33) Harabagiu S. M., Paєca M. A., Maiorano S. J. Experiments with open-domain textual question answering //Proceedings of the 18th conference on Computational linguistics-Volume 1. - Association for Computational Linguistics, 2000. - С. 292-298.

34) Hofmann M., Klinkenberg R. (ed.). RapidMiner: Data mining use cases and business analytics applications. - CRC Press, 2013.

35) Ittycheriah A. A statistical approach for open domain question answering //Advances in Open Domain Question Answering. - Springer, Dordrecht, 2008. - С. 35-69.

36) Jelinek F., Lafferty J. D. Computation of the probability of initial substring generation by stochastic context-free grammars //Computational Linguistics. - 1991. - Т. 17. - №. 3. - С. 315-323.

37) Jurafsky D. Speech & language processing. - Pearson Education India, 2000.

38) Katz B., Borchardt G. C., Felshin S. Natural Language Annotations for Question Answering //FLAIRS Conference. - 2006. - С. 303-306.

39) Kutuzov A., Kuzmenko E. Rusvectores: distributional semantic models for the Russian. - 2017.

40) Krizhevsky A., Sutskever I., Hinton G. E. Imagenet classification with deep convolutional neural networks //Advances in neural information processing systems. - 2012. - С. 1097-1105.

41) Lai S. et al. Recurrent Convolutional Neural Networks for Text Classification //AAAI. - 2015. - Т. 333. - С. 2267-2273.

42) Lauer T. W., Peacock E., Graesser A. C. Questions and information systems. - Psychology Press, 2013.

43) Le Q., Mikolov T. Distributed representations of sentences and documents // In International conference on machine learning. 2014. P. 1188-1196

44) Li X., Roth D. Learning question classifiers //Proceedings of the 19th international conference on Computational linguistics-Volume 1. - Association for Computational Linguistics, 2002. - С. 1-7.

45) Lita L. V., Carbonell J. G. Instance-based question answering: A data driven approach. - 2004.

46) Loni B. A survey of state-of-the-art methods on question classification. - 2011.

47) Maas A. L., Hannun A. Y., Ng A. Y. Rectifier nonlinearities improve neural network acoustic models //Proc. icml. - 2013. - Т. 30. - №. 1. - С. 3.

48) Mikolov T. et al. Distributed representations of words and phrases and their compositionality //Advances in neural information processing systems. - 2013. - С. 3111-3119.

49) Moldovan D. et al. The structure and performance of an open-domain question answering system //Proceedings of the 38th Annual Meeting on Association for Computational Linguistics. - Association for Computational Linguistics, 2000. - С. 563-570.

50) Monz C. Document retrieval in the context of question answering //European Conference on Information Retrieval. - Springer Berlin Heidelberg, 2003. - С. 571-579.

51) Monz C. et al. From document retrieval to question answering. - Institute for Logic, Language and Computation, 2003.

52) Nikolaev K., Malafeev A. Russian-Language Question Classification: A New Typology and First Results //International Conference on Analysis of Images, Social Networks and Texts. - Springer, Cham, 2017. - С. 72-81.

53) Nikolaev K., Malafeev A. Russian Q&A Method Study: From Naive Bayes to Convolutional Neural Networks //International Conference on Analysis of Images, Social Networks and Texts. - Springer, Cham, 2018. - С. 121-126.

54) Pereira F., Mitchell T., Botvinick M. Machine learning classifiers and fMRI: a tutorial overview //Neuroimage. - 2009. - Т. 45. - №. 1. - С. S199-S209.

55) Peters M., Ammar W., Bhagavatula Ch., Power R. Semi-supervised sequence tagging with bidirectional language models // arXiv preprint arXiv:1705.00108 (2017).

56) Pinchak C., Lin D. A probabilistic answer type model //11th Conference of the European Chapter of the Association for Computational Linguistics. - 2006.

57) Roth D. et al. Learning Components for A Question-Answering System //TREC. - 2001.

58) Sharoff S. Creating general-purpose corpora using automated search engine queries //WaCky. - 2006. - С. 63-98.

59) Silva J. et al. From symbolic to sub-symbolic information in question classification //Artificial Intelligence Review. - 2011. - Т. 35. - №. 2. - С. 137-154.

60) Xu Z., Yang Y., Hauptmann A. G. A discriminative CNN video representation for event detection //Computer Vision and Pattern Recognition (CVPR), 2015 IEEE Conference on. - IEEE, 2015. - С. 1798-1807.

61) van Zaanen M. Multi-lingual Question Answering using OpenEphyra //CLEF (Working Notes). - 2008.

62) Zhang D., Lee W. S. Question classification using support vector machines //Proceedings of the 26th annual international ACM SIGIR conference on Research and development in informaion retrieval. - ACM, 2003. - С. 26-32.

63) Zhou C. et al. A C-LSTM neural network for text classification //arXiv preprint arXiv:1511.08630. - 2015.

Репозитории

64) RCNN Model, https://github.com/Pythonimous/Q-A-System, last accessed 13.05.2019

65) Naпve Bayes Model, https://github.com/WonderingTachikoma/ naive_bayes, last accessed 13.05.2019

Приложение

Приложение 1.

Классификатор на основе регулярных выражений (2.2)

19 import re

20 def test(a):

21 A = 0

22 m = re.match(r'.*[\?\.]', a)

23 if m:

24 A = '1'

25 m = re.match(r'.* ((ли)|(не)) .*[\?\.]', a)

26 if m:

27 A = '2'

28 m = re.match(r'.*[кК]то.*[\?\.]', a)

29 if m:

30 A = '7'

31 m = re.match(r'.*[чЧ]то.*[\?\.]', a)

32 if m:

33 A = '7'

34 m = re.match(r'.*[гГ]де.*[\?\.]', a)

35 if m:

36 A = '7'

37 m = re.match(r'.* ([иИ]ли) .*[\?\.]', a)

38 if m:

39 A = '6'

40 m = re.match(r'.*(([пП]очему)|([чЧ]то было|явилось|стало|(по?)служило причиной)).*[\?\.]', a)

41 if m:

42 A = '13'

43 m = re.match(r'.*([чЧ]то означает|такое|значит).*[\?\.]', a)

44 if m:

45 A = '3'

46 m = re.match(r'.*([сС]колько|[кК]ак много).*[\?\.]', a)

47 if m:

48 A = '9'

49 m = re.match(r'.*(((([вВ]о)|([чЧ]ерез)) сколько)|([вВ] (какое|который) (время|час))).*[\?\.]', a)

50 if m:

51 A = '7'

52 m = re.match(r'.*((([кК]огда)|([кК]акого числа))|([вВ] како[мй] году|месяце|(день недели))).*[\?\.]', a)

53 if m:

54 A = '7'

55 m = re.match(r'.*(([кК]аковы последствия)|([чЧ]то следует (из|за))|([чЧ]то будет (за|после|дальше|далее))).*[\?\.]', a)

56 if m:

57 A = '14'

58 m = re.match(r'.*(([кК]ак(ой|ая|ое|ом|ие))|([кК]ак(им|ими|ие) ((свойств(ом|ами|а))|(качеств(ом|ами|а))) (наделен|обладает|характеризуется|отличается|имеет))).*[\?\.]', a)

59 if m:

60 A = '8'

61 m = re.match(r'.*(([сС] помощью|[пП]осредством)? (([кК]ого)|([чЧ]его))|(([чЧ]ем|[кК]ем) (воспользова(лся|лась|ться))?)|([бБ]лагодаря (кому|чему))|(([кК]то|[чЧ]то) позволил(о?))).*[\?\.]', a)

62 if m:

63 A = '11'

64 m = re.match(r'.*(([кК] чему)|([зЗ]ачем)|([сС] как(ой|ими) (цел(ью|ями))|(задач(ей|ами)))|([дД]ля чего)|(([вВ]о имя)|([дД]ля как(ой|их)) (цел(и|ей))|(задач(и?)))|([кК]ак(ую|ие) (цел(ь|и))|(задач(у|и)))).*[\?\.]', a)

65 if m:

66 A = '12'

67 m = re.match(r'.*(([пП]риведи|[кК]акой пример|образец)|(([чЧ]то|[кК]то) ((может ((служить)|(выступ(ать|ить))))|((по?)служит|выступ(ает|ит))) (как )?((пример(ом?))|(образ(ец|цом))))).*[\?\.]', a)

68 if m:

69 A = '4'

70 m = re.match(r'.*(([чЧ]то (надо?).* чтобы|делать)|([кК]ак)|([пП]о как(ому|им) (план(у|ам))|(алгоритм(у|ам)))|([пП]о как(ому|ой) (схем(е|ам))|(тактик(е|ам)))|([кК]ак(им|ими) (образ(ом|ами))|(пут(ем|ями)))|([кК]ак(ой|ими) (тактик(ой|ами))|(схем(ой|ами)))) .*[\?\.]', a)

71 if m:

72 A = '10'

73 m = re.match(r'.*(([чЧ]ем\S.* похо(ж|жи|жа|же)|отлича(ются|ется|))|[кК]ак\S.* похо(ж|жи|жа|же)| отлича(ются|ется|)).*[\?\.]', a)

74 if m:

75 A = '5'

76 return A

77 l = open("2.txt", 'r')

78 f = l.read()

l. close()

79 f = f.split('\n')

80 sent = []

81 numb = []

82 numb1 = []

83 for l in f:

84 l = l.split('\t')

85 sent.append(l[0])

86 numb.append(l[1])

87 for i in sent:

88 h = test(i)

89 h = i + ' ' + numb[sent.index(i)] + ' ' + h + '\n'

90 numb1.append(h)

91 print(numb1)

92 ind = 0

93 for i in range(len(numb)):

94 if numb[i] != numb1[i]:

95 pass

96 else:

97 ind += 1

98 print(ind)

99 file = open("Typologized.txt", 'w+')

100 for i in numb1:

101 file.write(i)

102 file.close()

Приложение 2.

Предобработка и репрезентация (2.4)

1 import re

2 import gensim

3 import numpy as np

4 import pymorphy2

5 import string

6 import pickle

7 import tensorflow as tf

8 import timeit

9 from pymystem3 import Mystem

10 sess = tf.Session()

11 model = gensim.models.KeyedVectors.load_word2vec_format('ruscorpora_upos_skipgram_300_10_2017.bin.gz',

12 binary=True) # pre-trained vector model for extracting features

13 morph = pymorphy2.MorphAnalyzer()

14 m = Mystem()

15 def extract_questions(x): #x - labeled data name, here separator is \t

16 lines = [line.rstrip('\n') for line in open(x, encoding='utf-8-sig')]

17 q = []

18 for i in lines:

19 i = i.split('\t')

20 q.append(i[0])

21 print('Question extraction... done!')

22 return q

23 def extract_labels(x):

24 lines = [line.rstrip('\n') for line in open(x, encoding='utf-8-sig')]

25 q = []

26 for i in lines:

27 i = i.split('\t')

28 q.append(i[1])

29 print('Label extraction... done!')

30 return q

31 def preprocformatrices(x): # preprocessing for matrices

32 list2 = extract_questions(x)

33 list1 = []

34 for i in list2:

35 i = i.rstrip().lower().replace('кое-','кое- ').replace('-то',' -то').replace('-либо',' -либо').\

36 replace('-нибудь',' -нибудь').replace('-таки',' -таки').replace('е','е')

37 i = ''.join(ch for ch in i if ch not in set(string.punctuation)).replace('»', '').replace('«', '').replace('--', '').replace('-', '')

38 i = ' '.join(i.split()).split(' ')

39 list1.append(i)

40 # avg_len = round(sum([len(i) for i in list1])/len(list1)) + 1

41 avg_len = 8

42 print('Average sentence length: '+str(avg_len))

43 list = []

44 for i in list1:

45 if len(i) == avg_len:

46 new = i

47 elif len(i) > avg_len:

48 new = i[:avg_len]

49 else:

50 num_empty = avg_len - len(i)

51 empties = ['и']*num_empty

52 new = i + empties

53 list.append(new)

54 return list

55 def POS_tagger(i): #for word2vec single sentence / word processing

56 sen = m.lemmatize(i) #sentence to list of lemmas

57 sen1 = sen[:-1]

58 for a in sen1:

59 if a == ' ':

60 sen1.remove(a)

61 sent = []

62 for a in sen1:

63 if a == 'и':

64 b = 'и_CONJ'

65 else:

66 b = a + '_' + str((morph.parse(a)[0]).tag.POS)

67 sent.append(b)

68 return sent

69 def vectorize(x): #presenting word as vector

70 sent1 = []

71 for s in x:

72 sent2 = []

73 for i in s:

74 if i in model:

75 vector = model[i]

76 sent2.append(vector)

77 else:

78 continue

79 sent1.append(sent2)

80 sent3 = []

81 for i in sent1:

82 if len(i) == 0: #if word has not been found in a pre-trained model

83 i = np.zeros((300,))

84 sent3.append(i)

85 else:

86 sent3.append(np.mean(i, axis=0)) #one-vector word representation

87 return sent3

88 def determinefeatures(a): #extracting additional features from a word

89 if a != 'и':

90 list = []

91 t1 = 0

92 t2 = 0

93 t3 = 0

94 t4 = 0

95 t5 = 0

96 t6 = 0

97 t7 = 0

98 t8 = 0

99 t9 = 0

100 t10 = 0

101 t11 = 0

102 t12 = 0

103 t13 = 0

104 t14 = 0

105 t15 = 0

106 t16 = 0

107 t17 = 0

108 t18 = 0

109 t19 = 0

110 t20 = 0

111 t21 = 0

112 t22 = 0

113 t23 = 0

114 t24 = 0

115 t25 = 0

116 t26 = 0

117 t27 = 0

118 t28 = 0

119 t29 = 0

120 t30 = 0

121 t31 = 0

122 t32 = 0

123 t33 = 0

124 t34 = 0

125 t35 = 0

126 t36 = 0

127 t37 = 0

128 t38 = 0

129 t39 = 0

130 t40 = 0

131 if a in ['что', 'кто', 'кого','чего','кому','чему','чем','кем']:

132 t1 = 1

133 list.append(t1)

134 if a == 'то':

135 t2 = 1

136 list.append(t2)

137 if a in ['означает', 'такое', 'значит']:

138 t3 = 1

139 list.append(t3)

140 if a == 'ли':

141 t4 = 1

142 list.append(t4)

143 if a in ['пример', 'например']:

144 t5 = 1

145 list.append(t5)

146 if a == 'где':

147 t6 = 1

148 list.append(t6)

149 if a == 'куда':

150 t7 = 1

151 list.append(t7)

152 if a == 'когда':

153 t8 = 1

154 list.append(t8)

155 if a == 'откуда':

156 t9 = 1

157 list.append(t9)

158 if a == 'почему':

159 t10 = 1

160 list.append(t10)

161 if a == 'зачем':

162 t11 = 1

163 list.append(t11)

164 if a == 'как':

165 t12 = 1

166 list.append(t12)

167 if a == 'чем':

168 t13 = 1

169 list.append(t13)

170 if 'похож' in a:

171 t14 = 1

172 list.append(t14)

173 if a in ['отличается','отличаются']:

174 t15 = 1

175 list.append(t15)

176 if a == 'чем':

177 t16 = 1

178 list.append(t16)

179 if 'разниц' or 'отлич' in a:

180 t17 = 1

181 list.append(t17)

182 if a == 'или':

183 t18 = 1

184 list.append(t18)

185 if a == 'если':

186 t19 = 1

187 list.append(t19)

188 if a in ['за','после','дальше','далее']:

189 t20 = 1

190 list.append(t20)

191 if 'цел' in a or 'задач' in a:

192 t21 = 1

193 list.append(t21)

194 if a in ['было','явилось','стало','послужило']:

195 t22 = 1

196 list.append(t22)

197 if a in ['дальше','следует','будет'] or 'последств' in a or a == 'из':

198 t23 = 1

199 list.append(t23)

200 if 'причин' in a:

201 t24 = 1

202 list.append(t24)

203 if 'скольк' in a:

204 t25 = 1

205 list.append(t25)

206 if a == 'не':

207 t26 = 1

208 list.append(t26)

209 if 'мног' in a:

210 t27 = 1

211 list.append(t27)

212 if re.match(r'как(ой|ая|ое|ие|ого|ому|им|ом|ую|их|ими)', a):

213 t28 = 1

214 list.append(t28)

215 if 'свойств' or 'качеств' in a:

216 t29 = 1

217 list.append(t29)

218 if 'год' or 'месяц' or 'минут' or 'час' or 'секунд' or 'числ' in a or a in ['день','дня','дню','днем','дне']:

219 t30 = 1

220 list.append(t30)

221 if a == 'через':

222 t31 = 1

223 list.append(t31)

224 if a in {'в', 'во'}:

225 t32 = 1

226 list.append(t32)

227 if re.match(r'котор(ый|ая|ое|ые|ого|ому|ым|ом|ую|ых|ыми|ой)', a):

228 t33 = 1

229 list.append(t33)

230 if 'каков' in a:

231 t34 = 1

232 list.append(t34)

233 if 'помощ' or 'посредств' in a:

234 t35 = 1

235 list.append(t35)

236 for i in ['схем','тактик','алгоритм','образ','план']:

237 if i in a:

238 t36 = 1

239 if re.match(r'пут(ь|и|ем|ей|ям|ями|ях)', a):

240 t36 = 1

241 list.append(t36)

242 if a == 'чтобы':

243 t37 = 1

244 list.append(t37)

245 if re.match(r'наделен([аоы]?)', a) or re.match(r'облада[ею]т', a) or re.match(r'характеризу[ею]тся', a) or re.match(r'име[ею]т', a):

246 t38 = 1

247 list.append(t38)

248 m = re.match(r'воспользова(лся|лась|ться)|благодаря|позволил(о?)|образом', a)

249 if m and (t5 != 1):

250 t39 = 1

251 list.append(t39)

252 if a in ['же', 'ж']:

253 t40 = 1

254 list.append(t40)

255 else:

256 list = [0]*40

257 return list

258 def vecsnfeatures(x): #adding regexp features as a binary sequence to the end of the word array

259 vectors = vectorize(POS_tagger(x))

260 features = determinefeatures(x)

261 y = np.append(vectors, features)

262 return y

263 def trixify(x):

264 count = 0

265 newlist = []

266 for i in x:

267 trimatrix = []

268 for d in i:

269 trimatrix.append(vecsnfeatures(d)) #Turning words into vectors

270 matrix = np.column_stack(trimatrix) # Vectors into matrix

271 newlist.append(matrix)

272 count += 1

273 print('Into matrices: ' + str(count) + ' / ' + str(len(x)) + ' questions,'

274 ' latest matrix shape: '+str(matrix.shape))

275 if count % 10 == 0:

276 print(str(count*100/len(x))+' % готово.')

277 print('All trixified!')

278 return newlist

279 def vectorslabels(x): #saves labels and features into separate files for ML usage

280 pickle.dump(trixify(preprocformatrices(x)), open("TestFeatures.pkl", "wb")) #saving features into file

281 text = open("TestLabels.txt","w") #saving labels into file

282 for i in extract_labels(x):

283 text.write(i+('\n'))

284 print('All done!')

285 def open_pickle(x): # Loading features file

286 with open(x, 'rb') as pickle_file:

287 file = pickle.load(pickle_file)

288 return file

289 vectorslabels('Test.txt')

290 '''

291 text = open("TrainingLabels.txt","w")

292 for i in extract_labels('Training.txt'):

293 text.write(i + '\n')

294 '''

295 # print(open_pickle('TestFeatures1.pkl')[0])

Приложение 3.

Модель (2.4)

1 import numpy as np

2 import keras

3 from keras import backend as th

4 from keras.models import Sequential

5 from keras.layers import Dense, Dropout, Flatten, Lambda, Conv2D, MaxPooling2D, LSTM

6 from keras.layers.wrappers import TimeDistributed

7 from keras.layers.advanced_activations import LeakyReLU

8 from keras.utils import to_categorical

9 from sklearn.preprocessing import LabelEncoder, StandardScaler

10 from sklearn.metrics import classification_report

11 from keras.callbacks import EarlyStopping

12 import pickle

13 np.random.seed(123) # for reproducibility

14 # Loading training data

15 with open('TrainingFeatures.pkl', 'rb') as trainfile:

16 features = pickle.load(trainfile)

17 with open('TrainingLabels.txt', 'r') as infile2:

18 labels = [line.strip() for line in infile2]

19 # Loading test data

20 with open('TestFeatures.pkl', 'rb') as testfile:

21 testfeatures = pickle.load(testfile)

22 with open('TestLabels.txt', 'r') as infile2:

23 testlabels = [line.strip() for line in infile2]

24 # Data preprocessing

25 labelencoder = LabelEncoder()

26 y_train = labelencoder.fit_transform(labels)

27 y_test = labelencoder.fit_transform(testlabels)

28 # 2. Feature scaling

29 sc = StandardScaler()

30 X_train = [sc.fit_transform(i) for i in features] #scaling matrices

31 X_test = [sc.fit_transform(i) for i in testfeatures] #scaling matrices

32 X_train = np.array([i.reshape((1,)+i.shape) for i in X_train]) #adding "step" dimensions

33 X_test = np.array([i.reshape((1,)+i.shape) for i in X_test])

34 X_train = X_train.reshape(2086,340,8,1) #reordering correctly

35 X_test = X_test.reshape(181,340,8,1)

36 # 5. Categorizing labels

37 y_train_one_hot = to_categorical(y_train)

38 y_test_one_hot = to_categorical(y_test)

39 # Parameters

40 batch_size = 512

41 epochs = 100

42 num_classes = 13

43 window = (20,3)

44 # Network setup

45 model = Sequential()

46 # Layer composition

47 model.add(Conv2D(26, kernel_size=window,

48 activation='linear',

49 input_shape=(340,8,1),padding='same'))

50 model.add(LeakyReLU(alpha=0.1))

51 model.add(MaxPooling2D((2, 2),padding='same'))

52 model.add(Dropout(0.2))

53 model.add(Flatten())

54 model.add(Dense(num_classes, activation='softmax'))

55 # Compiling

56 model.compile(loss=keras.losses.categorical_crossentropy,

57 optimizer=keras.optimizers.Adam(),

58 metrics=['accuracy'])

59 # Model summary

60 print(model.summary())

61 earlystop = EarlyStopping(monitor='acc', min_delta = 0.0001, patience=5, verbose=1, mode='auto')

62 callbacks_list = [earlystop] #If accuracy has not changed for 5 epochs.

63 #Training the model

64 model_train = model.fit(X_train, y_train_one_hot, batch_size=batch_size, callbacks = callbacks_list, epochs=epochs, verbose=1)

65 #Saving the model

66 model.save('26CNN512B100EwDOwTD 20,3 - Early Stop - DO 0.2.h5') # Model

67 model.save_weights('Model_weights.h5') #Weights

68 model_json = model.to_json() #Architecture

69 with open("Model_architecture.json", "w") as json_file:

70 json_file.write(model_json)

71 print("Saved model to disk")

72 # Evaluating the model on test data

73 scores = model.evaluate(X_test, y_test_one_hot, verbose=0)

74 print('Test loss:', scores[0])

75 print('Test accuracy:', scores[1])

76 # Results on separate classes (see README.txt)

77 predicted_classes = model.predict(X_test)

78 predicted_classes = np.argmax(np.round(predicted_classes),axis=1)

79 target_names = ["Class {}".format(i) for i in range(num_classes)]

80 print(classification_report(y_test, predicted_classes, target_names=target_names))

Размещено на Allbest.ru

...

Подобные документы

  • Коммуникативно-прагматические особенности вопросительных предложений в английском языке. Средства выражения вопроса. Классификация и анализ вопросительных высказываний, выражение ими речевых действий. Вопросительные высказывания как косвенно-речевые акты.

    курсовая работа [46,1 K], добавлен 22.04.2016

  • Перевод предложений на английский язык. Построение предложений с применением предложенного текста. Определение правильных и неправильных высказываний. Построение вопросительных предложений. Написание существительных во множественном и единственном числе.

    контрольная работа [15,8 K], добавлен 07.06.2012

  • Вопросительные предложения как один из типов предложений по цели высказывания. Их строение и классификация, оценка роли в речи персонажей. Особенности повествования в произведении. Анализ функций данных конструкций в диалогической и монологической речи.

    дипломная работа [101,0 K], добавлен 17.12.2015

  • Главные члены предложения и особенности порядка слов в повествовательном предложении в английском языке. Способы выражения отрицания в предложении: частицей not, отрицательным местоимением или наречием. Правила построения вопросительных предложений.

    реферат [446,5 K], добавлен 19.02.2011

  • Безличные предложения как вид односоставных предложений. Синтаксические преобразования предложений при переводе с русского языка на английский, переводческие трансформации. Особенности перевода безличных предложений в романе Л.Н. Толстого "Война и мир".

    дипломная работа [450,6 K], добавлен 13.11.2016

  • Применение глаголов в Present Simple, Past Simple Tense и Future Simple Tense. Образование повествовательных и вопросительных предложений. Формы настоящего времени глагола to do. Редуцированные (сокращённые) формы вспомогательных глаголов с частицей not.

    контрольная работа [16,7 K], добавлен 16.06.2010

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

    контрольная работа [22,1 K], добавлен 25.05.2014

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

    реферат [122,0 K], добавлен 06.12.2010

  • Различные подходы к определению понятия "перевод". Грамматические трансформации при переводе с английского языка на русский. Типы придаточных предложений в тексте Конституции США. Структура, особенности и трудности перевода сложноподчиненных предложений.

    курсовая работа [60,0 K], добавлен 22.01.2013

  • Сущность понятия "предложение", его роль. Характеристика коммуникативных и структурных типов предложений. Специфика анализа предложений. Односоставные предложения, их классификация и анализ с точки зрения грамматических и стилистических особенностей.

    дипломная работа [404,1 K], добавлен 05.11.2013

  • Синонимы иноязычных слов в русском языке. Грамматика русского языка, проверка правильности написания ряда слов, верная расстановка ударений в словах. Исправление ошибок построения предложений. Образование нужной формы имен числительных и существительных.

    контрольная работа [21,6 K], добавлен 29.12.2009

  • Определение понятия и основных признаков предложений; их классификация по структуре и коммуникативной установке. Функциональная характеристика и структурно-семантическая типология побудительных предложений в англоязычной художественной литературе.

    курсовая работа [50,2 K], добавлен 24.08.2013

  • Проблема перевода безличных предложений с русского языка на английский. Общие проблемы и особенности художественного перевода романа Л.Н. Толстого "Война и мир" на английский язык. Предложения, описывающие оценку действия с морально-этической стороны.

    курсовая работа [66,9 K], добавлен 05.05.2012

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

    контрольная работа [23,1 K], добавлен 20.02.2010

  • Перевод предложений с употреблением модальных глаголов и их эквивалентов. Перевод предложений в пассивном залоге на русский язык, определение видовременной формы сказуемого. Грамматическая основа предложения. Функции глаголов to be, to have, to do.

    контрольная работа [26,5 K], добавлен 16.09.2013

  • Учебная деятельность школьников, направленная на овладение синтаксическими знаниями, пунктуационными и речевыми умениями и навыками. Вводные слова и вставные конструкции в лингвистике, текстоориентированный подход к их изучению на уроках русского языка.

    курсовая работа [42,2 K], добавлен 30.03.2014

  • Отличия предложений без вводных слов и предложений с вводными словами. Контрольный диктант для проверки владения навыками правописания, проверки орфографической и пунктуационной грамотности. Правила пунктуации при написании предложений с обращениями.

    конспект урока [26,9 K], добавлен 04.02.2013

  • Определение грамматической основы предложения. Разграничение подлежащего и сказуемого. Исследование понятия двусоставных и односоставных предложений. Характеристика особенностей неопределенно-личных, определённо-личных, безличных и назывных предложений.

    презентация [151,3 K], добавлен 13.02.2014

  • Графическая наглядность на уроках русского языка как средство развития младшего школьника. Методика работы со схемами предложений на уроках русского языка. Методика использования таблиц по обучению грамоте. Роль дидактических игр при обучении грамоте.

    дипломная работа [423,8 K], добавлен 02.05.2009

  • Употребление нужной формы прилагательных в английском языке. Преобразование предложений из действительного залога в страдательный. Постановка предложений в отрицательную и вопросительную форму. Составление вопросов к словам в тексте, словаря к тексту.

    контрольная работа [16,5 K], добавлен 03.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.