R/features.R

Defines functions wordpair_sim word_sim glove_features

#' @import data.table
#' @export
glove_features <- function(words, feats=NULL) {
  if (is.null(feats)) {
    if (!exists("glove50")) {
      data("glove50")
    }
    feats <- glove50
  }

  feats[words]

}

#' @export
word_sim <- function(words, feats=NULL, method="cosine") {
  feats <- glove_features(words, feats)
  fmat <- do.call(rbind, feats$vec)
  ret <- proxy::simil(fmat, method)
  ret <- as.matrix(ret)
  colnames(ret) <- words
  rownames(ret) <- words
  ret
}

#' @export
#' @import assertthat
wordpair_sim <- function(words, feats=NULL, method="cosine") {
  assertthat::assert_that(ncol(words) == 2)
  sim <- numeric(nrow(words))
  for (i in 1:nrow(words)) {
    f1 <- glove_features(words[i,1], feats)
    f2 <- glove_features(words[i,2], feats)
    if (is.null(f1$vec[[1]]) || is.null(f2$vec[[1]])) {
      sim[i] <- NA
    } else {
      sim[i] <- proxy::simil(rbind(f1$vec[[1]],f2$vec[[1]]), method)
    }
  }

  sim
}
bbuchsbaum/glovefeats documentation built on May 26, 2020, 1:25 a.m.