Basilica R Client¶
Basilica R Client: Deep Feature Extraction for Images and Text¶
Basilica allows you to easily augment your models with images and text. You send us an image or a snippet of natural language text and we send you a vector of features you can use to train your models.
You can install the released version of this package from Google cloud:
or from Github (requires the
(CRAN submission approval in progress)
This is a basic example which shows you how to solve a common problem:
Creating a Connection¶
Before embedding an image or text (getting a vector of features), you must first
connect to the API with a demo key.
SLOW_DEMO_KEY is a key you can use for
testing with a low per-week limit, but you can create API keys for free at www.basilica.ai.
library('basilica') # Create a connection # You can use our `SLOW_DEMO_KEY` (it actually works) or create your own at basilica.ai conn <- connect("SLOW_DEMO_KEY")
Getting a vector of features for text:
sentences = c( "This is a sentence!", "This is a similar sentence!", "I don't think this sentence is very similar at all..." ) # Returns a data frame with 512 features for each of the 3 sentences embeddings <- embed_sentences(sentences, conn=conn) print(dim(embeddings)) # 3 512 print(embeddings) # [[0.8556405305862427, ...], ...] print(cor(embeddings[1,], embeddings[2,])) # 0.8048559 print(cor(embeddings[1,], embeddings[3,])) # 0.6877435
Differences from Word2Vec¶
It’s important to know that the embedding you get for a sentence is completely different from an embedding you would get with Word2Vec. Word2Vec returns a word-level embedding, while basilica is trained on longer snippets of natural language text (phrases, sentences, paragraphs). For that reason, results on models where the context of the sentence matter (like sentiment analysis) will get much better results with a sentence-level embedding than with a word embedding.
Embedding an Image¶
Getting a vector of features for images:
embeddings <- embed_image("/tmp/image.jpg", conn=conn) print(dim(embeddings)) # 1 2048 print(embeddings) # [[0.8556405305862427, ...], ...]
If you want to contribute to this client, here’s are some of the libraries and commands you will need:
brew install qpdf
install.packages("devtools") install.packages("usethis") install.packages("testthat")
When on a branch, make sure all these commands work and pass.
devtools::test() devtools::document() devtools::build_vignettes() devtools::check()