我分析了文本中的一些品牌,以找出KPI之类的广告识别。但是,到目前为止,包含特殊字符的品牌已被我的代码破坏。
library(qdap)
library(stringr)
test <- c("H&M", "C&A", "Zalando", "Zalando", "Amazon", "Sportscheck")
wfm(test)
这是输出:
all
a 1
amazon 1
c 1
h 1
m 1
sportscheck 1
zalando 2
是否有一种包装或方法可以证明H&M获得了h&m,而不是像它的两个品牌一样获得了“ h”和“ m”?
编辑:wfm函数有一个...自变量,应该允许我使用strip函数。
wfm(test, ... = strip(test, char.keep = "&"))
不幸的是,它不能正常工作。
答案 0 :(得分:0)
我对qdap
软件包不熟悉,但是也许可以替换成&
来解决您的问题
replacement <- "" # set your replacement e.g. "" (empty string) or "_"
test <- gsub("&", replacement, test, fixed = T)
答案 1 :(得分:0)
我会说这样的话。在udpipe包中,有一个函数document_term_frequencies
,您可以在其中指定拆分,然后将数据转换为具有频率计数的data.frame。如果没有要指定的id列,它将生成一个。 document_term_frequencies
的结果对象是data.table。
library(udpipe)
# data.frame without a ID column
my_data <- data.frame(text = c("H&M, C&A, Zalando, Zalando, Amazon, Sportscheck",
"H&M, C&A, Amazon, Sportscheck"),
stringsAsFactors = FALSE)
# if you have an ID column add document = my_data$id to the function
# see more examples in ?document_term_frequencies
document_term_frequencies(my_data$text, split = ",")
doc_id term freq
1: doc1 H&M 1
2: doc1 C&A 1
3: doc1 Zalando 2
4: doc1 Amazon 1
5: doc1 Sportscheck 1
6: doc2 H&M 1
7: doc2 C&A 1
8: doc2 Amazon 1
9: doc2 Sportscheck 1