繁体   English   中英

标记与单词相邻的表情符号

[英]Tokenizing emojis contiguous to words

我正在尝试标记具有以下两种模式的字符串:

  • 连续的表情符号,例如“嘿,😍🔥”
  • 与单词相邻的表情符号,例如“惊喜💥 !!”

为此,我尝试了nltk ( doc ) 中的word_tokenize()函数。 但是,当涉及表情符号时,它不会拆分连续的实体。

例如,

from nltk.tokenize import word_tokenize
word_tokenize("Hey, 😍🔥")

输出: ['Hey', ',', '😍🔥']

我想得到: ['Hey', ',', '😍', '🔥']

word_tokenize("surprise💥 !!")

输出: ['surprise💥', '!', '!']

我想得到['surprise', '💥', '!', '!']

因此,我在想也许使用特定的正则表达式模式可以解决问题,但我不知道使用什么模式。

尝试使用TweetTokenizer

from nltk.tokenize.casual import TweetTokenizer
t = TweetTokenizer()
>>> t.tokenize("Hey, 😍🔥")
['Hey', ',', '😍', '🔥']

另一个更好的选择是使用SpaCyMoji,因为 NLTK Tweet Tokenizer 无法处理肤色表情符号。

from spacymoji import Emoji
nlp_spacymoji = spacy.load("en_core_web_sm")
emoji = Emoji(nlp_spacymoji, merge_spans=True)
nlp_spacymoji.add_pipe(emoji, first=True)
doc = nlp_spacymoji("One 😂, skintone ✌🏽, cluster 😍🔥, word & emo👍 together")
print([token.text for token in doc])

# expected output
['One', '😂', ',', 'skintone', '✌🏽', ',', 'cluster', '😍', '🔥', ',', 'word', '&', 'emo', '👍', 'together']

对于相同的输入,NLTK Tweet Tokenizer 将产生

['One', '😂', ',', 'skintone', '✌', '🏽', ',', 'cluster', '😍', '🔥', ',', 'word', '&', 'emo', '👍', 'together']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM