Обработка Emojis в SQLite

Dominic G. спросил: 28 марта 2018 в 02:52 в: sql

Я надеюсь определить, какие emojis используются больше всего в текстовом разговоре, используя SQL Lite. Я использую DB Browser, и emojis появляются так же, как в iMessage (см. Ниже рисунок), но я в тупике о том, как их подсчитать.

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

Есть ли лучший способ сделать это? Дайте мне знать, если вам нужно больше контекста, чтобы ответить на этот вопрос.


2 ответа

paul ответил: 31 марта 2018 в 11:57

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

Однако вы планируете только сделать это один раз, и перекомпиляция SQLite может быть немного излишней.

Вместо этого вы можете скопировать столбец text в простой текстовый файл и выполнить следующую команду:

sed 's/\(.\)/\1\n/g' temp.txt | sed 's/[[:alnum:].-]//g' | sort -r | uniq -c

Это превратит следующее:

Hello! Are you stuck? ? I saw ??? in the park!!!!! ?????? - all lies. Easy as 123! ???????????

в:

  1 ?
 11 ?
  3 ?
  6 ?
  1 ?
  7 !
 17
 50

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

sed - это команда linux, поэтому, если вы используете windows, вы можете получить версию для Windows здесь: https:// github .com / mbuilov / СЭД-окна

Adam Silenko ответил: 02 апреля 2018 в 01:27

Создайте таблицу смайликов, содержащую строки смайликов в текстовых полях, затем попробуйте следующее:

select emojis.text, sum(length(replace(message.text, emojis.text, emojis.text || '_')) - length( message.text))
from message
inner join emojis on message.text like '%' || emojis.text || '%'
group by emojis.text

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

Adam Silenko ответил: 09 апреля 2018 в 02:06
Вот sqlfiddle, проверяющий ответ: sqlfiddle.com/#!5/eccd6/2
Dominic G. ответил: 16 апреля 2018 в 04:32
Я думаю, что проблема здесь в том, что поле "текст" также будет иметь нормальный текст, поэтому мне нужно будет как-то различать.
Adam Silenko ответил: 16 апреля 2018 в 04:34
Вы пробовали это? Это смайликов в тексте ....
Adam Silenko ответил: 17 апреля 2018 в 10:38
Тест со словом sqlfiddle.com/#!5/d7bad/1/1