One of the most important things as a business owner is being able to understand your customers’ needs and wants; such that you are able to offer them a personalized experience. This works great if you know your customers on a personal level, but what if you don’t?
Imagine you are the owner of a website and you want to offer a personalized holiday package to your users. How would you go about doing that without knowing what most of your users’ taste and preferences are?
Sure you could send out a survey from your site, then collect a huge amount of data, then process, analyze and finally being able to tell what package fits which user. This seems tiresome and plus people’s tastes and preferences change over time and you would have to repeat this process over and over again each time you want to offer them something new. There has to be a better way, and there is.
Enter IBM Watson
Watson is a powerful AI from the folks at IBM, you may have heard of it’s stunning victories over the greatest champions of Jeopardy back in 2011. Since then Watson has come a long way and has grown even more.
From language translation to visual recognition to personality analysis, Watson offers a whole range of services.
The good news is that most of Watson’s capabilities are available through it’s extensive REST API, thus allowing us to add some cool cognitive features to our apps.
Coming back to our initial problem of getting to know our user’s preferences, Watson has a service that can help us with that. The Personality Insights service extracts and analyzes a spectrum of personality attributes to help discover actionable insights about people and entities, and in turn guides end users to highly personalized interactions.
All we need to supply to Watson is a load of text (such as social media posts, emails, blogs, or other communication) written by one individual and in return we get a tree of cognitive and social characteristics for that person.
Personality Insights can analyse text written in English, Spanish, Arabic and Japanese.
The service outputs personality characteristics that are divided into three dimensions: the Big 5, Values, and Needs. Each of these models, contains characteristic such as Agreeableness, Openness, Curiosity and so on. These values are output as percentiles, for example a user might get the following score for Values :
We can hence easily make assumptions about the user’s preferences based on his/her personality traits. You can try a demo of the Personality insights service here to get a feel of the input to and output from the service; you can even analyze your own personality using some of the text you’ve written, just for fun.
Investment Advisor, is a demo application that makes use of Watson Personality Insights and Tradeoff Analytics services. The goal of the app is to show how the different Watson services can be used together in order to create cognitive applications.
Here is a list of other demo apps that can be used as references for bigger and more ambitious projects.
Integrating Personality Insights in a Laravel App
We can easily integrate Personality Insights with a Laravel 5 app using the Laravel 5 Personality Insights package.
The package provides a little wrapper around the Watson API and provide some helpful methods that makes passing data to the API and working with its’ responses super easy.
For instance a request to get the User’s Openness trait would be as simple as :
$insights = PersonalityInsights::addContentItems($dataToAnalyse); $openness = $insights->getInsight('Openness');
There exists also some methods for testing analysis level returned by Watson:
$insights->isAnalysisVeryStrong(); $insights->isAnalysisStrong(); $insights->isAnalysisWeak(); $insights->isAnalysisVeryWeak();
Store your translations in the database with Laravel translation loader package
Laravel has built-in support for localization using arrays stored in language files and in 5.4 they are adding the ab…
Laravel 5.4: JSON Based Language Files
One of the most wanted requests we receive at Laravel is introducing better support for multilingual web applications…