【问题标题】:ft_tokenizer tokenizes words to lower, I want it to be as they areft_tokenizer 将单词标记为更低,我希望它保持原样
【发布时间】:2019-12-30 08:30:16
【问题描述】:

我在 R 中将 ft_tokenizer 用于 spark 数据帧。 它对每个单词进行标记并将其更改为全部较低,我希望单词采用它们最初的格式。

text_data <- data_frame(
  x = c("This IS a sentence", "So is this")
)

tokenized <- text_data_tbl %>%
  ft_tokenizer("x", "word")


tokenized$word
## [[1]]
## [[1]][[1]]
## [1] "this"
## 
## [[1]][[2]]
## [1] "is"
##
## [[1]][[3]]
## [1] "a"

我想要:

tokenized$word
## [[1]]
## [[1]][[1]]
## [1] "This"
## 
## [[1]][[2]]
## [1] "IS"
##
## [[1]][[3]]
## [1] "a"

【问题讨论】:

  • 为什么您认为大写很重要?我只是好奇你对 nlp 的想法。
  • 我想使用标记化的单词将其与关键字列表进行匹配,为此我需要完全匹配。即,在关键字列表中,如果我有“This”,我想要与它完全匹配,这现在是不可能的,因为标记化会将“This”更改为“this”。
  • 不,我不想将每个首字母都改成大写。我只是希望它按原样标记单词。我将更准确地编辑我的查询。

标签: r apache-spark apache-spark-sql sparkr sparklyr


【解决方案1】:

我想ft_tokenizer 是不可能的。来自?ft_tokenizer

一个将输入字符串转换为小写然后用空格分割的分词器。

所以它的基本功能是将字符串转换为小写并在我猜无法更改的空白处拆分。考虑做

text_data$new_x <- lapply(strsplit(text_data$x, "\\s+"), as.list)

这将提供与预期相同的输出,您可以从这里继续您的流程。

text_data$new_x
#[[1]]
#[[1]][[1]]
#[1] "This"

#[[1]][[2]]
#[1] "IS"

#[[1]][[3]]
#[1] "a"

#[[1]][[4]]
#[1] "sentence"


#[[2]]
#[[2]][[1]]
#[1] "So"

#[[2]][[2]]
#[1] "is"

#[[2]][[3]]
#[1] "this"

【讨论】:

  • 是否可以在 spark 数据帧上应用相同的功能?因为 text_data 是一个 spark 数据框。
  • @VasudhaJain 应该是可能的,但我不确定如何,因为我没有火花数据框来测试它。您是否可以将其应用于数据帧而不是使用 df &lt;- collect(text_data)df &lt;- as.data.frame(text_data)
  • 我的主要目标是在 spark 数据帧上进行这项工作。即使它适用于常规的 r 数据框,它对我也没有任何帮助。
  • @VasudhaJain 我明白了。我在想是否可以在常规数据帧中执行此部分,然后将其转换回火花数据帧并从那里继续。也许其他人可能知道。
  • 如果我在常规数据框中执行此操作,将创建一个列表。将列表转换为 spark df 又是一个挑战。
猜你喜欢
  • 1970-01-01
  • 2021-01-02
  • 2013-09-26
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
相关资源
最近更新 更多