使用 R 对主题标签进行分词

word segmentation for hashtag using R

我想为hashtag做一个分词。我想在标签中拆分单词。这是我的尝试,但显然没有成功。

我想做什么

  1. 输入:#sometrendingtopic
  2. 输出:一些热门话题

我的尝试:

s<- "#sometrendingtopic"
tokenize_character_shingles(s)
tokenize_words(s)
tokenize_characters(s)

我得到了一些信息,但是 python https://whosebug.com/.../r-split-string-by-symbol 感谢未来的想法和指导

所以...这绝对是一项非常重要的任务,我认为一般无法解决。由于您缺少单词之间的分隔符,因此您基本上需要提取子字符串并根据所需语言的字典检查它们。 一种非常粗略的方法,它只会从左到右提取它能找到的最长匹配项,它使用的是 hunspell,它专为拼写检查而设计,但可能被“误用”以解决此任务:

split_words <- function(cat.string){
  split <- NULL
  start.char <- 1
  while(start.char < nchar(cat.string))
  {
    result <- NULL
    for(cur.char in start.char:nchar(cat.string))
    {
      test.string <- substr(cat.string,start.char,cur.char)
      test <- hunspell::hunspell(test.string)[[1]]
      if(length(test) == 0) result <- test.string
    }
    if(is.null(result)) return("")
    split <- c(split,result)
    start.char <- start.char + nchar(result)
  }
  split
}


input <- c("#sometrendingtopic","#anothertrendingtopic","#someveryboringtopic")

# Clean the hashtag from the input
input <- sub("#","",input)
#apply word split
result <- lapply(input,split_words)
result
[[1]]
[1] "some"     "trending" "topic"   

[[2]]
[1] "another"  "trending" "topic"   

[[3]]
[1] "some"   "very"   "boring" "topic" 

请记住,此方法在多个方面都远非完美:

  1. 比较慢
  2. 会从左到右贪心匹配。因此,例如,如果我们有标签 input <- "#averyboringtopic"结果将是
[[3]]
[1] "aver"   "y"      "boring" "topic" 

因为“aver”显然是这本特定词典中的可能词。 所以:请自行承担使用风险并对此进行改进!