文字和表情符号柜台 [英] Counter for words and emoji
本文介绍了文字和表情符号柜台的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个列为"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'
然后使用拆分,这将起作用。
- 不确定此方法是否最佳。
- 不确定该怎么做。(我知道如果
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屋!
查看全文