2010-11-01 4 views
3

Я использую пакет интеллектуального анализа текста R и его действительно отличный инструмент. Я не нашел поддержку поиска или, возможно, есть функции, которых я не вижу. Как простая модель VSM может быть реализована с использованием пакета интеллектуального анализа текста R?Поиск текста с использованием R

+2

Просьба привести некоторый контекст относительно модели VSM. – Shane

ответ

0

Предполагая VSM = векторное пространство модели, вы можете идти о простой системе поиска следующим образом:

  • создать документ Term Матрица вашей коллекции/мозолистого
  • Создание функции для меры подобия (Жаккар, Евклид и т. Д.). Доступны пакеты с этими функциями. RSiteSearch должен помочь найти их.
  • Преобразуйте свой запрос в матрицу документов (которая будет иметь 1 строку и будет отображена с использованием того же словаря, что и для первого шага)
  • Вычислить сходство с запросом и матрицей с первого шага.
  • Поделитесь результатами и выберите верхнюю часть n.

Метод non-R предназначен для использования индекса GINI в текстовом столбце (строки являются документами) таблицы в PostgreSQL. Используя методы запросов ts_vector, вы можете получить очень быструю поисковую систему.

+0

vegan :: vegdist имеет ряд индексов подобия, не предоставленных пакетом статистики (по крайней мере, я не вижу их). –

+0

У меня проблема с выполнением шага 3 в R. Я не нахожу функций, которые позволили бы мне сделать это в R. Я знаю, как работает VSM, и то, что вы здесь дали, - очень широкий наивный ответ. Хотя я ценю ответ, мне нужны R-команды и библиотеки, которые позволили бы мне сделать выше, особенно шаг 3 –

+0

. Для получения более надежной информации посетите http://www.logic.at/staff/feinerer/publications/talks/237_GfKl_2006.pdf текстовая кластеризация. –

1
# Sample R commands in support of my previous answer 
require(fortunes) 
require(tm) 
sentences <- NULL 
for (i in 1:10) sentences <- c(sentences,fortune(i)$quote) 
d <- data.frame(textCol =sentences) 
ds <- DataframeSource(d) 
dsc<-Corpus(ds) 
dtm<- DocumentTermMatrix(dsc, control = list(weighting = weightTf, stopwords = TRUE)) 
dictC <- Dictionary(dtm) 
# The query below is created from words in fortune(1) and fortune(2) 
newQry <- data.frame(textCol = "lets stand up and be counted seems to work undocumented") 
newQryC <- Corpus(DataframeSource(newQry)) 
dtmNewQry <- DocumentTermMatrix(newQryC, control = list(weighting=weightTf,stopwords=TRUE,dictionary=dict1)) 
dictQry <- Dictionary(dtmNewQry) 
# Below does a naive similarity (number of features in common) 
apply(dtm,1,function(x,y=dictQry){length(intersect(names(x)[x!= 0],y))}) 
+0

Когда запрос не имеет никакой функции со словарем, созданным для коллекции, эти функции не отображаются. - "словарь Символьный вектор, который должен быть объединен с таблицей. В результате не будут перечислены другие термины. Термины из словаря, которые не встречаются в документе вообще, будут пропущены по соображениям производительности. По умолчанию не действуют никакие действия (т. е. все термины) - /library/tm/html/termFreq.html ". Думаю, я об этом раньше не думал. – harshsinghal

+0

dtmNewQry <- DocumentTermMatrix (newQryC, control = list (weighting = weightTf, stopwords = TRUE, dictionary = dict1)) в приведенной выше строке кода возникает ошибка, вместо этого используйте словарь = dictC. –

Смежные вопросы