2015-11-30 2 views
1

У меня есть Vector Corpus в R. Я хочу удалить все идентификаторы электронной почты, появляющиеся в этом корпусе. Идентификаторы электронной почты могут находиться в любой позиции в корпусе. Скажем, например,Удалить идентификаторы электронной почты из корпуса

1> "Could you mail me the Company policy amendments at [email protected] Thank you." 

2> "Please send me an invoice copy at [email protected] Looking forward to your reply". 

Так вот я хочу, чтобы идентификаторы электронной почты «[email protected]» и «[email protected]» должны быть удалены только из корпуса.

Я попытался с помощью:

corpus <- tm_map(corpus,removeWords,"\w*gmail.com\b") 
corpus <- tm_map(corpus,removeWords,"\w*yahoo.co.in\b") 
+0

Использование регулярного выражения для соответствия адресам электронной почты не так просто, как может показаться. Проверьте этот вопрос и его ответы на долгое обсуждение и несколько примеров: http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address – Molx

ответ

3

ниже код использует Regex шаблон для удаления электронной почты идентификаторы из корпуса. У меня было регулярное выражение у кого-то, и в настоящее время я не могу вспомнить, откуда он. Я хотел бы отдать должное источнику.

# Sample data from which email ids need to be removed 

text <- c("Could you mail me the Company policy amendments at [email protected] Thank you.", 
      "Please send me an invoice copy at [email protected] Looking forward to your reply.") 


#Function containing regex pattern to remove email id 
RemoveEmail <- function(x) { 
    require(stringr) 
    str_replace_all(x,"[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+", "") 
} 

library(tm) 
corpus = Corpus(VectorSource(text)) # Corpus creation 
corpus <- tm_map(corpus,content_transformer(RemoveEmail)) # removing email ids 

#Printing the corpus 
corpus[[1]]$content 
corpus[[2]]$content 
+0

Если это ответит на ваш вопрос, вы принимаете ответ, чтобы закрыть вопрос. – amitkb3

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