Цель: Я хочу создать матрицу терм-документ используя словарь который имеет сложные слова или биграмм, так как некоторые из ключевых слов .R и tm package: создать матрицу терминов-документов со словарем одного или двух слов?
Web Search: Будучи новым для текста добыча и tm
пакет в R
, я пошел в Интернете, чтобы выяснить, как это сделать. Ниже приведены некоторые важные ссылки, которые я нашел:
- FAQS on the tm-package website
- finding 2 & 3 word phrases using r tm package
- counter ngram with tm package in r
- findassocs for multiple terms in r
фона: Из них я предпочел решение, которое использует NGramTokenizer
в RWeka
упаковка в R
, , но я столкнулся с проблемой. В приведенном ниже примере кода я создаю три документа и размещаю их в corpus. Обратите внимание, что Docs 1
и 2
содержат два слова. Doc 3
содержит только одно слово. Мои словарные слова являются двумя битрамами и униграммой.
Проблема:NGramTokenizer
решения в вышеуказанных ссылках не правильно сосчитать Юниграмма ключевого слова в Doc 3
.
library(tm)
library(RWeka)
my.docs = c('jedi master', 'jedi grandmaster', 'jedi')
my.corpus = Corpus(VectorSource(my.docs))
my.dict = c('jedi master', 'jedi grandmaster', 'jedi')
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 2))
inspect(DocumentTermMatrix(my.corpus, control=list(tokenize=BigramTokenizer,
dictionary=my.dict)))
# <<DocumentTermMatrix (documents: 3, terms: 3)>>
# ...
# Docs jedi jedi grandmaster jedi master
# 1 1 0 1
# 2 1 1 0
# 3 0 0 0
Я ожидал строку для Doc 3
, чтобы дать 1
для jedi
и 0
для двух других. Я что-то недопонимаю?
Thnx для указателя на 'wordlengths' в элементе управления. Я думал, что что-то подобное происходит, когда я не могу найти слово «телевидение», но мог, когда я заменил его «телевидением» на протяжении моих данных. – CallumH