Реализация N-грамм в моем корпусе, ошибка Quanteda

Я пытаюсь реализовать Quanteda в своем корпусе в R, но получаю:

Error in data.frame(texts = x, row.names = names(x), check.rows = TRUE,  : 
  duplicate row.names: character(0)

У меня нет большого опыта в этом. Вот загрузка набора данных: https://www.dropbox.com/s/ho5tm8lyv06jgxi/TwitterSelfDriveShrink.csv?dl=0

Вот код:

tweets = read.csv("TwitterSelfDriveShrink.csv", stringsAsFactors=FALSE)
corpus = Corpus(VectorSource(tweets$Tweet))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, PlainTextDocument)
corpus <- tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, c(stopwords("english")))
corpus = tm_map(corpus, stemDocument)

quanteda.corpus <- corpus(corpus)

person gamelanguage    schedule 14.04.2016    source источник
comment
Если вы предоставите воспроизводимый пример, вы мгновенно расширите круг возможных ответов. Кроме того, как только на него ответят, это принесет пользу только вам. Обобщая проблему, вы помогаете будущему себе и другим в будущем.   -  person Roman Luštrik    schedule 14.04.2016
comment
Обновлено ссылкой для скачивания, надеюсь, это поможет.   -  person gamelanguage    schedule 14.04.2016
comment
@gamelanguage, получил ту же ошибку при использовании tm, что и в вашем подходе, но вам не нужен tm, просто Quanteda и stringsAsFactors = FALSE.   -  person Chris    schedule 14.04.2016


Ответы (2)


Обработка, которую вы выполняете с помощью tm, подготавливает объект для tm, и Quanteda не знает, что с ним делать... Quanteda делает все эти шаги сама, help("dfm"), как видно из опции.

Если вы попробуете следующее, вы можете двигаться вперед:

dfm (tweets $ Tweet, verbose = TRUE, toLower = TRUE, removeNumbers = TRUE, removePunct = TRUE, removeTwitter = TRUE, language = "english", ignoredFeatures = стоп-слова ("english"), основа = TRUE)

Создание dfm из вектора символов ... ... строчные буквы ... токенизация ... индексирование документов: 6 943 документа ... индексирование функций: 15 164 типа объектов ... удалено 161 функция из 174 предоставленных (универсальных) типов функций ... элементы основы (английский), обрезано 2175 вариантов признаков ... создано разреженное цифровое изображение размером 6943 x 12828 ... завершено. Прошедшее время: 0,756 секунды. ХТН

person Chris    schedule 14.04.2016

Не нужно начинать с пакета tm или вообще использовать read.csv() — для этого предназначен сопутствующий пакет quanteda readtext.

Таким образом, чтобы прочитать данные, вы можете отправить объект, созданный readtext::readtext(), прямо в конструктор корпуса:

myCorpus <- corpus(readtext("~/Downloads/TwitterSelfDriveShrink.csv", text_field = "Tweet"))
summary(myCorpus, 5)
## Corpus consisting of 6943 documents, showing 5 documents.
## 
## Text Types Tokens Sentences Sentiment Sentiment_Confidence
## text1    19     21         1         2               0.7579
## text2    18     20         2         2               0.8775
## text3    23     24         1        -1               0.6805
## text5    17     19         2         0               1.0000
## text4    18     19         1        -1               0.8820
## 
## Source:  /Users/kbenoit/Dropbox/GitHub/quanteda/* on x86_64 by kbenoit
## Created: Thu Apr 14 09:22:11 2016
## Notes: 

Оттуда вы можете выполнить все основы предварительной обработки непосредственно в вызове dfm(), включая выбор ngrams:

# just unigrams
dfm1 <- dfm(myCorpus, stem = TRUE, remove = stopwords("english"))
## Creating a dfm from a corpus ...
## ... lowercasing
## ... tokenizing
## ... indexing documents: 6,943 documents
## ... indexing features: 15,577 feature types
## ... removed 161 features, from 174 supplied (glob) feature types
## ... stemming features (English), trimmed 2174 feature variants
## ... created a 6943 x 13242 sparse dfm
## ... complete. 
## Elapsed time: 0.662 seconds.

# just bigrams
dfm2 <- dfm(myCorpus, stem = TRUE, remove = stopwords("english"), ngrams = 2)
## Creating a dfm from a corpus ...
## ... lowercasing
## ... tokenizing
## ... indexing documents: 6,943 documents
## ... indexing features: 52,433 feature types
## ... removed 24,002 features, from 174 supplied (glob) feature types
## ... stemming features (English), trimmed 572 feature variants
## ... created a 6943 x 27859 sparse dfm
## ... complete. 
## Elapsed time: 1.419 seconds.
person Ken Benoit    schedule 14.04.2016