Распознавать смайлики, указанные в скобках в строке

Я сохранил сообщение Skype в виде строк (на телефоне Android). Строки могут содержать эмодзи Skype. Например, строка может быть «Это тест (смеется)». Смайлики закодированы в скобках, например (смеется), (улыбается) и так далее.

Теперь я хотел бы подсчитать количество смайликов в предложении и удалить смайлики из предложения. Конечно, я мог бы просто подсчитать количество пар () и удалить их, но это также удалит обычный текст, указанный в скобках. Более того, в редких случаях может случиться так, что смайлики также будут представлены как :( или :/ и так далее.

Есть ли элегантный способ подсчитать количество смайликов в строке и удалить их в Python?

Может быть рабочий процесс, использующий модуль эмодзи. Если вы можете придумать тест, чтобы увидеть, было ли преобразование, то я могу представить следующую методологию: 1. попытаться преобразовать текущий текст (чтобы поймать ;-* и т. д.); 2. протестируйте замену (text) на :text: там, где в text нет пробелов или скобок, и проверьте, удалось ли такое преобразование

Steve 22.05.2019 17:06

Похоже, это может работать даже с emojize(string, delimiters=('(', ')'))

Steve 22.05.2019 17:12
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
2
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание, что Skype и некоторые другие программы используют его формат «эмодзи». Истинный формат эмодзи строго указан. Существует библиотека Python для работы с настоящими эмодзи: эмодзи. Вы можете попробовать найти свои смайлики с параметром delimiters функции emojize и с функцией emoji_lis:

import emoji

waka = ':smile: :) (smile) :smiling_face: WAKA (sign_of_the_horns_medium-light_skin_tone) :speak-no-evil_monkey:'
print(emoji.emoji_lis(emoji.emojize(waka, use_aliases=True)))

[{'location': 0, 'emoji': '?'}, {'location': 13, 'emoji': '☺'}, {'location': 63, 'emoji': '?'}]
print(emoji.emoji_lis(emoji.emojize(waka, delimiters=('(', ')'))))

[{'location': 39, 'emoji': '?'}]

Обратите внимание, что вы не найдете улыбки (например, :), :( и т. д.), только смайлики. Вы также не можете найти все «смайлики» в тексте, потому что вы не можете гарантировать, что Skype использует официальные имена смайликов (более того, я уверен, что их использует нет). Если вы тоже хотите найти улыбки, вам следует создать свой собственный словарь с улыбками, «смайликами» Skype и т. д.

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

machinery 26.05.2019 22:01

Должен ли я использовать use_alises=True в emoji.emojize(waka, delimiters=('(', ')'), use_alises=True)?

machinery 26.05.2019 22:03

Это не обязательно, но вы можете использовать его. Это улучшит результаты.

vurmux 27.05.2019 16:29

Другие вопросы по теме