如何从Scala中的推文中删除表情符号

时间:2018-01-24 20:55:14

标签: regex scala twitter emoji data-science

我的推文上有表情符号,而不是像U1F602这样的表情符号代码。我在StackOverflow上找到了其他问题和答案,并没有帮助删除这个表情符号。我在Scala中的数据框有以下字段:

  • id(string)
  • 推文(字符串)
  • 标签(字符串)

这是一个示例元组:

id               tweets                              labels
2017-En-21193    Big boss is waiting #panic       fear

预期结果:

id               tweets                              labels
2017-En-21193    Big boss is waiting #panic          fear

2 个答案:

答案 0 :(得分:1)

这可以在Scala中使用正则表达式完成。一种方法是找到表情符号并删除它。另一种方法是除了字母数字和标点符号之外,从推文中删除所有不必要的字符。

单向(只删除你想要的所有表情符号)

import org.apache.spark.sql.functions.not
val newDf = oldDf.withColumn("tweets", regexp_replace(oldDf("tweets"), """[]""", ""))

另一种方式(删除除字母数字和标点符号以外的所有内容)

import org.apache.spark.sql.functions.not
val newDf = oldDf.withColumn("tweets", regexp_replace(oldDf("tweets"), """[^ 'a-zA-Z0-9,.?!]""", ""))

答案 1 :(得分:1)

您可以使用带有块的正则表达式从字符串中过滤表情符号

例如:

"""\P{block=Emoticons}""".r.findAllIn("Big boss is waiting #panic ").mkString.trim