Представление и обработка композиции, вариации и аппроксимации в языковых ресурсах и инструментах
Аннотация
В моей докторской диссертации, предназначенной для подтверждения моих способностей и зрелости для руководства исследовательской деятельности, я представляю панораму нескольких тем в компьютерной лингвистике, лингвистике и информатика. В последнее десятилетие меня особенно интересовали явления композиционности. и вариативность языковых объектов. Я иллюстрирую преимущества композиционного подхода к языку в области обнаружения эмоций, и я объясню, как некоторые лингвистические объекты, наиболее заметно многословные выражения, бросают вызов принципам композиционности. я демонстрирую что сложные свойства MWE, особенно изменчивость, частично регулярны, а частично идиосинкразический. Этот факт ставит MWE на границу между различными уровнями лингвистического обработка, такая как лексика и синтаксис. Я показываю в высшей степени гетерогенную природу MWE, ссылаясь на две их существующие таксономии. После обширного современного исследования описания и обработки MWE я резюмирую Multiflex, формализм и инструмент для лексического качественного морфосинтаксического описания MWU. Он использует основанный на графике подход, в котором перегиб MWU выражается в функции морфология его компонентов и паттерны морфосинтаксической трансформации. Из-за унификации флексионные парадигмы представлены компактно. Орфографические, флективные и синтаксические варианты рассматриваются в тех же рамках. Предложение многоязычное: оно имеет был протестирован на шести европейских языках трех разных происхождений (германском, романском и славянском), Я считаю, что многие другие также могут быть успешно охвачены. Multiflex доказал свою совместимость. Это адаптируется к различным морфологическим языковым моделям, определениям границ токенов и лежащим в их основе модули для морфологии отдельных слов. Применяется для создания и обогащения языковых ресурсов, а также к морфосинтаксическому анализу и генерации.
регулярное выражение — Анализ строк отдельных слов и групп слов внутри кавычек с использованием регулярных выражений в Ruby ‘Линия два’, пушистый кит, ‘Rolly Polly’ вычурный кит «третьей линии» вычурный кит «четвёртая линия» ‘линия пять’ ‘рыбьи головы’ линия шесть
Я хочу использовать одно регулярное выражение для отображения желаемого результата. Я уже знаю, как это сделать, чтобы получить желаемый результат, но Мне нужно одно выражение .
Требуемый результат :
["line1"] ["Линия вторая", "вычурная", "кит", "ролли полли"] ["нечеткий", "третья линия", "кит"] ["вычурный", "кит", "четвёртая строка"] ["пятая строка", "рыбьи головы"] ["линия", "шесть"]
Чтение строки у меня уже обработано через Cucumber.
Каждая строка читается как одно строковое значение, и я хочу проанализировать отдельные слова и любое количество слов, содержащихся в одинарных кавычках. Я почти ничего не знаю о регулярных выражениях, но я собрал регулярное выражение, используя оператор регулярного выражения «или» («|»), который приблизил меня к этому.Взяв это регулярное выражение, я сначала попытался проанализировать каждую строку, используя разделение строки:
text_line.split(/(\w+)|'(.*?)'/)
В результате чего получились следующие менее приемлемые массивы:
["", "line1"] ["", "Линия вторая", " ", "фудги", " ", "кит", " ", "Rolly Polly"] ["", "вычурный", " ", "третья строка", " ", "кит"] ["", "вычурный", " ", "кит", " ", "четвёртая строка"] ["", "пятая строка", " ", "рыбьи головы"] ["", "линия", "", "шесть"]
Затем я попытался использовать сканирование вместо разделения и увидел это:
text_line.scan(/(\w+)|'(.*?)'/) [["строка1", ноль]] [[nil, "Line two"], ["fudgy", nil], ["whale", nil], [nil, "rolly polly"]] [["нечеткий", ноль], [ноль, "третья строка"], ["кит", ноль]] [["нечеткий", ноль,], ["кит", ноль], [ноль, "четвёртая строка"]] [[ноль, "строка пять"], [ноль, "рыбьи головы"]] [["строка", ноль], [ноль, "шесть",]]
Таким образом, я мог видеть, что оператор регулярного выражения «или» производил значение для каждой возможной позиции «или», которая имела смысл. Зная, что я понял, что могу использовать сканирование, сведение и сжатие, чтобы очистить его, я получил 9 баллов.0013 желаемый результат :
text_line.scan(/(\w+)|'(.*?)'/).flatten.compact ["линия 1"] ["Линия вторая", "вычурная", "кит", "ролли полли"] ["нечеткий", "третья линия", "кит"] ["вычурный", "кит", "четвёртая строка"] ["пятая строка", "рыбьи головы"] ["линия", "шесть"]
Но использование сканирования, сглаживания и сжатия выглядит невероятно уродливо, и кажется, что я просто обезьяна, исправляющая свое собственное плохое регулярное выражение. Я думаю, что вместо того, чтобы неуклюже исправлять небрежный вывод из моего плохо построенного регулярного выражения, я должен просто написать лучшее регулярное выражение.
Итак, можно ли использовать одно регулярное выражение для разбора приведенных выше строк и получения желаемого результата ? Я могу быть далеко от регулярного выражения для начала, но я думаю, что если бы я мог просто как-то сгруппировать или, чтобы они возвращали только одно значение для каждой группы, это, вероятно, было бы тем, что я ищу.