Токенизация слова с использованием tidytext - сохранение знаков препинания - PullRequest
0 голосов
/ 17 апреля 2020

Я пытался сохранить пунктуацию, например, "-" "(" "/" "'" при маркировке слова.

data = tibble(title = "Computer-aided detection (1 / 2)")
data %>% unnest_tokens(input = title, 
                    output = słowo, 
                    token = "ngrams", 
                    n = 2)

Я хочу, чтобы вывод был таким:

computer-aided
aided detection
detection (1
(1 / 2)

Есть предложения?

1 Ответ

0 голосов
/ 17 апреля 2020

Если вы хотите сохранить эти значения "(" "/" ")", вывод будет "(1 /" и "/ 2)" not "(1/2)". Этот последний будет 3 грамма. Также, если вы хотите сохранить дефис (-), строка 2 не будет существовать, поскольку она не будет разбиваться на это значение.

tidytext использует пакет токенизатора для удаления данных. токенайзер ngram не может обработать эти исключения.

Вот пример использования quanteda с опцией fasterword, которая удовлетворяет большинство ваших потребностей.

library(quanteda)
tokens(data$title, what =  "fasterword", remove_punct = FALSE) %>% 
  tokens_ngrams(n = 2, concatenator = " ")

Tokens consisting of 1 document.
text1 :
[1] "Computer-aided detection" "detection (1"             "(1 /"                     "/ 2)"  

Вы можете поэкспериментировать с различными значениями n, такими как n = 2:3, чтобы увидеть, куда вас это приведет, и отфильтровать то, что вам не нужно.

...