文字和表情符号柜台 [英] Counter for words and emoji

查看:25
本文介绍了文字和表情符号柜台的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列为"Clear_Message"的数据帧,并且我创建了一个统计每行中所有单词的列。

history['word_count'] = history.clear_message.apply(lambda x: Counter(x.split(' ')))
例如,如果行消息为:Hello my name is Hello 那么他所在行的计数器将是Counter({'Hello': 2, 'is': 1, 'my': 1, 'name': 1})

问题

我的文本中有emoji,我还想要一个emoji的计数器。

例如:

test = '👹👹👹👹👹here sasdsa'
test_counter = Counter(test.split(' '))

输出为:

Counter({'sasdsa': 1, '👹👹👹👹👹here': 1})

但我想:

Counter({'sasdsa': 1, '👹': 5, 'here':1})

明显的问题是我使用的是split(' ')

我的想法:

在表情符号前后添加一个空格。点赞:

test = '👹 👹 👹 👹 👹 here sasdsa'

然后使用拆分,这将起作用。

  1. 不确定此方法是否最佳。
  2. 不确定该怎么做。(我知道如果i是表情符号,则if i in emoji.UNICODE_EMOJI将返回TRUE(emoji包))。

推荐答案

我认为你在每个表情符号后面加一个空格的想法是一个很好的方法。你还需要去掉空格,以防表情符号和下一个字符之间已经有空格了,但这已经很简单了。类似于:

def emoji_splitter(text):
    new_string = ""
    for char in text:
        if char in emoji.UNICODE_EMOJI:
            new_string += " {} ".format(char)
        else:
            new_string += char
    return [v for v in map(lambda x: x.strip(), new_string.split(" ")) if v != ""]

也许你可以通过使用滑动窗口检查表情包后面的空格来改进这一点,并只在必要的地方添加空格,但这将假设永远只有一个空格,因为这个解决方案应该解释表情包之间的0到n个空格。

这篇关于文字和表情符号柜台的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆