Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Что лучше всего подходит для текстовой аналитики между Python и R? Почему?

ПрограммированиеData science+3
Анонимный вопрос
Data Science
  · 7,4 K
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 9 мар 2022
Python работает быстрее для всех типов текстовой аналитики.
=======================
Регулярные выражения — отличный инструмент для анализа текста или НЛП (Python regex). Regex хорошо работает с Pandas.
=======================
Увлекательный инструмент программирования, доступный в большинстве языков программирования — регулярные выражения, также называемые регулярными выражениями. Это очень мощный инструмент программирования, который используется для различных целей, таких как извлечение функций из текста, замена строк и другие манипуляции со строками. Регулярное выражение — это набор символов или шаблон, который используется для поиска подстрок в заданной строке. напр. извлечение всех хэштегов из твита, получение идентификатора электронной почты или номеров телефонов и т. д. из большого неструктурированного текстового контента. Короче говоря, если в какой-либо строке есть шаблон, вы можете легко извлечь, заменить и выполнить множество других операций со строками, используя регулярные выражения. Регулярные выражения сами по себе являются языком, поскольку у них есть собственные компиляторы, и почти все популярные языки программирования поддерживают работу с регулярными выражениями. Не будет преувеличением отметить, что без понимания регулярных выражений невозможно действительно построить систему на основе НЛП, такую
как чат-боты, диалоговый пользовательский интерфейс и т. д. Regex имеет много важных элементов и функций, которые помогают создать полезную , подходит для решения целевых выражений для извлечения строк или манипулирования ими.
Давайте рассмотрим каждый из них в следующих нескольких разделах.
Общие функции регулярных выражений
1. re.search() — определяет, присутствует ли данный шаблон регулярного выражения в данной входной строке. Он возвращает объект Regex, если шаблон найден в строке, иначе он возвращает объект None.
re.search(шаблоны, текст). В функциях поиска можно использовать разные флаги для выполнения определенных операций. Например
‘re.I’ — игнорировать регистр текста,re.M — позволяет искать в нескольких строках,re.search(шаблон, строка, flags=re.I | re.M)
2.match.start() и match.end() — возвращает индекс начальной и конечной позиции найденного совпадения соответственно.
3.re.match() — функция match сработает только в том случае, если шаблон присутствует в самом начале строки.
re.match(шаблоны, текст),4. re.sub() — используется для замены подстроки другой подстрокой. для эл. заменить слово «цвет» на слово «цвет».
re.sub(шаблон, замена, ввод текста),
4.finditer() или findall(). Результатом функции findall() является список всех совпадений, а функция finditer() используется в цикле for для перебора каждого отдельного совпадения одно за другим.
5.re.compile() — эта функция сохраняет шаблон регулярного выражения в кэш-памяти для более быстрого поиска. Вам нужно передать шаблон регулярного выражения в функцию re.compile().
# без функции re.compile()
Квантификаторы — позволяют указать и контролировать, сколько раз определенный шаблон символов должен встречаться в заданном тексте. напр. В некоторых заданных данных, в которых есть варианты слова «Программа». напр. «Программа», «Запрограммировано», «Программист». если требуется найти только те слова, в которых одно или несколько вхождений «е» встречаются в слове «Программа». Вы можете использовать любой из следующих квантификаторов, чтобы указать наличие определенного символа
‘?’ — соответствует предыдущему символу ноль или один раз. Обычно он используется для обозначения необязательного присутствия символа.
‘*’ — квантификатор используется для обозначения присутствия предшествующего символа ноль или более раз.
‘+’ — квантификатор соответствует предыдущему символу один или несколько раз. Это означает, что предшествующий символ должен присутствовать хотя бы один раз, чтобы шаблон соответствовал строке.
Квантификатор {m,n} — существует четыре варианта этого квантификатора.
{m, n}: соответствует предыдущему символу от «m» до «n» раз.
{m, }: соответствует предыдущему символу «m» раз до бесконечности, т. е. нет верхнего предела появления предыдущего символа.
{, n}: Соответствует предыдущему символу от нуля до 'n' раз, т. е. фиксируется верхний предел в отношении появления предшествующего символа.
{n}: соответствует, если предшествующий символ встречается ровно n раз.
Каждый из ранее упомянутых кванторов может быть записан в виде квантора {m,n} —
‘?’ эквивалентен нулю или один раз, или {0, 1}
‘*’ эквивалентен нулю или более раз или {0, }
«+» соответствует одному или нескольким значениям или {1, }
Пробел — пробел состоит из одного пробела, нескольких пробелов, табуляции или символа новой строки (также известного как вертикальный пробел). Эти пробелы будут соответствовать соответствующим пробелам в строке. Например, шаблон «+», то есть пробел, за которым следует знак «плюс», будет соответствовать одному или нескольким пробелам. Точно так же вы можете использовать пробелы с другими символами внутри шаблона. Шаблон «Sachin Tendulkar» позволит вам искать имя «Sachin Tendulkar» в любой заданной строке.
=======================
Круглые скобки. Использование круглых скобок вокруг некоторых символов поможет повторить группу символов, а не просто искать повторения предыдущего символа. Эта концепция называется группировкой в
регулярном выражении. Например шаблон ‘(xyz){1, 3}’ будет соответствовать следующим строкам:
xyz
xyzxyz
xyzxyzxyz
Использование круглых скобок также полезно, когда вам нужно извлечь подшаблоны из более крупного шаблона. напр. если у вас есть текстовые данные с датами и вы хотите извлечь только год из дат. Вы можете использовать шаблон регулярного выражения с группировкой для сопоставления дат, а затем вы можете извлечь любой из элементов, таких как день, месяц или год. Группировка достигается с помощью операторов скобок. напр. 03.10.1985». Чтобы извлечь дату из этой строки, вы можете использовать шаблон — «\d{1,2}\/\d{1,2}\/\d{4}». Теперь, чтобы извлечь год, вы можете заключить в скобки год в шаблоне. Шаблон: «^\d{1,2}/\d{1,2}/(\d{4})$».
Оператор трубы — обозначается символом «|». Оператор конвейера используется как оператор ИЛИ. Вы должны использовать его внутри скобок. Например, шаблон «(play|walk)ed» будет соответствовать обеим строкам — «played» и «walked». Оператор канала сообщает, что место внутри круглых скобок может быть либо строкой, либо символом.
Специальные символы — символы, упомянутые выше в качестве квантификаторов, такие как «?», «*», «+», «(», «)», «{» и т. д., также могут появляться во входном тексте. В таких случаях для извлечения этих конкретных символов вам нужно будет использовать escape-последовательности. Управляющая последовательность, обозначаемая обратной косой чертой «\», используется для экранирования специального значения специальных символов. Чтобы соответствовать вопросительному знаку, вам нужно использовать «\?» (это называется экранированием символа) или, чтобы соответствовать знаку «+», вам нужно указать «\+» в регулярном выражении. Сам «\» является специальным символом, и для соответствия символу «\» вам нужно использовать шаблон «\\», чтобы избежать обратной косой черты.
Якоря — это специальные символы для выполнения строковых операций в начале и в конце ввода текста.
Символ карата ‘^’ — указывает начало строки. Символ, за которым следует «^» в шаблоне, должен быть первым символом строки, чтобы строка соответствовала шаблону. Символ доллара ‘$’ — указывает конец строки. Символ, который предшествует «$» в шаблоне, должен быть последним символом в строке, чтобы строка соответствовала шаблону. Оба якоря могут быть указаны в одном регулярном выражении. Например, шаблон регулярного выражения «^ 01+2$» будет соответствовать любой строке, начинающейся с нулей и заканчивающейся цифрой 2 с наличием единиц между ними. Он будет соответствовать «012», «0112», «01111111112».
Подстановочный знак — символ «.» (точка) также называется подстановочным знаком. Он действует как заполнитель и может соответствовать любому символу. Например, если строка начинается с четырех символов, за которыми следуют три 0 и две единицы, за которыми следуют любые два символа. Допустимыми строками могут быть cghj00011op, kghj00011pk и т. д. Шаблон, удовлетворяющий такому условию, будет выглядеть так: «.{4}0{3}1{2}.{2}». Вы также можете использовать «….00011..», где точка выступает в качестве заполнителя, что означает, что на месте точки может стоять что угодно.
Наборы символов. Наборы символов обеспечивают гораздо большую гибкость, чем просто ввод подстановочных знаков или буквенных символов. Это группа символов, указанная в квадратных скобках. Наборы символов могут быть указаны с квантификатором или без него. Если ни один квантификатор не предшествует набору символов, он соответствует только одному символу, и совпадение считается успешным, только если символ в строке является одним из символов, присутствующих в наборе символов. Например, шаблон «[az]ed» будет соответствовать таким строкам, как «ted», «bed», «red» и т. д., потому что первый символ каждой строки — «t», «b» и «r» — присутствует внутри диапазона набора символов. С другой стороны, когда мы используем набор символов с квантификатором, например, в этом случае — «[az]+ed», он будет соответствовать любому слову, оканчивающемуся на "ed". По сути, квантификатор теряет свое особое значение и рассматривается как обычный символ, когда он присутствует внутри набора символов.
«^» имеет два варианта использования. Вне набора символов он работает как якорь, но при использовании внутри набора символов он действует как оператор дополнения, то есть он указывает, что он будет соответствовать любому символу, кроме тех, которые упомянуты внутри набора символов. напр. Шаблон [0–9] соответствует любому однозначному числу. С другой стороны, шаблон «[^ 0-9]» соответствует любому однозначному символу, который не является цифрой.
Пример
Ну знаете ли утверждение: "Python работает быстрее для всех типов текстовой аналитики." Очень прям спорное... Читать дальше