Найти смайлики в тексте с помощью Python - PullRequest
0 голосов
/ 01 октября 2018

Здравствуйте, я пытаюсь найти все смайлики в загруженных твитах, используя python 2.7

Я пробовал это, используя следующий код:

import os
import codecs
import emoji
from nltk.tokenize import word_tokenize

def extract_emojis(token):
    emoji_list = []
    if token in emoji.UNICODE_EMOJI:
        emoji_list.append(token)
    return emoji_list

for tweet in os.listdir(tweets_path):
    with codecs.open(tweets_path+tweet, 'r', encoding='utf-8') as input_file:
        line = input_file.readline()
        while line:
            line = word_tokenize(line)
            for token in line:
                print extract_emojis(token)

            line = input_file.readline()

Однако вместо этого я получаю только пустые спискииз смайликов.Если я получу следующий твит

schuld van de sossen ? SP.a: wij hebben niks gedaan ? Groen: we gaan energie VERBIEDEN!

, то вместо кода будет выведен код

[]

:

[?, ?]

Любая помощь?Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Это работает в Python 2 -

x = "schuld van de sossen ? SP.a: wij hebben niks gedaan ? Groen: we gaan energie VERBIEDEN!"
[i for i in x.split() if unicode(i, "utf-8") in emoji.UNICODE_EMOJI]

# OP
['\xf0\x9f\x98\xa1', '\xf0\x9f\x98\xb4']
0 голосов
/ 01 октября 2018

Убедитесь, что ваш текст декодирован в utf-8 text.decode('utf-8')

Найдите все эмодзи в вашем тексте, вы должны отделить текстовый символ от символа [str for str in decode]

Сохраняет все эмодзив списке [c for c in allchars if c in emoji.UNICODE_EMOJI]

Примерно так:

import emoji
text     = "? ? lorum ipsum ? de ???"
decode   = text.decode('utf-8')
allchars = [str for str in decode]
list     = [c for c in allchars if c in emoji.UNICODE_EMOJI]
print list

[u '\ U0001f914', u '\ U0001f648', u '\ U0001f60c', u '\U0001f495 ', u' \ U0001f46d ', u' \ U0001f459 ']

Чтобы вернуть свои эмодзи, попробуйте this

...