2017-01-11 6 views
3

Пакет Quanteda предоставляет разреженную матрицу DFM для документов и ее методы содержат removeFeatures. Я попробовал dfm(x, removeFeatures="\\b[a-z]{1-3}\\b"), чтобы удалить слишком короткие слова, а также dfm(x, keptFeatures="\\b[a-z]{4-99}\\b"), чтобы сохранить достаточно длинные слова, но не работать, в основном делая то же самое, то есть удаляя слишком короткие слова.R: удаление регулярного выражения из Quanted DFM, разреженная матрица характеристик документа, объект?

Как удалить регулярное выражение из объекта Quanted DFM?

Пример.

myMatrix <-dfm(myData, ignoredFeatures = stopwords("english"), 
      stem = TRUE, toLower = TRUE, removeNumbers = TRUE, 
      removePunct = TRUE, removeSeparators = TRUE, language = "english") 
# 
#How to use keptFeatures/removeFeatures here? 


#Instead of RemoveFeatures/keptFeatures methods, I tried it like this but not working 
x<-unique(gsub("\\b[a-zA-Z0-9]{1,3}\\b", "", colnames(myMatrix))); 
x<-x[x!=""]; 
mmyMatrix<-myMatrix; 
colnames(mmyMatrix) <- x 

Образец DFM

myData <- c("a aothu oat hoah huh huh huhhh h h h n", "hello h a b c d abc abcde", "hello hallo hei hej", "Hello my name is hhh.") 
myMatrix <- dfm(myData) 
+0

Может быть что-то вроде 'dfm_select (myMatrix,«^ [[цифра, буква: ]] {1,3} $ "," remove ", valuetype =" regex ")'? –

ответ

1

Это dfm_select, в> = v0.9.9:

myMatrix 
## Document-feature matrix of: 4 documents, 22 features (70.5% sparse). 

dfm_select(myMatrix, "\\b[a-zA-Z0-9]{1,3}\\b", selection = "keep", valuetype = "regex") 
## kept 14 features, from 1 supplied (regex) feature types 
## Document-feature matrix of: 4 documents, 14 features (71.4% sparse). 
## 4 x 14 sparse Matrix of class "dfmSparse" 
##  features 
## docs a oat huh h n b c d abc hei hej my is hhh 
## text1 1 1 2 3 1 0 0 0 0 0 0 0 0 0 
## text2 1 0 0 1 0 1 1 1 1 0 0 0 0 0 
## text3 0 0 0 0 0 0 0 0 0 1 1 0 0 0 
## text4 0 0 0 0 0 0 0 0 0 0 0 1 1 1 

 Смежные вопросы

  • Нет связанных вопросов^_^