Разработка и исследование метода и алгоритмов семантического сравнения научных текстов тема диссертации и автореферата по ВАК РФ 05.25.05, кандидат наук Бермудес Сото Хосе Грегорио

  • Бермудес Сото Хосе Грегорио
  • кандидат науккандидат наук
  • 2018, ФГАОУ ВО «Южный федеральный университет»
  • Специальность ВАК РФ05.25.05
  • Количество страниц 169
Бермудес Сото Хосе Грегорио. Разработка и исследование метода и алгоритмов семантического сравнения научных текстов: дис. кандидат наук: 05.25.05 - Информационные системы и процессы, правовые аспекты информатики. ФГАОУ ВО «Южный федеральный университет». 2018. 169 с.

Оглавление диссертации кандидат наук Бермудес Сото Хосе Грегорио

ВВЕДЕНИЕ

ГЛАВА 1. ОБЗОР СУЩЕСТВУЮЩИХ ПОДХОДОВ И МЕТОДОВ К ОБРАБОТКЕ НАУЧНЫХ ТЕКСТОВ НА ЕСТЕСТВЕННОМ ЯЗЫКЕ. ПОСТАНОВКА ЗАДАЧИ ИССЛЕДОВАНИЯ

1.1 Обзор используемых семантических интерпретаций текстов, характеристик и грамматических атрибутов языка научных текстов, лингвистический феномен анафоры

1.1.1 Анализ используемой структуры языка

1.1.2 Используемые особенности русского языка

1.1.3 Используемые определения понятий: лингвистическое явление анафоры

1.1.4 Формирование определений значимого текстового пассажа и смысла научного текста

1.2 Анализ существующих подходов к обработке научных текстов на естественном языке

1.3 Обзор существующих методов построения структурных элементов схемы существующего подхода к обработке научных текстов на естественном языке

1.3.1 Используемые методы сегментации текстов

1.3.2 Известные методы разрешения анафор

1.3.3 Используемые методы сравнения текстов

1.4 Постановка задачи диссертационного исследования

Выводы по главе

ГЛАВА 2. ФОРМИРОВАНИЕ ПОДХОДА И МЕТОДА СЕМАНТИЧЕСКОГО СРАВНЕНИЯ НАУЧНЫХ ТЕКСТОВ

2.1 Новый подход и метод обработки текстов для текстового сравнения

2.2 Разработка методики сегментации на значимых текстовых пассажах для последующего сравнения

2.3 Разработка методики сравнения текстов на основе сегментов текстовых пассажей с учетом семантических классов и оценка семантического сравнения

Выводы по главе

ГЛАВА 3. РАЗРАБОТКА АЛГОРИТМА СЕМАНТИЧЕСКОГО СРАВНЕНИЯ

НАУЧНЫХ ТЕКСТОВЫХ ДОКУМЕНТОВ

3.1 Разработка алгоритма нового метода сравнения научных текстов

3.2 Разработка алгоритма сегментации текстов на значимых пассажах

3.3 Разработка алгоритма сравнения текстов, основанного на значимых пассажах с учетом семантических классов

Выводы по главе

ГЛАВА 4. ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТАЛЬНОГО ИССЛЕДОВАНИЯ И ОЦЕНКА ПОЛУЧЕНННЫХ РЕЗУЛЬТАТОВ

4.1 Результаты эксперимента предлагаемой методики сегментации

4.2 Результаты эксперимента предлагаемого метода сравнения

Выводы по главе

Заключение

Список использованных источников

Приложение А. Программный код

Приложение Б. Листы данных с записями результатов экспериментов

Приложение В. Свидетельство о регистрации программы

Приложение Г. Акты внедрения результатов работы

ВВЕДЕНИЕ

Рекомендованный список диссертаций по специальности «Информационные системы и процессы, правовые аспекты информатики», 05.25.05 шифр ВАК

Введение диссертации (часть автореферата) на тему «Разработка и исследование метода и алгоритмов семантического сравнения научных текстов»

Актуальность темы

На любом жизненном этапе человек сталкивается с информацией. Например, Интернет содержит большие объёмы информации, среди которых значительную часть составляют тексты на естественных языках. В связи с возрастающей потребностью в обработке текстовой информации на естественном языке тема диссертационного исследования является актуальной [1]. Задачи обработки текстов на естественном языке возникают во многих областях науки. Например, задачи «Больших данных» (BigData), для решения которых применяются самые различные методы обработки информации.

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

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

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

Для машинной обработки текстов на естественном языке необходимо, прежде всего, решить задачу создания средств преобразования языка (например, русского, испанского, английского и т.д.) в формализованный [3], подобный языку программирования. Общие принципы создания средств для систем обработки текстов включают следующие компоненты: фрагментация или разделение, морфологический анализ, синтаксический и семантический анализ, из которых выход одного компонента является входом для следующего [4].

Существующие достижения в области обработки текстов на естественном языке включают: метод синтактико-семантических шаблонов (Чубинидзе К.А. [5]), подход к автоматизации систем смысловой обработки текстов (Сбойчаков К.О. [6]), метод концептуального анализа текстов в системах автоматической обработки научно-технической информации (Козачук М.В. [7]) и др. Другие аспекты, связанные с исследованием, можно отметить в следующих работах: Автоматизированные лексикографические системы [8]; Информационно-поисковые системы [9]; Системы Машинного перевода [10, 11]; Технология Translation Memory (используется в системах МП таких известных компаний, как Google [12] и Промт [13]); Системы понимания речи [14]; интерактивный интерфейс VisualWorld.ru [15] и другие.

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

1. SemEval (International Workshop on Semantic Evaluation), представляет серию конференций, посвящённых изучению вычислительного семантического анализа и их задач, начиная с 1997. Его последний сборник трудов доступен по адресу: http://alt.qcri.org/semeval2017/;

2. *SEM (Joint Conference on Lexical and Computational Semantics), конференция охватывает символические и вероятностные подходы и все их связи, теоретические вклады, а также практические приложения представляются в виде длинных и коротких документов. Долгосрочная цель SEM - это возможность обеспечить постоянную дискуссию для растущего числа исследований в области NLP, работающих во всех аспектах семантики, начиная с 2012.

Сборники трудов доступны по адресу:

https://sites.google.com/view/starsem2018/home?authuser=0.

3. Annual Meeting of the Association for Computational Linguistics. The Association for Computational Linguistics (ACL) является ведущим международным научным и профессиональным обществом для людей, работающих над вычислительными проблемами, связанными с естественном языком, часто называемым либо компьютерной лингвистикой, либо обработкой естественного языка (NLP). Ассоциация была основана в 1962 году. Деятельность ACL включает ежегодное собрание трудов и занимается спонсорством публикации журнала «Computational Linguistics», который выходит в MIT Press. Эта конференция и журнал доступен по адресу: https://www.aclweb.org/. The Association for Computational Linguistics (ACL) группирует, координирует и спонсирует, среди прочего, следующие мероприятия и семинары: SemEval; *SEM; The SIGNLL Conference on Computational Natural Language Learning (CoNLL); Workshops on Natural Language Processing and Computational Social Science (NLP+CSS); Workshop on Representation Learning for NLP (Repl4NLP); Graph-based Methods for Natural Language Processing (TextGraphs).

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

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

На основе предложенного выше определения смысла в диссертации сформулирован подход сравнения научных текстов, на базе которого разработаны

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

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

Для достижения поставленной цели решаются следующие задачи:

1. Сформулировать определения значимого текстового пассажа и смысла научного текста;

2. На основе сформированных определений разработать подход сравнения научных текстов;

3. Реализация сформулированного подхода сравнения научных текстов в виде метода, состоящего из:

3.1. Методики сегментации текстов на естественном языке, которая гарантирует извлечение значимых текстовых фрагментов, сохраняющих смысл текста;

3.2. Методики автоматизированного сравнения двух текстов на естественном языке, которая обнаруживает семантическое сходство, независимо от используемых слов;

4. Разработка алгоритмов сегментации и сравнения, позволяющих оценивать сходство научных текстов и реализующих предложенные методики.

5. Проведение экспериментальных исследований методик сегментации и сравнения текстов на естественном языке и оценка их по критерию выявления совпадений с человеческими мнениями.

Объект исследования - информационная технология интерпретации текстов на естественном языке в части методов семантического, синтаксического и прагматического анализа текстовой информации.

Предмет исследования - алгоритмы семантико-синтаксической обработки научных текстов на русском языке и методы автоматической обработки текста.

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

Научная новизна диссертационной работы:

В диссертации получены следующие новые научные и практические результаты:

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

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

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

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

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

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

Положения, выносимые на защиту:

1. Определения значимого текстового пассажа и смысла;

2. Подход семантического сравнения научных текстов на естественном языке;

3. Метод семантического сравнения научных текстов на естественном языке;

4. Методика сегментации текстов в значимых текстовых пассажах;

5. Методика семантического сравнения научных текстов;

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

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

Соответствие специальности. Тематика работы соответствует пункту 4 паспорта специальности 05.25.05 - Информационные системы и процессы: Лингвистическое обеспечение информационных систем и процессов. Методы и средства проектирования словарей данных, словарей индексирования и поиска информации, тезаурусов и иных лексических комплексов. Методы семантического, синтаксического и прагматического анализа текстовой

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

Реализация и внедрение результатов работы. Основные теоретические и практические результаты диссертационной работы использованы в организациях: Национальный политехнический экспериментальный университет национальных вооружённых Боливарианских сил (УНЕФА - UNEFA); Национальный центр по совершенствованию преподавания науки (СЕНАМЕК -CENAMEC), и Кафедра системного анализа и телекоммуникаций Института компьютерных технологий и информационной безопасности Федерального государственного автономного образовательного учреждения высшего образования «Южный Федеральный Университет», что подтверждается актами о внедрении.

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

Апробация результатов работы. Основные результаты, полученные в ходе работы, докладывались и обсуждались:

• 21-22 мая 2015 г. Международная конференция «Инновационные технологии и дидактика в обучении» (Innovative Technologies and Didactics in Teaching - ITDT 2015), Мадрид. Испания. Выступление с докладом.

• 16-18 декабря 2015 г. XIII Всероссийская Научная конференция молодых ученных аспирантов и студентов «Информационные технологии, системный анализ и управление» (ИТСАиУ - 2015), г. Таганрог. Россия. Выступление с докладом.

• 3-4 мая 2016 г. Международная конференция «Инновационные технологии и дидактика в обучении» (Innovative Technologies and Didactics in Teaching - ITDT 2016), Тенерифе. Испания. Выступление с докладом.

• 5-7 сентября 2016 г. VII Международная научно-техническая конференция «Технологии разработки информационных систем» (ТРИС - 2016), г. Геленджик. Россия. Выступление с докладом.

• 16-19 ноября 2016 г. XIV Всероссийская Научная конференция молодых ученых аспирантов и студентов «Информационные технологии, системный анализ и управление» (ИТСАиУ - 2016), г. Таганрог. Россия. Выступление с докладом.

• 2-3 мая 2017 г. Международная конференция «Инновационные технологии и дидактика в обучении» (Innovative Technologies and Didactics in Teaching - ITDT 2017), Берлин. Германия. Выступление с докладом.

• 4-5 сентября 2017 г. VIII Международная научно-техническая конференция «Технологии разработки информационных систем» (ТРИС - 2017), г. Геленджик. Россия. Выступление с докладом.

• 23-27 апреля 2018 г. Международная конференция «Инновационные технологии и дидактика в обучении» (Information innovative technologies - I2T 2018), Прага. Чешской Республики. Выступление с докладом.

Публикации. По материалам диссертации автором опубликовано 14 печатных работ, в том числе четыре статьи в изданиях из списка, рекомендованного ВАК, в которых отражены основные результаты диссертационного исследования, также получено свидетельство об официальной регистрации программы для ЭВМ № 2018614861 от 18.04.2018 г.

Структура и объем диссертационной работы. Диссертация состоит из введения, четырех глав и заключения. Основной текст изложен на 110 страницах, содержит 32 рисунка, 4 таблицы, список литературы включает 76 наименований. В приложениях содержатся: программный код, листы данных Excel с записями результатов, полученных в ходе экспериментов; свидетельство о

государственной регистрации программы для ЭВМ № 2018614861 от 18.04.2018 г.; акты внедрения результатов работы.

Во введении обоснована актуальность темы диссертации, обозначены цели и задачи работы, определён предмет исследования, представлены основные научные результаты, показаны теоретическая и практическая значимость работы.

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

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

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

методики сегментации, сравнения на близость и оценки, остальные методики являются известными. Для реализации метода вводится формальное представление значимого текстового пассажа и описывается методика его сегментации.

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

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

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

Предложенные алгоритмы реализованы на языках Python и Ruby on Rails, получено свидетельство о Государственной регистрации программы для ЭВМ № 2018614861 от 18.04.2018 г. Эффективность разработанных алгоритмов оценивается в четвертой главе.

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

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

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

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

ГЛАВА 1. ОБЗОР СУЩЕСТВУЮЩИХ ПОДХОДОВ И МЕТОДОВ К ОБРАБОТКЕ НАУЧНЫХ ТЕКСТОВ НА ЕСТЕСТВЕННОМ ЯЗЫКЕ.

ПОСТАНОВКА ЗАДАЧИ ИССЛЕДОВАНИЯ

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

1.1 Обзор используемых семантических интерпретаций текстов, характеристик и грамматических атрибутов языка научных текстов, лингвистический феномен анафоры

Несмотря на требование в различных предметных областях, семантический анализ текста является одной из самых сложных проблем обработки естественного языка и компьютерной лингвистики. Наиболее затруднительным является попытка «научить» компьютер интерпретировать смысл, который автор текста хочет передать своим читателям. Поскольку естественный язык, в отличие от формальных языков, проявляется во многих аспектах. Это вызывает много трудностей для понимания текста [16].

В работе будут использоваться следующие основные понятия и термины языкознания: слово, лексема, грамматическое значение, грамматическая форма, грамматическая категория, антонимы, синонимы, полисемия, словосочетание, текст и другие, приведены в работах ряда авторов: А.М. Прохорова [17], Н.М. Шанского, В.В. Иванова [18], В.Н. Ярцева [19] и др.

1.1.1 Анализ используемой структуры языка

Изложением любого естественного языка является текст - речевое образование с его языковой «плотью», построением и смыслом [11, 20].

Уровни обработки текстов - уровни, на которых выполняются определённые задачи автоматической обработки текстов для их анализа и синтеза [11].

Любой естественный язык не является хаотичным явлением, а напротив, язык - это система, которая имеет свою определённую иерархию. То есть язык - это структурированное явление и как система он может образовывать единство своих элементов.

Элементами языка согласно иерархии являются:

A. Звуки или фонемы, которые обладают перцептивной и сигнификативной функциями;

Б. Морфемы - минимально значимые далее неделимые единицы языка;

B. Слова, обладающие номинативной функцией;

Г. Предложения, служащие для коммуникации;

Д. Текст, или сложное синтаксическое целое.

Для исследования особый интерес представляют такие элементы структуры, как слова (лексический уровень языка), предложения (синтаксический уровень языка) и, собственно, сам текст.

Слово - наиболее конкретная единица языка. Язык как орудие общения -это прежде всего «словесное орудие», это «язык слов» [21]. Главная функция слова - номинативная, то есть слова называют явления окружающей нас действительности. Само по себе слово не коммуникативно, однако, именно из слов строятся предложения для реализации акта коммуникации.

Семантическое значение слова - значение, определяющее смысл, в том числе в зависимости от сочетания с другими словами [11].

Смысл - внутреннее содержание, значение чего-то, постигаемое разумом.

Слова могут иметь разные значения, в зависимости от других факторов, грамматической категории и контекста, то есть области, о которой идет речь. Не изолируя слова от их контекста и оценивая их в своей грамматической категории, гарантируется, что сегмент имеет некоторую целостность. Анализ смысла находится на уровне семантического анализа.

На лексическом уровне слова вступают в различные типы отношений (омонимия, полисемия, антонимия, синонимия и т. д.). Рассмотрим подробнее два уровня - синонимия и антонимия.

Классическое определение синонима - это слова, различные по звучанию, но сходные по значению. Однако, по мнению многих лингвистов (Будагов Р. А. [22], Реформатский А. А. [21]), такое определение является, если не ошибочным, то не вполне точным. Это происходит потому, что слова называют не конкретные предметы, а понятия, о чем говорил В. Гумбольдт [23].

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

Рассмотрим синтаксический уровень языка. Синтаксис изучает, с одной стороны, правила связывания слов и форм слов, а с другой стороны, те единства, в составе которых эти правила реализуются [24]. Единицами синтаксиса являются словосочетания и предложения. Между этими уровнями есть зависимость: словосочетания являются материалом для построения предложений, однако предложение можно разделить не только на словосочетания, но и на члены предложения и на синтагмы.

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

Семантический класс - это концептуализация значений, которые могут быть созданы вручную или полуавтоматически, разных уровней абстракции и сосредоточены на разных областях. При анализе "WordNef' можно сказать, что он состоит из ряда синсетов (synsets), связанных друг с другом различными семантическими отношениями. Каждый из этих синсетов представляет собой

концепцию и содержит набор слов, которые относятся к этой концепции, и поэтому являются синонимами.

Предложение - основная единица связной речи, характеризуемая определенными смысловыми и структурными признаками.

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

Текстовой пассаж - отдельная часть текста, обладающая какой-то цельностью.

Любой произвольный текстовый сегмент или произвольный текстовый пассаж не обязательно имеет полный смысл.

Похожие диссертационные работы по специальности «Информационные системы и процессы, правовые аспекты информатики», 05.25.05 шифр ВАК

Список литературы диссертационного исследования кандидат наук Бермудес Сото Хосе Грегорио, 2018 год

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Jurafsky, D. and Martin, J.H. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition // Prentice-Hall, Inc. Upper Saddle River, NJ, USA. - 2009. -P. 197-211. [Электронный ресурс] URL http://www. deepsky.com/~merovech/voynich/voynich_manchu_reference_materia l s/PDF s/j urafsky_martin. pdf

2. Астапова Оксана П. Исследование и разработка методов нормализации слов русского языка // Курсовая работа. - 2012. [Электронный ресурс] URL : http://seminar. at. ispras.ru/wp-content/uploads/2012/10/Astapova-thesis.pdf.

3. Дунаев А. А. Исследовательская система для анализа текстов на естественном языке. [Электронный ресурс] URL: http://www.iis.nsk.su/files/articles/sbor_kas_13_dunaev.pdf. (Дата обращения 1705-2016)

4. Большакова Е.И., Воронцов К.В., Ефремова Н.Э., Клышинский Э.С., Лукашевич Н.В., Сапин А.С.. Автоматическая обработка текстов на естественном языке и анализ данных // учеб. Пособие. - 2017. 248 с.

5. Чубинидзе К. А. Метод синтактико-семантических шаблонов и его применение в информационной технологии интерпретации текстов: дис. канд. техн. наук. - Москва, 2006. С. 49-83.

6. Сбойчаков К. О. Автоматизированная система смысловой обработки текстов при создании электронных фондов библиотеки: дис. канд. техн. наук. - Москва, 2003. С. 13-29.

7. Козачук М. В. Концептуальный анализ текстов в системах автоматической обработки научно-технической информации: дис. канд. техн. наук. - Москва, 2002. С. 24-56.

8. Марчук Ю.Н. Компьютерная лингвистика // Ю.Н. Марчук. - М.: АСТ; Восток-Запад, -2007. - 317 с.

9. Гайдамакин Н.А. Автоматизированные информационные системы, базы и банки данных // Вводный курс: учеб. пособие / Н.А. Гайдамакин. - М.: Гелиос АРВ, - 2002. - 368 с.

10. Баранов, А.Н. Введение в прикладную лингвистику // учеб. пособие / А.Н. Баранов. - М.: Эдиториал УРСС, - 2001. - 360 с.

11. Искусственный интеллект. В 3 кн. Кн. 1. Системы общения и экспертные системы // справочник / под ред. Э.В. Попова. - М.: Радио и связь,

- 1990. - 464 с.

12. About translator google. [Электронный ресурс] URL: http://translate.google.com/about/. (Дата обращения 27-06-2016)

13. Светова С.Ю. Системы автоматизированного перевода PROMPT: Системы Translation Memory Trados. Интеграция PROMPT и Trados // С.Ю. Светова, Е.В. Косматова. В кн. Перевод: традиции и современные технология.

- М.: ВЦП, - 2002. 42-55 с.

14. Потапова Р.К. Речь: коммуникация, информация, кибернетика // учеб. пособие / Р.К. Потапова. - М .: Едиториал УРСС, - 2003. - 568 с.

15. Визуальный словарь. [Электронный ресурс]. URL: http://www.vslovar.org.ru. (Дата обращения 27-06-2016)

16. Чапайкина Н. Е. Семантический анализ текстов. Основные положения // Молодой ученый. - 2012. - №5. - С. 112-115. - URL https://moluch.ru/archive/40/4857/ (дата обращения: 17.04.2018).

17. Советский энциклопедический словарь // гл. ред. А.М. Прохоров. - 4-е изд. - М.: Сов. Энциклопедия, - 1989. - 1632 с.

18. Шанский Н.М., Иванов В.В. Современный русский язык // - М. -1987. ч I, - 27 с.

19. Языкознание. Бол. энцикл. Словарь // гл. ред. В.Н. Ярцева. - 2-е изд. -М.: Бол. рос. Энцикл., - 1998. - 685 с.

20. Хализев В. Е. Теория литературы // - М.: Высшая школа, - 2002. - 274с.

21. Реформатский А. А. Введение в языкознание // - М .: Аспект Пресс, -2005. - 60, 96 с.

22. Будагов Р. А. Очерки по языкознанию // - М.: Изд-во АН СССР. - 1953. -29 с.

23. Звегинцев В. А. История языкознания XIX-XX веков в очерках и извлечениях // - М.: Изд. МГУ, - 1964. Ч. 1, - 102 с.

24. Белошапкова В. А. Современный русский язык: Синтаксис // - М.: Высшая школа, - 1977. - 5 с.

25. Beaugrande, R.A. y Dressier, W. U. Introducción a la Lingüística del texto // edición en español. Editorial Ariel, S.A. Barcelona España. - 1997. ISBN: 84-3448215-0.

26. DiMarco, C. y Hirst, G. A computational theory of goal-directed style in syntax: Computational Linguistics // MIT Press, Volume 19, Issue 3. - 1993. - Р. 451-499.

27. Contreras Z. Y. y Dávila Q. J. Una técnica para la extracción automática de resúmenes basada en una gramática de estilo: Tesis doctoral. - Merida, - 2002. - P. 29-47.

28. Williams, J. Style: Toward Clarity and Grace // The University of Chicago Press. Chicago and London. - 1990

29. Толпеги П.В. Алгоритм автоматизированного разрешения анафоры местоимений третьего лица на основе методов машинного обучения / П.В. Толпегин, Д.П. Ветров, Д.А. Кропотов // Труды международной конференции «Диалог 2006», Компьютерная лингвистика и интеллектуальные технологии, - Бекасово, - 2006. С. 504 - 507.

30. Розенталь Д. Э., Теленкова М. А. Словарь-справочник лингвистических терминов // Пособие для учителя. - 3-е изд., испр. и доп. -М.: Просвещение, - 1985. - 399 с.

31. Muñoz T. R. Representación del conocimiento textual mediante técnicas lógico-conceptuales en aplicaciones de tecnologías del lenguaje humano: Tesis doctoral. Universidad de Alicante. España. - 2009. - P. 16-40.

32. Maurer, H., Kappe, F. y Zaka, B. Plagiarism / A Survey // Journal of Universal Computer Science, - 2006. vol. 12 (8). - P. 1050-1084.

33. Bao, J-P., Shen, J-Y., Liu, X-D., Liu, H-Y. y Zhang, X-D. Semantic Sequence Kin / A Method of Document Copy Detection // En Proceedings of Advances In Knowledge Discovery and Data Mining, Lecture Notes in Artificial Intelligence (LNAI) - Sydney, Australia, 2004a. Vol. 3056, - P. 529-538.

34. Bao, J-P., Shen, J-Y., Liu, X-D., Liu, H-Y. y Zhang, X-D. Finding Plagiarism Based on Common Semantic Sequence Model // En Proceedings of the 5th International Conference on Advances in Web-Age Information Management (WAIM): Lecture Notes in Computer Science - Dalian, China, 2004b. Vol. 3129, -P. 640-645.

35. Chi-Hong, L. y Yuen-Yan, C. 2007. A Natural Language Processing Approach to Automatic Plagiarism Detection // En Proceedings of the 8th ACM Conference on Information Technology Education (SIGITE'07) - Florida, EUA: ACM , 2007. - P. 213-218.

36. Вишняков Р.Ю., Вишняков Ю.М. Об одной модели семантической классификации методов информационного поиска. // Информатика, вычислительная техника и инженерное образование. - Таганрог: Изд-во ЮФУ, 2011, № 4(6), С. 21-24.

37. Вишняков Р. Ю., Вишняков Ю. М. Интерпретационная модель смысла текстового фрагмента // Известия ЮФУ. Технические науки. - 2013, № 7(4) -С. 152-156.

38. Вишняков Р. Ю. Семантика и смысловыразительность в информационном поиске // Известия ЮФУ. Технические науки. - 2008, . № 4(4) - С. 156-159.

39. Agirre E., Cer D., Diab M., Gonzalez-Agirre A. and Weiwei Guo. Semeval-2012 task 6 / A pilot on semantic textual similarity // In Proceedings of the 6th International Workshop on Semantic Evaluation (SemEval-2012), - Montreal, Canada2012. - P. 385-393.

40. Agirre E., Cer D., Diab M., Gonzalez-Agirre A. and Weiwei Guo. Semantic textual similarity / *Sem-2013 shared task // In 2nd Joint Conference on Lexical and Computational Semantics (*SEM), - Atlanta, Georgia, USA, 2013. - P. 32-43.

41. Michael R. and Anette F. Automatically identifying implicit arguments to improve argument linking and coherence modeling // In Proceedings of the Second Joint Conference on Lexical and Computational Semantics (*Sem-2013), - Atlanta, Georgia, USA, 2013. - P. 306-316.

42. Beltagy I. Chau C., Boleda G., Garrette D., Erk K. and Mooney R. Montague meets markov / Deep semantics with probabilistic logical form // In Proceedings of the Second Joint Conference on Lexical and Computational Semantics (*Sem-2013), - Atlanta, Georgia, USA, 2013. - P. 11-21.

43. Михайлов С.Н. Технологии интерактивного выявления смыслового содержания текстов в целях организации информационно-аналитического обеспечения научных исследований / С.Н. Михайлов, С.С. Хотынюк, А.М. Потапенко // Журнал «Известия Юго-Западного государственного университета» Серия Управление, вычислительная техника, информатика -2013. Vol. 4. - P. 29-34

44. Hearst, Marti A. TextTiling: segmenting text into multi-paragraph subtopic passages // Journal Computational Linguistics, Vol. I. 1., MIT Press, - Cambridge, USA. 1997. - P. 33-64.

45. Salton G. Automatic Text Processing: The Transformation, Analysis, and Retrieval of Information by Computer // Addison Wesley, Longman Piblishing, -Boston, USA, 1989. - P. 229-365.

46. Silva, J., & Lopes, G. A local Maxima Method and a Fair Dispersion Normalization for Extracting Multiword Units // In Proceedings of the 6th Meeting on the Mathematics of Language, - Orlando, Florida, USA, 1999. - P. 369-381.

47. Kaszkiel M. y Zobel J. Effective Ranking with Arbitrary Passages // Journal of the American Society, for Information Science (JASIS), 2001. vol. 54, - P. 344364.

48. Мильчин А. Э. Абзац // Издательский словарь-справочник // [электрон. Изд.] 3-е изд., испр. и доп.- : ОЛМА-Пресс, 2006. URL: https: //ru. wikipedia. org/wiki/Абзац

49. Валгина Н. С. Теория текста // Учебное пособие // [Электронный ресурс] - 2003. URL: http://evartist.narod.ru/text14/01.htm

50. Heinonen O. Optimal Multi-Paragraph Text Segmentation by Dynamic Programming // Proceedings of the 36th Annual Meeting of the Association for Computational Linguistics and 17th International Conference on Computational Linguistics - Vol. 2, - Montreal, Canada, 1998. - P. 1484-1486.

51. Vorontsov K. V., Potapenko A. A. Tutorial on probabilistic topic modeling: Additive regularization for stochastic matrix factorization // AIST'2014, Analysis of Images, Social networks and Texts. - Vol. 436. - Springer International Publishing Switzerland, Communications in Computer and Information Science (CCIS), 2014. - P. 29-46.

52. Salguero L. F. Resolución abductiva de anáforas pronominales. 2012 [Электронный ресурс] // URL: http://www.http://personal.us.es/fsoler/papers/ ivjornadas.pdf (Дата обращения 17-07-2016)

53. Salehi B. and Cook P. Predicting the compositionality of multiword expressions using translations in multiple languages // In Proceedings of the Second Joint Conference on Lexical and Computational Semantics (*Sem-2013), - Atlanta, Georgia, USA. 2013. - P. 266-275.

54. Шустиков В.В. компьютер поймет вас правильно // [Электронный ресурс] https://sk. ru/news/b/press/archive/2014/04/10/s-abbyy-compreno-kompyuter-poymet-vas-pravilno.aspx (Дата обращения 17-07-2016)

55. Palmer A., Lexis Horbach A. and Pinkal M. Using the text to evaluate short answers for reading comprehension exercises // In Second Joint Conference on Lexical and Computational Semantics (*SEM), Volume 2: Proceedings of the Seventh International Workshop on Semantic Evaluation (SemEval 2013), -Atlanta, Georgia, USA. 2013. - P. 520-524,

56. Вишняков Р. Ю. Разработка и исследование формализованных представлений и семантических схем предложений текстов научно-технического стиля для повышения эффективности информационного поиска: дис. канд. техн. наук. - Таганрог, 2012. С. 49-108.

57. Wikipedia. Коэффициент Жаккара. [Электронный ресурс] URL https://ru.wikipedia.org/wiki/Коэффициент_Жаккара (Дата обращения 17-072016)

58. Wikipedia. Cosine_similarity. [Электронный ресурс] URL https://en.wikipedia.org/wiki/Cosine_similarity (Дата обращения 17-07-2016)

59. Wikipedia. Расстояние Левенштейна. [Электронный ресурс] URL https://ru.wikipedia.org/wiki/Расстояние_Левенштейна (Дата обращения 17-072016)

60. Leacock C. and Chodorow M. Combining local context and wordnet similarity for word sense identification // In Christiane Fellbaum, editor, MIT Press. 1998. - P. 265-283.

61. Lesk M. Automatic sense disambiguation using machine readable dictionaries / How to tell a pine cone from an ice cream cone // In Proceedings of the 5th Annual International Conference on Systems Documentation, - Toronto, Ontario, Canada 1986. - P. 24-26. ACM.

62. Wu Zhibiao and Stone Palmer M. Verb semantics and lexical selection // In James Pustejovsky, editor, ACL, Morgan Kaufmann Publishers /ACL, - Las Cruces, New Mexico, USA, 1994. - P. 133-138.

63. Resnik P. Using information content to evaluate semantic similarity in a taxonomy. In Proceedings of the 14th International Joint Conference on Artificial Intelligence, IJCAI'95, San Francisco, CA, USA, 1995. - P. 448-453

64. Lin Dekang. An information-theoretic definition of similarity // In Proceedings of the Fifteenth International Conference on Machine Learning, ICML '98, Morgan Kaufmann Publishers Inc., - San Francisco, CA, USA, 1998. - P. 296304.

65. Jiang Jay J. and Conrath D. W. Semantic similarity based on corpus statistics and lexical taxonomy // In Proc of 10th International Conference on Research in Computational Linguistics (ROCLING'97), - Taipei, Taiwan, 1997. -P. 19-33.

66. Mihalcea R., Corley C. and Strapparava C. Corpus-based and knowledge-based measures of text semantic similarity // In Proceedings of the 21st National Conference on Artificial Intelligence, - Boston, Massachusetts, USA, 2006. - P. 775-780.

67. Turney Peter D. Mining the web for synonyms: Pmi-ir versus lsa on toefl // In Proceedings of the 12th European Conference on Machine Learning, - Freiburg, Germany, 2001. - P. 491-502.

68. Landauer Thomas K., Foltz Peter W. and Laham Darrell. An Introduction to Latent Semantic Analysis // Journal Discourse Processes, - 1998. Vol. 25. - P. 259-284.

69. Антиплагиат. [Электронный ресурс] URL: https://www.antiplagiat.ru/tariffs. (дата обращения: 19.06.2018).

70. Рогозов, Ю. И. Подход к определению метасистемы как системы. Труды Института системного анализа РАН. 2013. N° 4. С 92-110. [Электронный ресурс] URL: isa.ru/proceedings/images/documents/2013-63-4/t-4-13_92-110.pdf.

71. Quillian R. "Semantic Memory", in M. Minsky (ed.), Semantic Information Processing. 1968.

72. Пак А. Определение части речи слов в русском тексте (POS-tagging) на Python 3 [Электронный ресурс] // URL: https://habrahabr.ru/post/125988/ . 2011. (дата обращения 05-04-2017)

73. Wikipedia. Стемминг. [Электронный ресурс] URL https://ru.wikipedia.org/wiki/Стемминг (Дата обращения 17-07-2016)

74. Обучаемый конвейер для токенизации, частеречной разметки, лемматизации и анализа зависимостей файлов CoNLL-U // онлайн-сервис. URL: http://lindat.mff. cuni. cz/services/udpipe/.

75. Pevzner L., Hearst M. A Critique and Improvement of an Evaluation Metric for Text Segmentation. Journal Computational Linguistics, - 2002. Vol. 28 Issue 1, MIT Press. - P. 19-36.

76. Francesc Ll. C. Algoritmos de similitud entre cadenas de texto (php). 2015. [Электронный ресурс] URL: francescllorens.eu/OOtokenizer/dst.php.

Название: АОТ- Сравнения (Автоматическая обработка текста для сравнения)

Автор: Хосе Грегорио Бермудес Сото; Паспорт: 100618521; е-тааП: jbеrmudеsоtо@gmаil.cоm; телефон: +79885792533

Краткое описание: Многофункциональная программа на Ruby оп Rаils (RoR) для сравнения двух текстов написаны на русском языке, в своей личной коллекции документов техническо-научного стиля.

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

• Модуль токенизация: простая реализация метода токенизации рубинового языка программирования.

• Модуль таггер: простая реализация известных методов pоst-tаggеr, использующих свою собственную классификацию, которая была выполнена на основе программы TrееTаggеr [1].

• Модуль сегментация: реализация специального метода сегментации, называемого извлечением значимых пассажей [2, 3], основанная на определении смысла путём идентификации анафорических связей и глаголов, которые указывают действие.

• Модуль деревьев зависимостей: реализация синтаксического анализа (парсер), который принимает в качестве входных данных сегментированный текст и представляет его в форматированном списке терминов текста на анализа зависимостей публичной утилиты файлов CоNLL-U. UDPipе [4].

• Модуль Семантические схемы: реализация алгоритма для представления фрагментов текстов в семантических схемах [5]. Алгоритм принимает отформатированные списки деревьев зависимостей и преобразует их в списки элементов смысла схемы представления.

• Модуль сравнения: реализация специального метода текстового сравнения, основанного на совпадениях элементов смысла, с учетом семантических классов слов [6. 7, 8], участвующих в сравнении.

Исходные Тексты Модулей

• Модуль токенизация:

c^ss TоkеnizеrCоntrоllеr < аpplicаtiоnCоntrоllеr dеf indеx еnd

# PоST /tоkеnizеr

dеf tоkеnizе

dе_tоkеnizеr = Tоkеnizеr::WhitеspаcеTоkеnizеr.nеw @pаttеm = pаrаms['pаttеrn']

@pаttеrn_tоkеnizеd = dе_tоkеnizеr.tоkеnizе(@pаttеrn) еnd еnd

• Модуль таггер:

class TаggеrCоntrоllеr < аpplicаtiоnCоntrоllеr dеf indеx еnd

# PоST /tаggеr dеf tаggеr

dе_tоkеnizеr = Tоkеnizеr::WhitеspаcеTоkеnizеr.nеw @pаttеrn = pаrаms['pаttеrn']

pаttеm_tоkеnizеd = dе_tоkеnizеr.tоkеnizе(@pаttеm) @pаttеrn_tаggеd = Cоrе: :tag_pattern(pattern_tokenized) еnd еnd

dеf sеlf.tаg_pаttеm(pаttеm)

if pаttеm.prеsеnt? end pаttеm.clаss == array pаttеm_tаggеd = [] pattern.each do |item| pattern_tagged << item puts "Item: #{item}"

dictionary = Dictionary.find_by(term: item) if dictionary.present? pattern_tagged << dictionary.classification.name else

pattern_tagged << "" end end

return pattern_tagged else return nil end end

• Модуль сегментация:

class SegmentsController < applicationController def index end

# PoST /segments def segment

de_tokenizer = Tokenizer::WhitespaceTokenizer.new @pattern = params['pattern']

@pаttеrn_tоkеnizеd = dе_tоkеnizеr.tоkеnizе(@pаttеrn)

@pаssаgеs = []

@pаssаgе = ""

fоund_vеrb = fаlsе

is_аnаphоrа = fаlsе

is_punctuаtiоn = fаlsе

pаssаgе_is_cоmplеtе = fаlsе

@limitе = 0

@limitеs = []

@pаttеrn_tоkеnizеd.еаch_with_indеx dо |wоrd, kеy| wоrd_dоwn = wоrd.dоwncаsе

wоrd_in_dictiоnаry = Dictiоnаry.find_by(tеrm: wоrd_dоwn) if wоrd_in_dictiоnаry.prеsеnt? if @pаttеrn_tоkеnizеd[kеy + 1] .prеsеnt? nеxt_wоrd = @pаttеrn_tоkеnizеd[kеy + 1].dоwncаsе nеxt_wоrd_sеаrchеd = Dictiоnаry.find_by(tеrm: nеxt_wоrd) if nеxt_wоrd_sеаrchеd.prеsеnt? nеxt_wоrd_in_dictiоnаry = Dictiоnаry.find_by(tеrm: nеxt_wоrd) еЬе

nеxt_wоrd_in_dictiоnаry = wоrd_in_dictiоnаry еnd еЬе

nеxt_wоrd = wоrd_dоwn nеxt_wоrd_in_dictiоnаry = wоrd_in_dictiоnаry еnd

if wоrd_is_vеrb_а?(wоrd_in_dictiоnаry.clаssificаtiоn.nаmе) fоund_vеrb = truе @vеrb = wоrd_in_dictiоnаry.tеrm еnd

if fоund_vеrb == й^ие аnd wоrd_is_dоt_оr_sеmicоlоn?(wоrd) is_punctuаtiоn = йие pаssаgе_is_cоmplеtе = truе еnd

if is_punctuаtiоn == truе end wоrd_is_prоnоmbrе? (nеxt_wоrd_in_dictiоnаry.clаssificаtiоn.nаmе) is_аnаphоrа = truе pаssаgе_is_cоmplеtе = fаlsе @pаssаgе = @pаssаgе + wоrd nеxt еlsе

if wоrd_is_punctuаtiоn?(wоrd) @pаssаgе = @pаssаgе + wоrd еlsе

if @pаssаgе.еmpty? @pаssаgе = wоrd

@limite = @limite + 1 else

@passage = @passage + ' ' + word @limite = @limite + 1 end end end

if is_anaphora == true and word_is_dot_or_semicolon?(word) @passage = @passage + word @limite = @limite + 1 passage_is_complete = true end

if @passage.present? if passage_is_complete array = [] array << @passage @passages << array found_verb = false is_anaphora = false is_punctuation = false passage_is_complete = false

@limites << @limite @passage = "" end end

elsif word_down.present?

Dir.chdir ("/home/jbermudez/Documentos/InvestigacionTesis/TreeTagger") taggerTree = 'echo #{word_down} | cmd/tree-tagger-russian' deotro_tokenizer = Tokenizer::WhitespaceTokenizer.new tagger_tokenized = deotro_tokenizer.tokenize(taggerTree)

tagger = tagger_tokenized[1] classification = cual_classification?(tagger) dictionary = Dictionary.new(term: word_down, term_es: 'N/a') dictionary.classification_id = classification dictionary.save

puts "nueva palabra: #{word}" redo else

if @passage.empty? @passage = word @limite = @limite + 1 puts "nueva palabra: #{word}" else

@pаssаgе = @pаssаgе + ' ' + wоrd @limitе = @Нтке + 1 puts мnuеvа pаlаbrа: #{wоrd}м еnd #nеxt еnd еnd

tоtаlSеgmеntоs = @pаssаgеs.lеngth

Dir.chdir

(м/hоmе/jbеrmudеz/Dоcumеntоs/InvеstigаciоnTеsis/еxpеrimеntо100Tеxtоs/100сегм ентированы/TеxtоsTxt/м)

аrchivо = Filе.nеw(мultimоtеxtо.txtм, "w") @pаssаgеs.еаch_with_indеx dо |sеgmеntо, i| linеаNuеvа = sеgmеntо.tо_s linеаNuеvа = linеаNuеvа.gsub('[',П) linеаNuеvа = linеаNuеvа.gsub(']',П) linеаNuеvа = linеаNuеvа.gsub('"',м) аrchivо.syswritе("#{linеаNuеvа}\n") еnd аrchivо.clоsе еnd

privаtе

dеf cuаl_clаssificаtiоn?(tаggеr) if /N/.mаtch(tаggеr) rеturn 13

еlsif /P.....n/.mаtch(tаggеr)

rеturn 14

еlsif /P.....а/.mаtch(tаggеr)

rеturn 15 еlsif /R/.mаtch(tаggеr) rеturn 16 еlsif /Vmps...psp/.mаtch(tаggеr) rеturn 17

еlsif /Vmn....../.mаtch(tаggеr)

rеturn 18 еlsif /Vm.p..../.mаtch(tаggеr) rеturn 18

еlsif /Vmp...../.mаtch(tаggеr)

rеturn 18 еlsif /V/.mаtch(tаggеr) rеturn 17

еlsif /S/.mаtch(tаggеr) return 19

еlsif /Q/.mаtch(tаggеr)

return 20 elsif /a/.match(tagger) return 21 elsif /M/.match(tagger) return 22 elsif /I/.match(tagger) return 23 else

return 24 end end

def word_is_dot_or_semicolon?(word) if [';', '.'].include?(word) return true else

return false end end

def word_is_punctuation?(word) if [';', '.', ',', '!', '?', '(', ')', '-', '«', '»', ':', '-', '"', '>', '[', ']', '—', '-'].include?(word) return true else

return false end end

def word_is_verb_a?(word_classification) if word_classification == 'rnar-a.' return true else

return false end end

def word_is_pronombre?(word_classification) #en verdad se verifica si la palabra es un pronombre sustantivo

if word_classification == Устоим. сущ.' return true else

return false end end end

• Модуль деревьев зависимостей:

require 'net/http' require 'rexml/document' require 'uri'

class PresentationController < applicationController def index end

def presentationg source_content_text_io = params[:source_content_text] if params[:source_content_text] .nil? redirect_to comparisons_url, notice: t('must_indicate_both_files') return end

File.open(Rails.root .j oin('public', 'uploads',

source_content_text_io.original_filename), 'wb') do |file| file.write(source_content_text_io.read) end

if source_content_text_io.original_filename.present? de_tokenizer = Tokenizer::WhitespaceTokenizer.new

@source_content_filename_name =

source_content_text_io.original_filename

@source_content_filename_content_type = source_content_text_io.content_type.chomp

@source_content_filename_size = source_content_text_io.size

source_content_file = File.open(Rails.root .j oin('public','uploads', source_content_text_io.original_filename), 'r').read @source_content = [] source_content_file.each_line do |line| the_string = line.chomp @source_content << the_string end

@source_content.delete(@source_content[0]) @source_content.delete(@source_content[0]) nombre_archivo = source_content_text_io.original_filename nombre_archivo = nombre_archivo.sub('SF','_Formateado')

Dir.chdir

(7home/jbermudez/Documentos/InvestigacionTesis/experimento100Textos/100ce™ effrnpoBaHbi/arbolesFormateados/")

archivo = File.new("pruebaordenado.txt", 'w') puntuacion = false id = ''

nuevo_id = '' form = ''

tag = '' hеаd = '' dеpRеl = '' cоntpunt = О

@sоurcе_cоntеnt.еаch_with_indеx dо |linеа, кеу| if @sоurcе_cоntеnt[kеy] .prеsеnt? if /#/.mаtch(linеа) аrchivо.writе(linеа) аrchivо.writе("\n") #@sоurcе_cоntеnt.dеlеtе_аt(kеy) puntuаciоn = fаlsе cоntpunt = О еЬе

@sоurcе_cоntеnt_tоkеnizеd = []

@sоurcе_cоntеnt_tоkеnizеd << dе_tоkеnizеr.tоkеnizе(linеа) @sоurcе_cоntеnt_tоkеnizеd.еаch dо |wоrd| if wоrd[3] == "PUNCT" puntuаciоn = йие cоntpunt = cоntpunt +1 еЬе id = wоrd[0]

vаlоr = id.tо_i - cоntpunt nuеvо_id = vаlоr.tо_s fоrm = wоrd[1] tаg = wоrd[3] hеаd = wоrd[6] dеpRеl = wоrd[7] punt^c^n = fаlsе еnd еnd

if punt^c^n == fаlsе nuеvа_linеа = id+"\t"+nuеvо_id+"\t"+fоrm+"\t"+tаg+"\t"+hеаd+"\t"+dеpRеl аrchivо.writе(nuеvа_linеа) аrchivо.writе("\n") еnd еnd еlsе nеxt еnd еnd

атЛгуо.с^е

аrchivо = Filе.оpеn("pruеbаоrdеnаdо.txt", 'r').rеаd @sоurcе_cоntеnt = [] аrchivо.еаch_linе dо |1те| thе_string = linе.chоmp

@sоurcе_cоntеnt << thе_string еnd

аrchivо = Filе.nеw("pruеbаfоrmаtеаdо.txt", 'w') mаrcа = О

fin = @sоurcе_cоntеnt.lеngth - 1 @sоurcе_cоntеnt.еаch_with_indеx dо |linеа, кеу| id = ''

nuеvо_id = ''

fоrm = '' = ''

hеаd = '' nuеvо_hеаd = '' dеpRеl = ''

if @sоurcе_cоntеnt[kеy] .prеsеnt? if /#/.mаtch(linеа) аrchivо.writе(linеа) аrchivо.writе("\n") mаrcа = кеу nеxt еlsе

linеа_tоkеnizеd = []

linеа_tоkеnizеd << dе_tоkеnizеr.tоkеnizе(linеа) linеа_tоkеnizеd.еаch dо |wоrd| id = wоrd[0] nuеvо_id = wоrd[1] fоrm = wоrd[2] tаg = wоrd[3] hеаd = wоrd[4] dеpRеl = wоrd[5] еnd

if hеаd == "О" аnd dеpRеl == 'гоо^ nuеvа_linеа = nuеvо_id+"\t"+fоrm+"\t"+tаg+"\t"+hеаd+"\t"+dеpRеl аrchivо.writе(nuеvа_linеа) аrchivо.writе("\n") nеxt еЬе

sub_cоntеnt = []

sub_cоntеnt = @sоurcе_cоntеnt[mаrcа..fin] sub_cоntеnt.еаch_with_indеx dо |filа, j| id_cоpiа = '' nuеvо_id_cоpiа = '' fоrm_cоpiа = '' tаg_cоpiа = '' hеаd_cоpiа = '' dеpRеl_cоpiа = ''

if (/#/.match(fila)) next else

fila_tokenized = []

fila_tokenized << de_tokenizer.tokenize(fila) fila_tokenized.each do |term| id_copia = term[0] nuevo_id_copia = term[1] form_copia = term[2] tag_copia = term[3] head_copia = term[4] depRel_copia = term[5] end

if head == id_copia #and head != "0" #aqui viene el meollo nuevo_head = nuevo_id_copia

nueva_linea =

nuevo_id+"\t"+form+"\t"+tag+"\t"+nuevo_head+"\t"+depRel archivo.write(nueva_linea) archivo.write("\n") break end end end end end else next end end

archivo.close

archivo = File.open("pruebaformateado.txt", 'r').read @source_content = [] archivo.each_line do |line| the_string = line.chomp @source_content << the_string end

marca_ini = 0

marca_fin = @source_content.length - 1 mala_raiz = false id_mala_raiz = nil id_nueva_raiz = nil

@source_content.each_with_index do |linea, key| id = '' form = '' tag = ''

hеаd = ''

if /#/.mаtch(linеа) if /# sеnt_id/.mаtch(linеа) if mаlа_rаiz == tr^ mаrcа_fin = кеу - 1 та1а_^ = fаlsе

Й1а = @sоurcе_cоntеnt[id_mаlа_rаiz] filа_tоkеnizеd = []

filа_tоkеnizеd << dе_tоkеnizеr.tоkеnizе(filа) id_cоpiа = '' fоrm_cоpiа = '' tаg_cоpiа = '' hеаd_cоpiа = '' filа_tоkеnizеd.еаch dо |tеrm| id_cоpiа = tеrm[0] fоrm_cоpiа = tеrm[1] tаg_cоpiа = tеrm[2] hеаd_cоpiа = tеrm[3] еnd

id_cаmbiаr = id_nuеvа_rаiz nuеvо_hеаd ="О" id_bus = '' viеjоs = truе whilе viеjоs == truе dо if id_cаmbiаr == id_mаlа_rаiz viеjоs = fаlsе еnd

puts @sоurcе_cоntеnt[id_cаmbiаr] filа = @sоurcе_cоntеnt[id_cаmbiаr] filа_tоkеnizеd = []

filа_tоkеnizеd << dе_tоkеnizеr.tоkеnizе(filа) id_c = '' form_c = '' tаg_c = '' hеаd_c = '' dеpRеl_c = '' filа_tоkеnizеd.еаch dо id_c = tеrm[0] form_c = tеrm[1] tаg_c = tеrm[2] hеаd_c = tеrm[3] dеpRеl_c = tеrm[4] еnd

id bus = hеаd c

the_string =

id_c+"\t"+form_c+"\t"+tag_c+"\t"+nuevo_head+"\t"+depRel_c nuevo_head = id_c

@source_content[id_cambiar] = the_string puts @source_content[id_cambiar]

@source_content[marca_ini..marca_fin].each_with_index do |fila, j| fila_tokenized = []

fila_tokenized << de_tokenizer.tokenize(fila)

id_co = ''

form_co = ''

tag_co = ''

head_co = ''

depRel_co = ''

fila_tokenized.each do |term| id_co = term[0] form_co = term[1] tag_co = term[2] head_co = term[3] depRel_c0 = term[4] end

if id_bus == id_co id_cambiar = j + marca_ini break end end end

marca_ini = key + 2 marca_fin = @source_content.length - 1 else next end else

linea_tokenized = []

linea_tokenized << de_tokenizer.tokenize(linea) linea_tokenized.each do |word| id = word[0] form = word[1] tag = word[2] head = word[3] end#end del do por word if head == "0" and tag != 'VeRB' id_mala_raiz = key sub_content = []

sub_content = @source_content[marca_ini..marca_fin] sub_content.each_with_index do |fila, j|

id_cоpiа = '' fоrm_cоpiа = '' tаg_cоpiа = '' hеаd_cоpiа = '' filа_tоkеnizеd = []

filа_tоkеnizеd << dе_tоkеnizеr.tоkеnizе(filа) filа_tоkеnizеd.еаch dо id_cоpiа = tеrm[0] fоrm_cоpiа = tеrm[1] tаg_cоpiа = tеrm[2] hеаd_cоpiа = tеrm[3] еnd

wоrd_dоwn = fоrm_cоpiа.dоwncаsе

wоrd_in_dictiоnаry = Dictiоnаry.find_by(tеrm: wоrd_dоwn)

if tаg_cоpiа == 'VеRB' 8nd wоrd_is_vеrb_а? (wоrd_in_dictiоnаry.clаssificаtiоn.nаmе) id_nuеvа_rаiz = mаrcа_ini+j mаlа_rаiz = truе brеаk еnd еnd еlsе nеxt еnd еnd еnd

аrchivо = Filе.nеw(nоmbrе_аrchivо, 'w') @sоurcе_cоntеnt.еаch dо |linеа| аrchivо.writе(linеа) аrchivо.writе("\n") еnd

аrchivо.clоsе

оptiоns = { :dаtа => pаrtnеr }

url = 'http://lindаt.mff.cuni.cz/sеrvicеs/udpipе/аpi/prоcеss?mоdеl=russiаn-syntаgrus-ud-2.0-170801&tоkеnizеr&tаggеr&pаrsеr&dаtа= ' ' url.quеry = URII^t^ns)

@sоurcе_cоntеnt_tоkеnizеd = №t: :HTTP.gеt_rеspоnsе(URI.pаrsе(url)).bоdy systеm('curl -F dаtа=@ultimоtеxtо.txt -F mоdеl=russiаn-syntаgrus-ud-2.0-17О8О1 -F tоkеnizеr= -F tаggеr= -F pаrsеr= http://lindаt.mff.cuni.cz/sеrvicеs/udpipе/аpi/prоcеss') еlsе

rеdirеct_tо cоmpаrаsiоns_url, nоticе: t('twо_filеs_rеquirеd') еnd

end private

def word_is_verb_a?(word_classification) if word_classification == 'rnar-a.' return true else

return false end end end

• Модуль Семантические схемы:

class esquemasController < applicationController def index end

def esquema

source_content_text_io = params[:source_content_text] if params[:source_content_text] .nil? redirect_to comparisons_url, notice: t('must_indicate_both_files') return end

File.open(Rails.root .j oin('public', 'uploads',

source_content_text_io.original_filename), 'wb') do |file| file.write(source_content_text_io.read) end

if source_content_text_io.original_filename.present? de_tokenizer = Tokenizer::WhitespaceTokenizer.new

@source_content_filename_name =

source_content_text_io.original_filename

@source_content_filename_content_type = source_content_text_io.content_type.chomp

@source_content_filename_size = source_content_text_io.size

# se lee el contenido del archivo a procesar

source_content_file = File.open(Rails.root .j oin('public','uploads', source_content_text_io.original_filename), 'r').read @source_esquema_total = [] source_content_file.each_line do |line| the_string = line.chomp

@tokenlinea = de_tokenizer.tokenize(the_string) @source_esquema_total << @tokenlinea end

@source_esquema = [] @elementos_significados = []

nombre_archivo = source_content_text_io.original_filename

nombre_archivo =

nombre_archivo.sub('arbol_Formateado','_elementos_Significados')

Dir.chdir

(7home/jbermudez/Documentos/InvestigacionTesis/experimento100Textos/100ce™ eHTHpoBaHbi/elementosSignificados/")

archivo = File.new(nombre_archivo, 'w') listo = false

@source_esquema_total.each_with_index do |line, key| string = line.join(' ') if /#/.match(string) next else

@source_esquema << line if @source_esquema_total[key+1].present? if /#/.mateh(@source_esquema_total[key+1]join(' ')) listo = true end else listo = true end end if listo

while @source_esquema.length > 1 do id = '' form = '' #tag = '' head = '' #depRel = '' hoja = ''

@source_esquema.each_with_index do |linea, i| id = linea[0] form = linea[1] #tag = linea[2] head = linea[3] #depRel = linea[4] if linea[5] == nil linea[5] = "" end

hoja = linea[5]

if hoja == '' and !es_padre?(id) linea[5] = 'es_hoja' padre_es = quien_es_padre?(id) if head.to_i > id.to_i nuevo_elemento = form +' '+ padre_es else

nuevo_elemento = padre_es +' '+ form end

if !tiene_hermanos?(id)#si el padre tiene mas hijos, es igual a si tiene

hermanos

index_padre = index_de_id?(head) linea_padre = @source_esquema[index_padre] linea_padre[1] = nuevo_elemento else

linea_actual = @source_esquema[i] linea_actual[5] = 'fue_hoja' end

@elementos_significados << nuevo_elemento archivo.write(nuevo_elemento) archivo.write("\n") elsif linea[5] == "todos_hijos" padre_cargado = false nuevo_elemento = "" numero_hijos = cuantos_hijos?(id) @source_esquema.each do |linea_probar| if id == linea_probar[3] if id.to_i > linea_probar[0].to_i if nuevo_elemento == "" nuevo_elemento = linea_probar[1] else

nuevo_elemento = nuevo_elemento +' '+ linea_probar[1] end

numero_hijos = numero_hijos - 1 if numero_hijos == 0 nuevo_elemento = nuevo_elemento +' '+ form end

elsif linea_probar[0] .to_i > id.to_i and padre_cargado == false nuevo_elemento = nuevo_elemento +' '+ form + ' '+ linea_probar[1] padre_cargado = true else

nuevo_elemento = nuevo_elemento +' '+ linea_probar[1] end

linea_probar[5] = 'es_hoja' end end

linea[5] = ""

linea[1] = nuevo_elemento.chomp @elementos_significados << nuevo_elemento.chomp archivo.write(nuevo_elemento.chomp) archivo.write("\n") end

еnd

@sоurcе_еsquеmа.еаch dо |linеа| id = 1теа[О]

if tоdоs_hijоs_fuе_hоjаs?(id) #puts ^n 1а siguiеntе vuеltа dеbе hаbеr intеrsеcciоn' 1inеа[5] = "tоdоs_hijоs" еnd еnd

@1inеаs_а_bоrrаr = []

@sоurcе_еsquеmа.еаch_with_indеx dо |1inеа, i| if 1теа[5] == 'еs_hоjа'

@1inеаs_а_bоrrаr.push(i) еnd еnd

cоnt = О

@1inеаs_а_bоrrаr.еаch dо |indеx| @sоurcе_еsquеmа.dе1еtе_аt(indеx - cоnt) œnt = cоnt + 1 еnd

еnd

1istо = fа1sе @sоurcе_еsquеmа = [] еnd еnd

атЛгуо.с^е

@sоurcе_cоntеnt_еsquеmа = "е1 аrchivо соп 1оs е1еmеntоs dе Significаdо Ше а1mаcеnаdо еn:/hоmе/.../е1еmеntоsSignificаdоs/ \n Lоs ша^ sоn:" е1sе

rеdirеct_tо cоmpаrаsiоns_ur1, шйсе: t('twо_fi1еs_rеquirеd') еnd еnd privаtе

dеf еs_pаdrе?(id) tiеnе_hijо = fа1sе @sоurcе_еsquеmа.еаch dо |1inеа| hеаd = 1теа[3] if id == hеаd йе^^уо = truе brеаk еnd еnd

rеturn tiеnе_hijо еnd

dеf quiеn_еs_pаdrе?(id)

index_id = index_de_id?(id) padre_es = 'el papa' linea = @source_esquema[index_id] head = linea[3]

@source_esquema.each do |linea| id_padre = linea[0] form = linea[1] if head == id_padre padre_es = form end end

return padre_es end

def tiene_hermanos?(id) hijos = 0

index_id = index_de_id?(id) linea = @source_esquema[index_id] id_padre = linea [3]

@source_esquema.each do |linea_probada| id_probado = linea_probada[3] if id_padre == id_probado hijos = hijos +1 end end

if hijos > 1 return true else

return false end end

def todos_hijos_fue_hojas?(id) fueron_hojas = false numero_hijos = cuantos_hijos?(id) if es_padre?(id) @source_esquema.each do |linea_probada| if id == linea_probada[3] fueron_hojas = true if linea_probada[5] == 'fue_hoja' numero_hijos = numero_hijos - 1 else

fueron_hojas = false break end else next

еnd

if numеrо_hijоs == 0

Ьгеак еnd еnd еlsе

fuеrоn_hоjаs = fаlsе еnd

rеtum fuеrоn_hоjаs еnd

dеf cuаntоs_hijоs?(id) numеrо_hijоs = 0 @sоurcе_еsquеmа.еаch dо |linеа| if 1теа[3] == id numеrо_hijоs = питего_М^ + 1 еnd еnd

геШгп numеrо_hijоs еnd

dеf indеx_dе_id?(id) ^ех^ = 0

@sоurcе_еsquеmа.еаch_with_indеx dо |1теа, i| if linеа[0] == id indеx_id = i brеаk еnd еnd

rеtum indеx_id еnd еnd

• Модуль сравнения:

clаss CоmpаrisоnsCоntrоllеr < аpplicаtiоnCоntrоllеr dеf indеx еnd

dеf cоmpаrisоn sоurcе_cоntеnt_tеxt_iо = pаrаms[:sоurcе_cоntеnt_tеxt] cоntеnt_tо_cоmpаrе_tеxt_iо = pаrаms[:cоntеnt_tо_cоmpаrе_tеxt] if pаrаms[:sоurcе_cоntеnt_tеxt].nil? ог pаrаms[:cоntеnt_tо_cоmpаrе_tеxt].nil? rеdirеct_tо cоmpаrisоns_url, пойсе: t('must_indicаtе_bоth_filеs') rеturn еnd

Filе.оpеn(Rаils.rооt о оin('public', 'uplоаds',

sоurcе_cоntеnt_tеxt_iо.оriginаl_filеnаmе), ^Ь') dо |£11е| fi1е.writе(sоurcе_cоntеnt_tеxt_iо.rеаd) еnd

File.open(Rails.root .j oin('public', 'uploads',

content_to_compare_text_io.original_filename), 'wb') do |file| file.write(content_to_compare_text_io.read) end

if source_content_text_io.original_filename.present? and content_to_compare_text_io.original_filename.present? de_tokenizer = Tokenizer::WhitespaceTokenizer.new

@source_content_filename_name =

source_content_text_io.original_filename

@source_content_filename_content_type = source_content_text_io.content_type.chomp

@source_content_filename_size = source_content_text_io.size

source_content_file = File.open(Rails.root .j oin('public','uploads', source_content_text_io.original_filename), 'r').read @source_content = [] source_content_file.each_line do |line| line = line.downcase the_string = line.chomp the_string = the_string.downcase @source_content << the_string end

@source_content_tokenized = [] @source_content.each do |line|

@source_content_tokenized << de_tokenizer.tokenize(line) end

@content_to_compare_filename_name =

content_to_compare_text_io.original_filename

@content_to_compare_filename_content_type = content_to_compare_text_io.content_type.chomp

@content_to_compare_filename_size = content_to_compare_text_io.size # se lee el contenido del archivo a comparar

pattern_file = File.open(Rails.root.join('public','uploads', content_to_compare_text_io.original_filename), 'r').read @content_to_compare = [] pattern_file.each_line do |line| line = line.downcase the_string = line.chomp the_string = the_string.downcase @content_to_compare << the_string end

@content_to_compare_tokenized = [] @content_to_compare.each do |line|

@content_to_compare_tokenized << de_tokenizer.tokenize(line) end

content_to_compare_tokenized_copia = []

@cоntеnt_tо_cоmpаrе.еаch dо |1inе| cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа << dе_tоkеnizеr.tоkеnizе(1inе) еnd

@synоnym_1еvе1_cоntеnt_tо_cоmpаrе = [] @synоnym_1еvе1_cоntеnt_tо_cоmpаrе_Sin = [] @synоnym_1еvе1_cоntеnt_tо_cоmpаrе_Vich = [] @id_mаtch_cоntеnt_tо_cоmpаrе = [] @sоurcе_cоntеnt.еаch_with_indеx dо |cоntеnt1, кеу1| synоnym_1еvе1_mаx = О id_mаtch = nil synоnym_1еvе1 = О

@cоntеnt_tо_cоmpаrе.еаch_with_indеx dо |cоntеnt2, кеу2|

synоnym_1еvе1

Cоrе::cа1cu1аtе_synоnym_1еvе1(@sоurcе_cоntеnt_tоkеnizеd[kеy1], cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа[kеy2]) if synоnym_1еvе1 > synоnym_1еvе1_mаx synоnym_1еvе1_mаx = synоnym_1еvе1 id_mаtch = кеу2 еnd еnd

@synоnym_1еvе1_cоntеnt_tо_cоmpаrе << synоnym_1еvе1_mаx @id_mаtch_cоntеnt_tо_cоmpаrе << id_mаtch if id_mаtch != nil

cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа[id_mаtch] = ["xx", "xx"] еnd еnd

cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа = [] @cоntеnt_tо_cоmpаrе.еаch dо |1inе| cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа << dе_tоkеnizеr.tоkеnizе(1inе) еnd

@sоurcе_cоntеnt.еаch_with_indеx dо |cоntеnt1, кеу1| synоnym_1еvе1_mаx = О id_mаtch = nil synоnym_1еvе1 = О

@cоntеnt_tо_cоmpаrе.еаch_with_indеx dо |cоntеnt2, кеу2|

synоnym_1еvе1

Соге: : cа1cu1аtе_synоnym_1еvе1_Sin(@sоurcе_cоntеnt_tоkеnizеd[kеy1 ], cоntеnt_tо_cоmpаrе_tоkеnizеd_cоpiа[kеy2]) if synоnym_1еvе1 > synоnym_1еvе1_mаx synоnym_1еvе1_mаx = synоnym_1еvе1 id_mаtch = кеу2 еnd еnd

@synоnym_1еvе1_cоntеnt_tо_cоmpаrе_Sin << synоnym_1еvе1_mаx if id mаtch != nil

content_to_compare_tokenized_copia[id_match] = ["xx", "xx"] end end

content_to_compare_tokenized_copia = [] @content_to_compare.each do |line| content_to_compare_tokenized_copia << de_tokenizer.tokenize(line) end

@source_content.each_with_index do |content1, key1| synonym_level_max = 0 id_match = nil synonym_level = 0

@content_to_compare.each_with_index do |content2, key2|

synonym_level = Core:: calculate_synonym_level_Vich(@source_content_tokenized[key1 ], content_to_compare_tokenized_copia[key2]) if synonym_level > synonym_level_max synonym_level_max = synonym_level id_match = key2 end end

@synonym_level_content_to_compare_Vich << synonym_level_max if id_match != nil

content_to_compare_tokenized_copia[id_match] = ["xx", "xx"] end end

average = 0

@synonym_level_content_to_compare.each do |num| average = average + num end

@average_synonym_level =

((average/@synonym_level_content_to_compare.length)*5)/3 #Verificar 5/3 de corrección average = 0

@synonym_level_content_to_compare_Sin.each do |num| average = average + num end

@average_synonym_level_Sin =

average/@synonym_level_content_to_compare.length average = 0

@synonym_level_content_to_compare_Vich.each do |num| average = average + num end

@average_synonym_level_Vich =

average/@synonym_level_content_to_compare.length else

ге&гесМю cоmpаrаsiоns_ur1, nоticе: t('twо_fi1еs_rеquirеd') еnd еnd privаtе еnd

• Вспомогательные модули:

c1аss QаssificаtiоnsCоntrо11еr < аpp1icаtiоnCоntrо11еr Ье&ге_асйоп :sеt_c1аssificаtiоn, оп1у: [:shоw, :еdit, :updаtе, :dеstrоy]

# GеT /c1аssificаtiоns

# GеT /c1аssificаtiоns.jsоn dеf indеx

@c1аssificаtiоns = Qаssificаtiоn.а11.оrdеr(:nаmе) еnd

# GеT /c1аssificаtiоns/nеw dеf nеw

@c1аssificаtiоn = Qаssificаtюn.nеw еnd

# GеT /c1аssificаtiоns/1/еdit dеf еdit

еnd

# PоST /c1аssificаtiоns

# PоST /c1аssificаtiоns.jsоn dеf crеаtе

@c1аssificаtiоn = Qаssificаtiоn.nеw(c1аssificаtiоn_pаrаms)

rеspоnd_tо dо |fоrmаt| if @c1аssificаtiоn.sаvе

йта^М! { rеdirеct_tо c1аssificаtiоns_ur1, nоticе: t('c1аssificаtюn_wаs_succеssfu11y_crеаtеd') } е1sе

fоrmаt.htm1 { rеndеr :nеw } еnd еnd еnd

# РаТСН/РиТ /c1аssificаtiоns/1

# РаТСН/РиТ /с^йсайош/^оп dеf updаtе

rеspоnd_tо dо |fоrmаt|

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