我想在dfm中操作(重命名和组合)功能,如何继续?
原因如下:我想使用与Quanteda中实现的Porter stemmer不同的词干算法(通过Python调用的kpss算法)。
示例 三字句c(" creatief creatieve creatie")将产生具有三个特征的dfm(即。" creatief"," creatieve"," ; creatie")都是一个术语频率为1.但是,kpss算法会将这些单词用于#34; creatie"。如果我能将dfm中的这三个特征组合成一个名为" creatie"的单个特征,那将是非常方便的。期限为三。
非常感谢您的帮助。
(注意。我明白,在将dfm转换为简单的矩阵之后,这种数据操作是可行的,但我想在dfm中执行此操作)。
附录 我忽略了dfm_compress函数。我几乎就在那里......在压缩了dfm后,是否也可以应用字典,例如单词' creati'和' innovati'应该被视为单词类别' creati'的出现。 (参见dfm中的字典功能)? (注意:考虑到大量的txts,我宁愿不喜欢阻止原始数据文件)
答案 0 :(得分:0)
你可以通过创建一个dfm,然后阻止这些功能,然后重新编译dfm来组合阻塞之后相同的功能。
require(quanteda)
txt <- c("creatief creatieve creatie")
(dfm1 <- dfm(txt))
## Document-feature matrix of: 1 document, 3 features (0% sparse).
## 1 x 3 sparse Matrix of class "dfmSparse"
## features
## docs creatief creatieve creatie
## text1 1 1 1
这是我为您的示例近似的一个步骤,但您将使用您自己的特征字符向量上的词干操作替换下面的右侧字符串子集函数。
# this approximates what you can do with the Python-based stemmer
# note that here you must use colnames<- since there is no function
# featnames<- (for replacement)
colnames(dfm1) <- stringi::stri_sub(featnames(dfm1), 1, 7)
dfm1
## Document-feature matrix of: 1 document, 3 features (0% sparse).
## 1 x 3 sparse Matrix of class "dfmSparse"
## features
## docs creatie creatie creatie
## text1 1 1 1
然后你可以重新编译dfm来编译计数。
# this combines counts in featnames that are identical
dfm_compress(dfm1)
## Document-feature matrix of: 1 document, 1 feature (0% sparse).
## 1 x 1 sparse Matrix of class "dfmSparse"
## features
## docs creatie
## text1 3
请注意,如果您使用 quanteda 的词干分析器,则此步骤可以是dfm_wordstem()
:
dfm_wordstem(dfm1)
## Document-feature matrix of: 1 document, 1 feature (0% sparse).
## 1 x 1 sparse Matrix of class "dfmSparse"
## features
## docs creati
## text1 3