quanteda: удалить теги (#, @) и URL-адрес в строке

Рассмотрим следующую строку:

txt <- ("Viele Dank für das Feedback + die Verbesserungsvorschläge! :) http://testurl.com/5lhk5p #Greenwashing #PR #Vattenfal")

Я создаю dfm (Создайте матрицу функций документа) и предварительно обрабатываю строку следующим образом:

txt_corp <- quanteda::corpus(txt)
txt_dfm <- quanteda::dfm(txt_corp,remove_punct=TRUE, remove_symbols=TRUE, remove_url = T)
topfeatures(txt_dfm)

Результат выглядит следующим образом:

topfeatures(txt_dfm)
              viele                    dank                     für                     das                feedback 
                  1                       1                       1                       1                       1 
                die verbesserungsvorschläge           #greenwashing                     #pr              #vattenfal 
                  1                       1                       1                       1                       1 

Это неплохо. Но я бы хотел, чтобы результат был без хэштега (#). Я пробовал такие комбинации, как: txt_dfm <- quanteda::dfm(txt_corp,remove_punct=TRUE, remove_symbols=TRUE, remove_url = T, what ="word1")

topfeatures(txt_dfm)
              viele                    dank                     für                     das                feedback 
                  1                       1                       1                       1                       1 
                die verbesserungsvorschläge                    http             testurl.com                  5lhk5p 
                  1                       1                       1                       1                       1 

Затем я получаю вышеуказанный результат. С одной стороны удаляются хэштеги, но с другой стороны ссылки разделяются и не удаляются. Может ли кто-нибудь помочь получить следующий результат с помощью quanteda?

                  viele                    dank                     für                     das                feedback 
                  1                       1                       1                       1                       1 
                die verbesserungsvorschläge           greenwashing                     pr              vattenfal 
                  1                       1                       1                       1                       1 

person Apache    schedule 09.09.2020    source источник


Ответы (2)


Существует шаблон регулярного выражения, который соответствует хеш-тегам в quanteda_options(). Если вы установите для него NULL, он перестанет их сохранять.

require(quanteda)
quanteda_options(reset = TRUE)
quanteda_options("pattern_hashtag")     
# [1] "#\\w+#?"
tokens("#aaaa bbbb")
# Tokens consisting of 1 document.
# text1 :
# [1] "#aaaa" "bbbb" 

quanteda_options("pattern_hashtag" = NULL)
tokens("#aaaa bbbb")
# Tokens consisting of 1 document.
# text1 :
# [1] "#"    "aaaa" "bbbb"
person Kohei Watanabe    schedule 09.09.2020
comment
Спасибо! Это очень помогает. - person Apache; 10.09.2020

Удалить хэштег из строки?

txt <- gsub("#","",txt)

> txt_dfm
Document-feature matrix of: 1 document, 10 features (0.0% sparse).
       features
docs    viele dank für das feedback die verbesserungsvorschläge greenwashing pr vattenfal
  text1     1    1   1   1        1   1                       1            1  1         1
person denis    schedule 09.09.2020