Научная статья на тему 'К вопросу о токенизации текста'

К вопросу о токенизации текста Текст научной статьи по специальности «Языкознание и литературоведение»

CC BY
810
114
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ТОКЕНИЗАЦИЯ / ОБРАБОТКА ЕСТЕСТВЕННЫХ ЯЗЫКОВ / РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ / PYTHON / TOKENIZATION / NATURAL LANGUAGE PROCESSING / REGULAR EXPRESSIONS

Аннотация научной статьи по языкознанию и литературоведению, автор научной работы — Гречачин В.А.

Предметом исследования данной статьи являются инструменты обработки естественных языков, необходимые для токенизации текста. В статье рассмотрены NLTK (Natural language toolkit) и регулярные выражения. На конкретном примере рассмотрены возможности этих инструментов. В качестве среды программирования использован язык Python. Кроме того, рассмотрена проблема гибкости инструментов токенизации текста. Анализ возможностей NLTK и регулярных выражений позволил сделать выводы о гибкости рассматриваемых инструментов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE ISSUE OF TEXT TOKENIZATION

The research subject of this article are the tools of natural language processing for text tokenization. The article considers NLTK (Natural language toolkit) and regular expressions. A specific example describes the possibilities of these tools. Python used as the programming environment for NLP. In addition, the article describes the problem of the flexibility of tokenization tools of the text. The analysis of possibilities of NLTK and regular expressions allowed us to draw conclusions about the flexibility of the reporting tools.

Текст научной работы на тему «К вопросу о токенизации текста»

8. Fialkova L., Yelenevskaya M. In Search of the Self: Reconciling the Past and the present in Immigrants' Experience. Tartu ELM Scholarly Press, 2013. 282 p.

9. Lewis P. Cracking up. American humour in a time of conflict. The University of Chicago Press, 2006. 277 p.

References

1. Bazylev V.N. Politicheskiy diskurs v Rossii. // Politicheskaya lingvistika. Vypusk № 15 / 2005 S. 5-32.

2. Gornostayeva A.A. Ironiya kak component angliyskogo stilya kommunikatsii. Monografiya. M.: IPTS "Maska", 2013. -240 s.

3. Dmitriyev A.V. Sotsiologiya yumora. - M.: Izdatel"stvo RAN, 1996.

4. Ivanyushkin A.A. Politicheskiy yumor kak factor vzaimodeystviya obshchestva i vlasti. Diss... kand. polit. nauk, Moskva, 2006. - 154 s.

5. Sheygal Y.I. Semiotika politicheskogo diskursa: monografiya. - Moskva - Volgograd: Peremena, 2000. - 367 s.

6. Shmelyova Y.Y., Shmelyov A.D. Politicheskiy anekdot: tipy kommunikativnyh neudach. - M. - Znaniye, 2002. - 25 s.

DOI: 10.18454/IRJ.2016.48.070 Гречачин В.А.

ORCID: 0000-0002-1595-0995, Аспирант, Башкирский государственный университет К ВОПРОСУ О ТОКЕНИЗАЦИИ ТЕКСТА

Аннотация

Предметом исследования данной статьи являются инструменты обработки естественных языков, необходимые для токенизации текста. В статье рассмотрены NLTK (Natural language toolkit) и регулярные выражения. На конкретном примере рассмотрены возможности этих инструментов. В качестве среды программирования использован язык Python. Кроме того, рассмотрена проблема гибкости инструментов токенизации текста. Анализ возможностей NLTK и регулярных выражений позволил сделать выводы о гибкости рассматриваемых инструментов.

Ключевые слова: токенизация, обработка естественных языков, регулярные выражения, Python.

Grechachin V.A.

ORCID: 0000-0002-1595-0995, Postgraduate student, Bashkir State University THE ISSUE OF TEXT TOKENIZATION

Abstract

The research subject of this article are the tools of natural language processing for text tokenization. The article considers NLTK (Natural language toolkit) and regular expressions. A specific example describes the possibilities of these tools. Python used as the programming environment for NLP. In addition, the article describes the problem of the flexibility of tokenization tools of the text. The analysis of possibilities of NLTK and regular expressions allowed us to draw conclusions about the flexibility of the reporting tools.

Keywords: tokenization, natural language processing, regular expressions, Python.

На сегодняшний день существует множество способов токенизировать текст, то есть разбить электронный текст на отдельно значимые единицы для последующей компьютерной обработки этих единиц. Существуют различные программы-токенизаторы, например, Stanford Tokenizer или специальные библиотеки, например, NLTK. Зачастую у разработчиков лингвистических корпусов возникают определенные требования к токенизации текста, которые не способны удовлетворить существующие программы и библиотеки. В данной статье мы будем рассматривать наиболее гибкий инструмент для токенизации текста - регулярные выражения, покажем преимущества этого инструмента.

Для токенизации мы будем использовать компьютер с установленными Python версии 3.4, который обладает встроенными регулярными выражениями, и библиотекой NLTK (Natural Language Toolkit). «NLTK представляет собой набор инструментов для Python, который направлен на работу с естественными языками» [2].

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

«Этот мудреный и хлопотливый «случай» (как выражался сам Тоцкий) начался очень давно, лет восемнадцать этак назад. Рядом с одним из богатейших поместий Афанасия Ивановича, в одной из срединных губерний, бедствовал один мелкопоместный и беднейший помещик. Это был человек замечательный по своим беспрерывным и анекдотическим неудачам, - один отставной офицер, хорошей дворянской фамилии, и даже в этом отношении почище Тоцкого, некто Филипп Александрович Барашков. Весь задолжавшийся и заложившийся, он успел уже наконец после каторжных, почти мужичьих трудов устроить кое-как свое маленькое хозяйство удовлетворительно». [1] Ф. М. Достоевский «Идиот», 1869 г.

Сперва мы запускаем Python 3.4 и перед нами возникает интрепретатор, куда мы должны вводить команды. Попробуем произвести автоматическую токенизацию с помощью NLTK. Для этого нам нужно ввести серию команд (читатель может воспроизвести все описанное здесь на своем компьютере, установив необходимое ПО, создав текстовый файл text.txt в личной папке пользователя и скопировав в него приведенную выше последовательность символов):

import nltk, re #(1)

from nltk import word_tokenize #(2)

f = open('TeKCT.txt') #(3)

raw = f.read() #(4)

tokens = word_tokenize(raw) #(5)

Командой (1) мы импортируем в Python библиотеку NLTK и регулярные выражения (re - regular expressions), которые пригодятся нам в дальнейшем. В (2) мы импортируем в Python функцию автоматической токенизации word_tokenize() из библиотеки NLTK. В (3) мы присваиваем переменнойf значение для открытия документа TeKcm.txt. Далее, в (4) функция f.read() читает содержимое переменной f которое мы присваиваем переменной raw. Теперь значением переменной raw является строка, состоящая из данного текста. В (5) с помощью функции NLTK word tokenize(raw) мы токенизируем текст, а значение, которое получилось после совершения этой операции мы присваиваем переменной tokens. Теперь текст представляет собой список. Полученный список состоит из элементов, которые получились в результате деления строки на токены. Теперь мы можем помечать элементы тэгами, подсчитывать элементы, группировать, убирать ненужные и добавлять необходимые. Например, мы можем убрать все неинформативные и стоп-слова просто вычитая их из текста. Для того, чтобы просмотреть элементы списка в доступном человеку виде, вводим в интерпретатор команду print(tokens) и получаем содержимое переменной tokens:

['«Этот', 'мудреный', 'и', 'хлопотливый', '«случай»', '(', 'как', 'выражался', 'сам', 'Тоцкий', ')', 'начался', 'очень', 'давно', ',', 'лет', 'восемнадцать', 'этак', 'назад', '.', 'Рядом', 'с', 'одним', 'из', 'богатейших', 'поместий', 'Афанасия', 'Ивановича', ',', 'в', 'одной', 'из', 'срединных', 'губерний', ',', 'бедствовал', 'один', 'мелкопоместный', 'и', 'беднейший', 'помещик', '.', 'Это', 'был', 'человек', 'замечательный', 'по', 'своим', 'беспрерывным', 'и', 'анекдотическим', 'неудачам', ',', '-', 'один', 'отставной', 'офицер', ',', 'хорошей', 'дворянской', 'фамилии', ',', 'и', 'даже', 'в', 'этом', 'отношении', 'почище', 'Тоцкого', ',', 'некто', 'Филипп', 'Александрович', 'Барашков', '.', 'Весь', 'задолжавшийся', 'и', 'заложившийся', ',', 'он', 'успел', 'уже', 'наконец', 'после', 'каторжных', ',', 'почти', 'мужичьих', 'трудов', 'устроить', 'кое-как', 'свое', 'маленькое', 'хозяйство', 'удовлетворительно»', '.', '[', '1', ']', 'Ф.', 'М.', 'Достоевский', '«Идиот»', ',', '1869', 'г', '.']

Квадратные скобки показывают, что это список. Внутри кавычек содержатся значения элементов. Каждый элемент обладает индексом, например, нулевой элемент этого списка - '«Этот'. Как мы видим, автоматический токенизатор NLTK полностью не справился со своей задачей. Перечислим ошибки, которые он допустил: '«Этот'; '«случай»'; 'удовлетворительно»'; '«Идиот»'; 'г', '.'. Кроме того, нам может понадобиться токенизировать ссылку [1] и Ф. М. Достоевский как один элемент, для поиска в тексте авторства, или же токенизировать дату целиком, например, 1869 г.

Теперь попробуем токенизировать данный текст с помощью регулярных выражений. Возвращаемся к переменной raw, которая содержит строку с текстом, в ней мы и будем проводить поиск подстрок. Для этого в интерпретатор Python вводим:

Text = re.findall(r'''(?x) #(1.1)

\w+(?:[-]\w+) #(1.2)

|(?:\d+)\sr+\. #(1.3) | [А-Я] V\s [А-Я] \.\s [А-Я] [а-я]+ #(1.4)

|\[\d+,?\d*\] #(1.5)

|[«»] #(1.6)

|[-\.(] #(1.7)

|\S\w* #(1.8)

''', raw) #(1.9)

Все, что находится между тройными кавычками в приведенной выше команде, есть «алгебраические обозначения, необходимые для спецификации набора строк, то есть для создания шаблонов» [1, с.18]. Поясним, что означают использованные нами выражения. С полным списком регулярных выражений можно ознакомиться в книге «Speech and Language Processing» Daniel Jurafsky, James H. Martin.

В (1.1) мы присваиваем значение переменной Text, которое получим в результате выполнения функции re.findall() на строке raw, с помощью регулярных выражений. Результатами поиска будут подстроки, которые станут элементами списка. Далее в скобках функции re.findall() мы задаем шаблон. В (1.2) мы ищем слова с дефисами, в нашем случае под этот шаблон попадает местоименное неопределенное наречие кое-как. Каждый отдельный шаблон мы разделяем дизъюнктором «|». В (1.3) мы ищем даты, извлекая подстроку, содержащую цифровой символ (\d), который может повторяться (+), за которым следует пробел (\s), после которого идет г и точка (V), в нашем случае это 1869 г. В (1.4) мы извлекаем имена формата И. О. Фамилия. Выражение дает команду искать подстроку, содержащую заглавную букву от А до Я, после которой стоит точка, после идет пробел, после снова заглавная буква от А до Я с точкой и пробелом, а затем заглавная буква от А до Я, после которой идет строчная буква от а до я, которая может повторяться. В (1.5) ищем ссылки в квадратных скобках с указанием страниц и без. В (1.6) ищем все кавычки. В (1.7) тире, точки, запятые. В (1.8) несокращенные слова и цифры - даты, номера, цены и т. д. В (1.9) указываем, что поиск проводим в строке raw.

Теперь посмотрим, что у нас получилось с помощью функции print(Text) :

print(Text)

['«', 'Этот', 'мудреный', 'и', 'хлопотливый', '«', 'случай', '»', '(', 'как', 'выражался', 'сам', 'Тоцкий', ')', 'начался', 'очень', 'давно', ',', 'лет', 'восемнадцать', 'этак', 'назад', '.', 'Рядом', 'с', 'одним', 'из', 'богатейших', 'поместий', 'Афанасия', 'Ивановича', ',', 'в', 'одной', 'из', 'срединных', 'губерний', ',', 'бедствовал', 'один', 'мелкопоместный', 'и', 'беднейший', 'помещик', '.', 'Это', 'был', 'человек', 'замечательный', 'по', 'своим', 'беспрерывным', 'и', 'анекдотическим', 'неудачам', ',', '—', 'один', 'отставной', 'офицер', ',', 'хорошей', 'дворянской', 'фамилии', ',', 'и', 'даже', 'в', 'этом', 'отношении', 'почище', 'Тоцкого', ',', 'некто', 'Филипп', 'Александрович', 'Барашков', '.', 'Весь', 'задолжавшийся', 'и', 'заложившийся', ',', 'он', 'успел', 'уже', 'наконец', 'после', 'каторжных', ',', 'почти', 'мужичьих', 'трудов', 'устроить', 'кое-как', 'свое', 'маленькое', 'хозяйство', 'удовлетворительно', '»', '.', '[1]', 'Ф. М. Достоевский', '«', 'Идиот', '»', ',', '1869 г.']

Как мы видим, данный текст токенизирован так, как нам необходимо. Теперь мы можем подсчитать количество всех элементов, отдельных элементов с помощью функции len(). Не составит труда построить конкорданс, построить график частотного распределения слов с помощью nltk.FreqDist(). Кроме того, теперь мы можем создать словарь слов текста с помощью функций set() и sorted(). Таким образом текст готов для дальнейших процедур NLP.

Литература

1. Jurafsky, D. Speech and Langauge Processing I D. Jurafsky, J. H. Martin. - 2nd edition. - New Jersey: Prentice Hall, 200S. - 1024 p.

2. Natural Language Processing with Python [Электронный ресурс] URL: http:IIwww.nltk.orgIbookIch00.html (дата обращения 13.05.2016).

References

1. Jurafsky, D. Speech and Langauge Processing I D. Jurafsky, J. H. Martin. - 2nd edition. - New Jersey: Prentice Hall, 200S. - 1024 p.

2. Natural Language Processing with Python [Jelektronnyj resurs] URL: http:IIwww.nltk.org/bookIch00.html (data obrashhenija 13.05.2016).

DOI: 10.18454/IRJ.2016.48.079 Дружинин А.С.1, Песина С.А.2

1 Кандидат филологических наук, кафедра английского языка № 1 МГИМО (У) МИД России 2Доктор филологических наук, доктор философских наук, профессор, МГТУ им. Г.И. Нососва

КОГНИТИВНАЯ ИНТЕРПРЕТАЦИЯ «ПЕРФЕКТНЫХ» ВИДО-ВРЕМЕННЫХ ФОРМ АНГЛИЙСКОГО

ЯЗЫКА

Аннотация

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

Ключевые слова: биокогнитивная семантика, перфектные формы, видо-временные глагольные формы, когнитивный подход.

Druzhinin A.S.1, Pesina S.A.2

1PhD in Linguistics, 1st English Department, MGIMO University

2PhD in Linguistics, PhD in Philosophy, Professor, MGTU named after G. I. Nosov COGNITIVE INTERPRETATION OF ENGLISH "PERFECT" ASPECT-TENSE FORMS

Abstract

The article offers a cognitive subject-oriented perspective on English perfect tense forms. The author endeavors to define and formulate their semantic representations which are supposed to meet three prime objectives, namely to 1) reflect the orientation effect used by a languager in the process of speech production as coordination of his/her own interactions; 2) interptret the meaningful content and mental imaging associated in the subject's mind with this grammar form; 3) serve as an auxiliary technique in understnding and explaining English grammar for various teaching and learning purposes.

Keywords: biocognitive semantics, perfect forms, aspect-tense forms, cognitive approach.

The hypotheses of bio-cognitive semantics and formulated principles of the subject's cognitive accumulation of Trammar knowledge in the language environment they socialize imply that we should not trap ourselves in a vicious circle of independently existing forms and structures named 'items of grammar' [1,2,4]. Hence, all that impels us to look at the so-called perfect forms from the point of view of language routine and its semiotic value, in other words, make an attempt at identifying the semantic representation which is lodged in people's minds by the language form.

In the first place, to understand the true nature of languaging the idea of 'perfection' (we will challenge this term later o n) we should pay attention to the sense-bearing peculiarity of recurrent 'have+done' usage. In fact, we all take it for granted that the idea of knowing, for example, can be expressed in English with the help of the verb learn, only somehow formally

i Надоели баннеры? Вы всегда можете отключить рекламу.