R tm пакет косинус подобный - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь использовать пакет R tm для решения проблемы сравнения строк (строка из одного слова, а не из нескольких слов).Я уже использовал расстояние Левенштейна, которое могло дать мне значимый результат в этих терминах, но я не полностью удовлетворен.Сейчас я пытаюсь использовать Cosine Similarity после прочтения статьи, которая показалась мне интересной.

Я изучил документацию и прочитал какую-то статью, но на данный момент, я думаю, я не понял возможностей алгоритма.

Я могу использовать его, когда у меня есть термины в виде слов.

например,

docs <- c ("open letters", "closed letters", "letters)
terms <- "open", "closed", "letters")

Но я не могу попросить систему обработать каждую отдельную букву c ("a", "b", "c", "d")

Это привело бы к сравнению строк с использованием матрицы срочных документов.Но, может быть, уже есть моя ошибка.

Что бы было реализовать в тм сравнении строк из одного слова?

Спасибо за помощь, Ps Я не разместил код, потому что этоболее общий вопрос, но я могу создать пример на всякий случай.

Никола

Вот рабочий код согласно предложению:

doc <- c( "closed door", "Open door", "door", "doo", "oor", "house" )
doc_corpus <- Corpus( VectorSource(doc) )
control_list <- list(removePunctuation = TRUE, tolower = TRUE)
tdm <- DocumentTermMatrix(doc_corpus,  control = character_tokenize(doc))
tf <- as.matrix(tdm)

1 Ответ

0 голосов
/ 15 марта 2019

Это то, что я понял, я могу сделать. Дайте документ, в моем случае вектор строк doc, система предоставит мне матрицу TDM, где условия будут равны 1, если совпадение полностью активировано (например, закрыто -> закрыта дверь), но дверь не будет совпадать с oor.

Пример:

library(tm)
doc <- c( "closed door", "Open door", "door", "doo", "oor", "house" )
doc_corpus <- Corpus( VectorSource(doc) )
control_list <- list(removePunctuation = TRUE, tolower = TRUE)
tdm <- TermDocumentMatrix(doc_corpus,  control_list)
tf <- as.matrix(tdm)

enter image description here

Дело в том, что я прочитал, что я мог бы сделать что-то вроде этого, где термины - это отдельные буквы, и я хотел бы подтвердить, если это возможно

enter image description here

так, чтобы иметь TDM для построения косинусного расстояния, чтобы вычислить расстояние между строками. Но я ничего не смог найти в документации.

Спасибо за помощь, Никола

...