Использование фильтра в tm_map (testfile, removeNumbers) в R?

Я использую tm_map(testfile, removeNumbers) для удаления номеров текстового файла. Однако мне нужно сохранить числа, которые сопровождают такие слова, как ipv4 и ipv6. Как я могу использовать функцию removeNumbers для удаления других номеров, но сохранить номера, которые поставляются с ipv4 и ipv6?

Это код, который я использовал:

test.txt = "this is a test file with numbers 1,2 and 3.
              The internet protocals ipv4 and ipv6"

library(tm)

test <- Corpus(DirSource('C:test'), readerControl = list(reader = readPlain))
test <- tm_map(test, removeNumbers)

inspect(test[1])

Выход:

$test.txt

this is a test file with numbers , and . The internet protocals ipv and ipv

r tm
person Anish    schedule 26.05.2014    source источник


Ответы (1)


removeNumbers удалит любую цифру. Вы можете получить его код следующим образом:

getS3method("removeNumbers","PlainTextDocument")
function (x) 
gsub("[[:digit:]]+", "", x)

Вам следует создать новую функцию, которая удаляет «одиночные» цифры или цифры после пробелов.

remove_alone_nbr <- 
function (x) 
  gsub('\\s*(?<!\\B|-)\\d+(?!\\B|-)\\s*', "", x,perl=TRUE)

Тогда, если вы проверите это:

inspect(tm_map(Corpus(VectorSource(test.txt)), remove_alone_nbr))

Вы получаете :

this is a test file with numbers,and.
              The internet protocals ipv4 and ipv6
person agstudy    schedule 26.05.2014
comment
Поскольку remove_alone_nbr("I love 33 things but I am committed to 3: ipv6 and ipv4 and S6") производит «Я люблю вещи, но я привержен: ipv6, ipv4 и S6», можно заменить числа пробелами вместо пустых строк. - person Jabro; 22.10.2020