【问题标题】:word segmentation for hashtag using R使用 R 对标签进行分词
【发布时间】:2021-10-18 07:50:08
【问题描述】:

我想对主题标签进行分词。我想在标签中拆分单词。这是我的尝试,但显然没有成功。

我想做什么

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

我的尝试:

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

我得到了一些信息,但它适用于 python https://stackoverflow.com/.../r-split-string-by-symbol 感谢您对未来的想法和指导

【问题讨论】:

  • gsub('#','','#sometrendingtopic') 将从“#sometrendingtopic”中删除主题标签,然后您可以继续使用无主题标签的字符对象。
  • @SametSökel 谢谢,我会试试这个

标签: r hashtag


【解决方案1】:

所以...这绝对是一项非常重要的任务,我认为一般无法解决。由于您在单词之间缺少分隔符,因此您基本上需要提取子字符串并将它们与所需语言的字典进行检查。 一种非常粗略的方法,它只会从左到右提取最长的匹配项,它是使用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 &lt;- "#averyboringtopic" 结果将是
[[3]]
[1] "aver"   "y"      "boring" "topic" 

因为“aver”显然是这本特定词典中的一个可能词。 所以:使用风险自负并在此基础上进行改进!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 2019-02-20
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    相关资源
    最近更新 更多