SlideShare a Scribd company logo
1 of 49
Download to read offline
#SitecoreSYM#SitecoreSYM © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
1
Symposium Session
Recommendation
Engine #mysym
Varun Nehra
Dmytro Shevchenko
#SitecoreSYM 2
• SitecoreTechnology MVP
(2016–2018)
• 7+ years of Sitecore experience
• 10+ Sitecore deliveries/15+ client
engagements
• Live/work in Germany
Introduction
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
DMYTRO SHEVCHENKO
Sitecore Solutions Architect @ EPAM
dmytro_shevchenko_de@epam.com
@shedal
www.structuredcode.com
VARUN NEHRA
Sr. Sitecore Solutions Architect @ EPAM
• 7+ years of Sitecore experience
• 13+ Sitecore deliveries/30+
client engagements
• Live/work in Atlanta, GA
varun_nehra@epam.com
@sitecorevarun
www.sitecorevarun.com
#SitecoreSYM 3
EPAM’s Sitecore Practice
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
100+ Projects 50+ Customers
12
SITECORE
MVPS
7
SITECORE SITE OF
THE YEAR AWARDS
50+
CERTIFIED SITECORE
DEVELOPERS
450+
EXPERIENCED
PROFESSIONALS
PLATINUM
PARTNER WITH
10+
YEARS OF
EXPERIENCE
DELIVERED FOR
#SitecoreSYM
Agenda
Machine Learning
1. Overview
2. How it works
3. Demo
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
4
Sitecore xConnect
1. Overview
2. How it works
3. Demo
What’s Next with Sitecore Cortex
Q&A
#SitecoreSYM
UserStory
AS A Sitecore Symposium attendee, I WOULD LIKETO get
recommendations for sessions I should attend, SOTHAT I don’t
need to review every breakout session and do a coin toss to resolve
conflicting sessions in my agenda.
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
5
#SitecoreSYM 6
PreparingThe Solution
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
ONE AMAZING
EVENT
VIBRANT COMMUNITY
OF DEVELOPERS &
MARKETERS
MULTI-CHANNEL
CONTENT
EXPERIENCE
PLATFORM
BYOML (BRING
YOUR OWN ML)+ + + +
Recipe
MULTI-CHANNEL
CONTENT
MACHINE
LEARNING
PERSONALIZED
AGENDA
#mysym
SITECORE
XP
+ + =
Key Ingredients
#SitecoreSYM 7
Sitecore Experience Platform 9
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
One platform to rule them all, one
event to find them, many channels to
bring them all and in the ML bind them.
#SitecoreSYM 8
Our Solution
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
Sitecore XP 9 Experience management & personalization
Sitecore xConnect Creates contact profile with social media interactions
Azure ML Supervised machine learning
SymposiumTracks &Topics Labeled dataset for model training in supervised learning
Symposium Session Content Personalized agenda for attendees
I N G R E D I E N T W H AT I S D O E S
#SitecoreSYM 9
Symposium Session Recommendation Engine
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
#SitecoreSYM
Demo – Session Recommendation Engine
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
10
#SitecoreSYM
How ItWorks – Machine Learning
• Supervised Learning
• Azure MLTemplate
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
11
#SitecoreSYM 12
How ItWorks - Machine Learning
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
MACHINE LEARNING
A u t o m a t ic t e x t
c l a s s i f i c a t i o n b e l o n g s t o
t h e t e x t m i n i n g o r t e x t
a n a l y t i c s d o m a i n o f
m a c h i n e l e a r n i n g
C l a s s i f y i n g t e x t
i n p u t i n t o a s e t o f
p r e d e f i n e d
c a t e g o r i e s
A z u r e M L o f f e r s
t e m p l a t e t o
b u i l d t e x t
a n a l y t i c s
s o l u t i o n
SUPERVISED UNSUPERVISED
CLUSTERINGCLASSIFICATION RE GRE SSION
TEXT
CLASSIFICATION
#SitecoreSYM 13
How ItWorks – Supervised Learning
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
T R A I N I N G , T E X T,
D O C U M E N T S , I M A G E S ,
E T C .
L A B E L S
N E W T E X T,
D O C U M E N T,
I M A G E , E T C
M A C H I N E L E A R N I N G
A LG O R I T H M
E X P E C T E D L A B E L
FEATUREVECTORSFEATUREVECTORS
P R E D I C AT E M O D E L
#SitecoreSYM 14
Microsoft’s ML Products
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
Microsoft
ML Server
(Microsoft
R Server)
Azure
ML
Microsoft
Azure
Cognitive
Services
Microsoft
R
Microsoft
Cognitive
Toolkit
Batch AI
Training
Service
Spark MLLib
(HDInsight)
SQL ML
Services
#SitecoreSYM 15
Azure MLTemplate
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
START
STEP#1
DATA
PREPARATION
STEP#2
TEXT
PRE-
PROCESSING
STEP#3A
N-GRAMS TF
FEATURE
EXTRACTION
STEP#3B
UNIGRAMS
TF-IDF
FEATURE
EXTRACTION
STEP#4
TRAIN AND
EVALUATE
MODELS
STEP#5A
DEPLOY WEB
SERVICES WITH
N-GRAMS TF
MODEL
STEP#5B
DEPLOY WEB
SERVICES WITH
UNIGRAMS
TF-IDF MODEL
#SitecoreSYM
Demo –Azure ML
• Azure ML Studio
• Azure MLWeb Services
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
16
#SitecoreSYM
SitecorexConnect –SolutionOverview
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
17
#SitecoreSYM 18
How ItWorks – Sitecore xConnect API
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
S I T E C O R E I N G R E D I E N T S W H AT I T ’ S U S E D F O R
Collection Model The complete attendee profile is represented as an xConnect collection model
Contacts An xConnect contact is created as a representation of every attendee
Facets Extended information about the attendee is stored in custom contact facets
Channels Every social media platform is represented as a marketing channel
Interactions
Actions and activities of an attendee (e.g. tweets, posts, comments) are stored
via xConnect interactions
#SitecoreSYM 19
How ItWorks – Social Media + xConnect
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
S O C I A L M E D I A
I M P O R T E R
X C O N N E C T
C O L L E C T I O N
C O L L E C T I O N
D ATA B A S E
#SitecoreSYM 20
How ItWorks – Generating Recommendations
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
C O L L E C T I O N
D ATA B A S E
X C O N N E C T
C O L L E C T I O N
S E R V E R
S I T E C O R E
W I T H M L
C O M P O N E N T S
A Z U R E M L
W E B
S E R V I C E S
S Y M P O S I U M
A G E N D A
R E C O M M E N D A T I O N
#SitecoreSYM
How ItWorks –Sitecore xConnect
• Our data model: custom xConnect facets
• Social media integration
• Azure ML – web services integration
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
21
#SitecoreSYM
Behind the Scenes
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
22
#SitecoreSYM 23
Step 1: Define Custom Facets
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
[Serializable]
[FacetKey(FacetKeys.AttendeeProfile)]
public class AttendeeProfile : Facet
{
public string TwitterHandle { get; set; }
public Dictionary<string, double> TrackScores { get; } = new Dictionary<string, double>();
public Dictionary<string, double> TopicScores { get; } = new Dictionary<string, double>();
public int PostsProcessed { get; set; }
}
#SitecoreSYM 24
Step 1: Define Custom Facets
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
[Serializable]
[FacetKey(FacetKeys.SocialPostInfo)]
public class SocialPostInfo : Facet
{
public string Text { get; set; }
public DateTime CreatedAt { get; set; }
}
#SitecoreSYM 25
Step 2: Register the Facets in xConnect Model Configuration
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
public class CustomDataModel
{
public static XdbModel Model { get; } = BuildModel();
private static XdbModel BuildModel()
{
XdbModelBuilder xdbModelBuilder =
new XdbModelBuilder("Recommender", new XdbModelVersion(1, 1));
xdbModelBuilder.ReferenceModel(CollectionModel.Model);
xdbModelBuilder.DefineFacet<Contact, AttendeeProfile>("AttendeeProfile");
xdbModelBuilder.DefineFacet<Interaction, SocialPostInfo>("SocialPostInfo");
return xdbModelBuilder.BuildModel();
}
}
#SitecoreSYM 26
Step 2.5:Try to Save Data
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
The type of this instance does not correspond to any type in the model
#SitecoreSYM 27
Step 2.75: Register the Facets in xConnect Model Configuration
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
...
<schemas hint="list:AddModelConfiguration">
<schema name="customDataModel" type="Sitecore.XConnect.Client.Configuration.StaticModelConfiguration">
<param desc="modeltype">Recommender.Foundation.CollectionModel.CustomDataModel</param>
</schema>
</schemas>
...
#SitecoreSYM 28
Step 2.99:Try to Save Data
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
'CustomDataModel, 1.0' does not match the remote version
#SitecoreSYM 29
Step 3: Export the Model to Json
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
class Program
{
static void Main()
{
var json = XdbModelWriter.Serialize(CustomDataModel.Model);
File.WriteAllText(CustomDataModel.Model.FullName + ".json", json);
}
}
#SitecoreSYM 30
Step 3: Export the Model to Json
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
{
...
"Types": {
"Recommender.Foundation.CollectionModel.Facets.SocialPostInfo": {
...
"Type": "Facet",
"BaseType": "Sitecore.XConnect.Facet",
"Properties": {
"Text": {
"Type": "String"
},
"CreatedAt": {
"Type": "DateTime"
}
}
}
},
"Facets": [
...
{
"Target": "Interaction",
"Name": "SocialPostInfo",
"Type": "Recommender.Foundation.CollectionModel.Facets.SocialPostInfo"
}
]
}
#SitecoreSYM 31
Sitecore Forms Submit Action
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
#SitecoreSYM 32
Identify and Save the Contact
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
Tracker.Current.Session.IdentifyAs("twitter", twitterHandle);
contactManager.SaveContactToCollectionDb(Tracker.Current.Contact);
#SitecoreSYM 33
Load the Contact with Social Media Facets
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
ContactExpandOptions expandOptions = new ContactExpandOptions(
FacetKeys.AttendeeProfile,
FacetKeys.SocialImportInfo,
PersonalInformation.DefaultFacetKey);
IEntityReference<Contact> twitterContactReference =
new IdentifiedContactReference("twitter", twitterHandle);
Contact contact = client.Get(twitterContactReference, expandOptions);
#SitecoreSYM 34
Initialize Custom Attendee Facet
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
AttendeeProfile attendeeProfile =
contact.GetFacet<AttendeeProfile>() ?? new AttendeeProfile();
attendeeProfile.TwitterHandle = twitterHandle;
attendeeProfile.TrackScores.Clear();
attendeeProfile.TopicScores.Clear();
client.SetFacet<AttendeeProfile>(contact, attendeeProfile);
#SitecoreSYM 35
ImportTweets as Interactions
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
List<Status> results = TwitterHelper.GetUserTweets(context, twitterHandle);
foreach (Status tweet in results)
{
var interaction =
new Interaction(contact, InteractionInitiator.Contact);
var postInfo = new SocialPostInfo
{
CreatedAt = tweet.CreatedAt,
Text = tweet.FullText
};
client.SetFacet<SocialPostInfo>(interaction, postInfo);
client.AddInteraction(interaction);
}
#SitecoreSYM 36
ScoreAll Interactions Using Azure ML
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
public class AttendeeScorer
{
private readonly CognitiveServicesClient _services;
public AttendeeScorer(CognitiveServicesClient services)
{
_services = services;
}
public async Task ScoreAttendee(IXdbContext client, Contact contact)
{
try
{
const int batchSize = 10;
string text = string.Empty;
int i = 0;
List<SocialPostInfo> posts =
contact.Interactions
.Select(interaction => interaction.GetFacet<SocialPostInfo>())
.Where(p => p != null)
.ToList();
int maxi = posts.Count - 1;
AttendeeProfile profile = contact.GetFacet<AttendeeProfile>();
Dictionary<string, double> scores;
foreach (SocialPostInfo post in posts)
{
text += " " + post.Text;
if (++i % batchSize == 0 || i == maxi)
{
profile.PostsProcessed += i % batchSize == 0 ? batchSize : i % batchSize;
scores = await _services.InvokeTracksService(text);
foreach (string key in scores.Keys)
{
if (!profile.TrackScores.ContainsKey(key))
{
profile.TrackScores[key] = scores[key];
}
else
{
profile.TrackScores[key] += scores[key];
}
}
scores = await _services.InvokeTopicsService(text);
foreach (string key in scores.Keys)
{
if (!profile.TopicScores.ContainsKey(key))
{
profile.TopicScores[key] = scores[key];
}
else
{
profile.TopicScores[key] += scores[key];
}
}
text = String.Empty;
}
}
client.SetFacet(contact, profile);
}
catch (Exception ex)
{
Log.Error(ex.Message,ex, typeof(AttendeeScorer));
throw;
}
}
}
public class CognitiveServicesClient
{
public class StringTable
{
public string[] ColumnNames { get; set; }
public string[,] Values { get; set; }
}
public class ServiceOutput
{
public string Type { get; set; }
public ServiceOuputValue Value { get; set; }
}
public class ServiceOuputValue
{
public string[] ColumnNames { get; set; }
public string[] ColumnTypes { get; set; }
public string[][] Values { get; set; }
}
private static readonly Regex ClassRegex = new Regex(".+"(?<className>.+)".*");
public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeTracksService(string text)
{
ISitecoreContext context = SitecoreContextFactory.Default.GetSitecoreContext();
var endpoint = context.GetItem<CognitiveServicesEndpoint>("/sitecore/content/CognitiveServices/Tracks");
return await InvokeScoringService(text, endpoint);
}
public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeTopicsService(string text)
{
ISitecoreContext context = SitecoreContextFactory.Default.GetSitecoreContext();
var endpoint = context.GetItem<CognitiveServicesEndpoint>("/sitecore/content/CognitiveServices/Topics");
return await InvokeScoringService(text, endpoint);
}
public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeScoringService(string text, CognitiveServicesEndpoint endpoint)
{
using (var client = new HttpClient())
{
var scoreRequest = new
{
Inputs = new Dictionary<string, StringTable>() {
{
"Unigrams Web Service Input",
new StringTable()
{
ColumnNames = new[] {"text_column"},
Values = new[,]
{
{
text
}
}
}
},
},
GlobalParameters = new Dictionary<string, string>()
{
}
};
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", endpoint.ApiKey);
client.BaseAddress = new Uri(endpoint.EndpointUrl.Url);
HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
string output = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, ServiceOutput>>>(output);
string[] columnNames = result["Results"].First().Value.Value.ColumnNames;
string[] values = result["Results"].First().Value.Value.Values[0];
Array.Resize(ref columnNames, columnNames.Length - 1);
Array.Resize(ref values, values.Length - 1);
return Enumerable.Range(0, columnNames.Length)
.ToDictionary(
i => ClassRegex.Match(columnNames[i]).Groups["className"].Value,
i => Convert.ToDouble(values[i], CultureInfo.InvariantCulture));
}
else
{
string responseContent = await response.Content.ReadAsStringAsync();
var ex = new Exception($"The request failed with status code: {response.StatusCode}. Full response: {responseContent}");
throw ex;
}
}
}
}
#SitecoreSYM
Experience Profile Demo
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
37
#SitecoreSYM
Let’s summarize…
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
38
#SitecoreSYM 39
Create a labeled dataset
Session titles + abstracts = training text
Session tracks & topics = Labels
Extract features using feature extraction algorithm
Train models in Azure ML
Deploy theTracks web service
Repeat steps 1-4 using session topics as labels and deploy theTopics web service
Step by Step – ML Solution
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
1
1
2
2
3
4
5
#SitecoreSYM 40
FetchTwitter posts using LinqToTwitter
Implement a custom xConnect model using contact and interaction facets
Use the xConnect Collection service to populate contacts and save social media interactions
Use theTracks andTopics Azure ML web services to batch-process social media interactions
Save label scores to a custom contact facet
Step by Step – Sitecore Solution: xConnect
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
2
3
4
5
1
#SitecoreSYM 41
Create a web form to get user input using Experience Forms
Import content using SPE by parsing JSON feed
Implement a calendar rendering to show full agenda
Use the highest-scoring track to generate initial agenda
This leaves us with conflicts or gaps in agenda
Resolve conflicts using topic scores (highest scoring topic wins)
Fill gaps using the secondary track along with the highest-scoring topics
Step by Step - Sitecore Solution - UI
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
1
1
2
3
4
2
3
#SitecoreSYM
What’s Next …?
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
42
#SitecoreSYM 43
Scalable Data-Processing platform designed to integrate with xDB
and Machine Learning workers
SitecoreCortex Launched
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
Provides default integration with Microsoft’s ML Server
BYOML (Bring your own ML)
#SitecoreSYM 44
SitecoreCortex Processing Engine
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
STEP#1
DATA
PREPARATION
Cortex Processing Engine
Task Agent
Worker
Data Source
Task Executor Storage
Model
Task Agent
Task Agent External
Service
MESSAGE
BUS
Event
Microsoft Machine
Learning Server
#SitecoreSYM 45
Remember Supervised Learning?
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
STEP#1
DATA
PREPARATION
T R A I N I N G , T E X T,
D O C U M E N T S ,
I M A G E S , E T C .
L A B E L S
M A C H I N E
L E A R N I N G
A LG O R I T H M
FEATUREVECTORS
P R E D I C AT E
M O D E L
#SitecoreSYM 46
With SitecoreCortex
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
BYOMLDATA PREPARATION
Distributed Task
WorkerData Source
Model
External
Service
#SitecoreSYM 47
SolutionWith Cortex Processing Engine
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
CONTINOUS SOCIAL
SYNC
SCORING LABELS USING
ML
INTERACTION FACETS CONTACT FACETS
ML MODEL TRAINING
Distributed Task
WorkerData Source
Model
MODEL FOR ML
Distributed Task
Worker
Data Source
Model
#SitecoreSYM © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks
of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
48
Q&A
#SitecoreSYM
FOR DISCUSSION PURPOSESONLY. Sitecore Confidential
and Proprietary. © 2018 Sitecore Corporation A/S. All rights
reserved. Sitecore® and Own the Experience® are registered
trademarks of Sitecore Corporation A/S. All other brand and
product names are the property of their respective owners.
© 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered
trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
49

More Related Content

What's hot

API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...
API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...
API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...CA API Management
 
What is CloudSpokes?
What is CloudSpokes?What is CloudSpokes?
What is CloudSpokes?Raymond Gao
 
Practical strategies to innovate faster and meet business goals
Practical strategies to innovate faster and meet business goalsPractical strategies to innovate faster and meet business goals
Practical strategies to innovate faster and meet business goalsWaveMaker, Inc.
 
agados app engine platform Intro
agados app engine platform Introagados app engine platform Intro
agados app engine platform IntroYongkyoo Park
 
Adobe Experience Manager Vision and Roadmap
Adobe Experience Manager Vision and RoadmapAdobe Experience Manager Vision and Roadmap
Adobe Experience Manager Vision and RoadmapLoni Stark
 
Your New Digital Business & APIs
Your New Digital Business & APIs Your New Digital Business & APIs
Your New Digital Business & APIs CA API Management
 
Accelerate Enterprise Mobile Application Development
Accelerate Enterprise Mobile Application DevelopmentAccelerate Enterprise Mobile Application Development
Accelerate Enterprise Mobile Application DevelopmentWaveMaker, Inc.
 
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541Peter Spielvogel
 
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UX
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UXSAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UX
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UXPeter Spielvogel
 
SAP Fiori Cloud Service webinar - June 10, 2016
SAP Fiori Cloud Service webinar - June 10, 2016SAP Fiori Cloud Service webinar - June 10, 2016
SAP Fiori Cloud Service webinar - June 10, 2016Laurent Rieu
 
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019SAP Screen Personas ASUG83737 ASUG Annual Conference 2019
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019Peter Spielvogel
 
ASUG webcast - going mobile with Slipstream Engine March 2018
ASUG webcast - going mobile with Slipstream Engine March 2018ASUG webcast - going mobile with Slipstream Engine March 2018
ASUG webcast - going mobile with Slipstream Engine March 2018Peter Spielvogel
 
Create Kpi fiori apps
Create Kpi fiori appsCreate Kpi fiori apps
Create Kpi fiori appsAjay593954
 
Architecting in the Cloud: Choosing the Right Technologies for your Solution
Architecting in the Cloud: Choosing the Right Technologies for your SolutionArchitecting in the Cloud: Choosing the Right Technologies for your Solution
Architecting in the Cloud: Choosing the Right Technologies for your SolutionJeff Douglas
 
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019SAP Screen Personas - ASUG Northern CA chapter meeting March 2019
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019Peter Spielvogel
 
SAP Screen Personas at SAP TechEd 2018
SAP Screen Personas at SAP TechEd 2018SAP Screen Personas at SAP TechEd 2018
SAP Screen Personas at SAP TechEd 2018Peter Spielvogel
 
Neha_Thapa_Resume
Neha_Thapa_ResumeNeha_Thapa_Resume
Neha_Thapa_ResumeNeha Thapa
 
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" Happy
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" HappyEnterprise App Dev Platform to keep your "Developers, Architects and CIO" Happy
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" HappyWaveMaker, Inc.
 

What's hot (20)

API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...
API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...
API360 – A How-To Guide for Enterprise APIs - Learn how to position your ente...
 
What is CloudSpokes?
What is CloudSpokes?What is CloudSpokes?
What is CloudSpokes?
 
Practical strategies to innovate faster and meet business goals
Practical strategies to innovate faster and meet business goalsPractical strategies to innovate faster and meet business goals
Practical strategies to innovate faster and meet business goals
 
agados app engine platform Intro
agados app engine platform Introagados app engine platform Intro
agados app engine platform Intro
 
Adobe Experience Manager Vision and Roadmap
Adobe Experience Manager Vision and RoadmapAdobe Experience Manager Vision and Roadmap
Adobe Experience Manager Vision and Roadmap
 
Your New Digital Business & APIs
Your New Digital Business & APIs Your New Digital Business & APIs
Your New Digital Business & APIs
 
Accelerate Enterprise Mobile Application Development
Accelerate Enterprise Mobile Application DevelopmentAccelerate Enterprise Mobile Application Development
Accelerate Enterprise Mobile Application Development
 
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541
SAP TechEd 2017 Fiori and SAP Screen Personas NET 52541
 
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UX
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UXSAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UX
SAPPHIRE NOW 2018 ASUG 11652 SAP Screen Personas as part of the SAP Fiori UX
 
Sap fiori tutorial
Sap fiori tutorialSap fiori tutorial
Sap fiori tutorial
 
SAP Fiori Cloud Service webinar - June 10, 2016
SAP Fiori Cloud Service webinar - June 10, 2016SAP Fiori Cloud Service webinar - June 10, 2016
SAP Fiori Cloud Service webinar - June 10, 2016
 
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019SAP Screen Personas ASUG83737 ASUG Annual Conference 2019
SAP Screen Personas ASUG83737 ASUG Annual Conference 2019
 
ASUG webcast - going mobile with Slipstream Engine March 2018
ASUG webcast - going mobile with Slipstream Engine March 2018ASUG webcast - going mobile with Slipstream Engine March 2018
ASUG webcast - going mobile with Slipstream Engine March 2018
 
Create Kpi fiori apps
Create Kpi fiori appsCreate Kpi fiori apps
Create Kpi fiori apps
 
Architecting in the Cloud: Choosing the Right Technologies for your Solution
Architecting in the Cloud: Choosing the Right Technologies for your SolutionArchitecting in the Cloud: Choosing the Right Technologies for your Solution
Architecting in the Cloud: Choosing the Right Technologies for your Solution
 
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019SAP Screen Personas - ASUG Northern CA chapter meeting March 2019
SAP Screen Personas - ASUG Northern CA chapter meeting March 2019
 
SAP Screen Personas at SAP TechEd 2018
SAP Screen Personas at SAP TechEd 2018SAP Screen Personas at SAP TechEd 2018
SAP Screen Personas at SAP TechEd 2018
 
Neha_Thapa_Resume
Neha_Thapa_ResumeNeha_Thapa_Resume
Neha_Thapa_Resume
 
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" Happy
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" HappyEnterprise App Dev Platform to keep your "Developers, Architects and CIO" Happy
Enterprise App Dev Platform to keep your "Developers, Architects and CIO" Happy
 
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
 

Similar to Sitecore: Session recommendation engine

Empowering Your Users: Maximizing the Content Management Experience
Empowering Your Users: Maximizing the Content Management ExperienceEmpowering Your Users: Maximizing the Content Management Experience
Empowering Your Users: Maximizing the Content Management ExperienceJeffrey Rondeau
 
Ten Sitecore 9 Form Features to Increase Conversions
Ten Sitecore 9 Form Features to Increase ConversionsTen Sitecore 9 Form Features to Increase Conversions
Ten Sitecore 9 Form Features to Increase ConversionsJaina Baumgartner
 
world's fastest delivery pipeline for Sitecore on Azure
world's fastest delivery pipeline for Sitecore on Azureworld's fastest delivery pipeline for Sitecore on Azure
world's fastest delivery pipeline for Sitecore on AzureBas Lijten
 
Automate Everything!
Automate Everything!Automate Everything!
Automate Everything!Andy Parry
 
Getting Started: Personalization
Getting Started: PersonalizationGetting Started: Personalization
Getting Started: PersonalizationSitecore
 
Finding Value in Your Data: Sitecore Analytics
Finding Value in Your Data: Sitecore AnalyticsFinding Value in Your Data: Sitecore Analytics
Finding Value in Your Data: Sitecore AnalyticsJacqueline Baxter
 
Sitecore Symposium 2018 - Getting Value Out of Your Data
Sitecore Symposium 2018 - Getting Value Out of Your DataSitecore Symposium 2018 - Getting Value Out of Your Data
Sitecore Symposium 2018 - Getting Value Out of Your DataMichael Shaw
 
Destination Dollywood! Optimizing the Digital Experience
Destination Dollywood! Optimizing the Digital ExperienceDestination Dollywood! Optimizing the Digital Experience
Destination Dollywood! Optimizing the Digital ExperienceSitecore
 
Data Mining with Sitecore xDB
Data Mining with Sitecore xDBData Mining with Sitecore xDB
Data Mining with Sitecore xDBashiga
 
Meet your new best friend: The Sitecore rules engine
Meet your new best friend: The Sitecore rules engineMeet your new best friend: The Sitecore rules engine
Meet your new best friend: The Sitecore rules engineJeffrey Rondeau
 
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...John Montes
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureDaniel Foo
 
Romancing the Customer Experience | Sitecore Symposium 2016
Romancing the Customer Experience | Sitecore Symposium 2016Romancing the Customer Experience | Sitecore Symposium 2016
Romancing the Customer Experience | Sitecore Symposium 2016Delphic Digital
 
Keeping hackers out release to public
Keeping hackers out   release to publicKeeping hackers out   release to public
Keeping hackers out release to publicBas Lijten
 
What’s the Deal with Profiles, Personas, and Patterns?
What’s the Deal with Profiles, Personas, and Patterns?What’s the Deal with Profiles, Personas, and Patterns?
What’s the Deal with Profiles, Personas, and Patterns?Sitecore
 
Sitecore Experience Commerce Architecture
Sitecore Experience Commerce ArchitectureSitecore Experience Commerce Architecture
Sitecore Experience Commerce ArchitectureRob Earlam
 
Sitecores' Cortex
Sitecores' CortexSitecores' Cortex
Sitecores' CortexSagittarius
 
Track 4 - How the avalanche of available customer data can help create more e...
Track 4 - How the avalanche of available customer data can help create more e...Track 4 - How the avalanche of available customer data can help create more e...
Track 4 - How the avalanche of available customer data can help create more e...edynamic
 
What is digital personalisation in Travel and why should I care? Travel Techn...
What is digital personalisation in Travel and why should I care? Travel Techn...What is digital personalisation in Travel and why should I care? Travel Techn...
What is digital personalisation in Travel and why should I care? Travel Techn...Sagittarius
 
Introducing the Sitecore Commerce 9 Connector for Microsoft D365
Introducing the Sitecore Commerce 9 Connector for Microsoft D365Introducing the Sitecore Commerce 9 Connector for Microsoft D365
Introducing the Sitecore Commerce 9 Connector for Microsoft D365Dean Thrasher
 

Similar to Sitecore: Session recommendation engine (20)

Empowering Your Users: Maximizing the Content Management Experience
Empowering Your Users: Maximizing the Content Management ExperienceEmpowering Your Users: Maximizing the Content Management Experience
Empowering Your Users: Maximizing the Content Management Experience
 
Ten Sitecore 9 Form Features to Increase Conversions
Ten Sitecore 9 Form Features to Increase ConversionsTen Sitecore 9 Form Features to Increase Conversions
Ten Sitecore 9 Form Features to Increase Conversions
 
world's fastest delivery pipeline for Sitecore on Azure
world's fastest delivery pipeline for Sitecore on Azureworld's fastest delivery pipeline for Sitecore on Azure
world's fastest delivery pipeline for Sitecore on Azure
 
Automate Everything!
Automate Everything!Automate Everything!
Automate Everything!
 
Getting Started: Personalization
Getting Started: PersonalizationGetting Started: Personalization
Getting Started: Personalization
 
Finding Value in Your Data: Sitecore Analytics
Finding Value in Your Data: Sitecore AnalyticsFinding Value in Your Data: Sitecore Analytics
Finding Value in Your Data: Sitecore Analytics
 
Sitecore Symposium 2018 - Getting Value Out of Your Data
Sitecore Symposium 2018 - Getting Value Out of Your DataSitecore Symposium 2018 - Getting Value Out of Your Data
Sitecore Symposium 2018 - Getting Value Out of Your Data
 
Destination Dollywood! Optimizing the Digital Experience
Destination Dollywood! Optimizing the Digital ExperienceDestination Dollywood! Optimizing the Digital Experience
Destination Dollywood! Optimizing the Digital Experience
 
Data Mining with Sitecore xDB
Data Mining with Sitecore xDBData Mining with Sitecore xDB
Data Mining with Sitecore xDB
 
Meet your new best friend: The Sitecore rules engine
Meet your new best friend: The Sitecore rules engineMeet your new best friend: The Sitecore rules engine
Meet your new best friend: The Sitecore rules engine
 
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...
Sitecore Symposium 2018 - Cooking Up Smart Product Recommendations for Siteco...
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Romancing the Customer Experience | Sitecore Symposium 2016
Romancing the Customer Experience | Sitecore Symposium 2016Romancing the Customer Experience | Sitecore Symposium 2016
Romancing the Customer Experience | Sitecore Symposium 2016
 
Keeping hackers out release to public
Keeping hackers out   release to publicKeeping hackers out   release to public
Keeping hackers out release to public
 
What’s the Deal with Profiles, Personas, and Patterns?
What’s the Deal with Profiles, Personas, and Patterns?What’s the Deal with Profiles, Personas, and Patterns?
What’s the Deal with Profiles, Personas, and Patterns?
 
Sitecore Experience Commerce Architecture
Sitecore Experience Commerce ArchitectureSitecore Experience Commerce Architecture
Sitecore Experience Commerce Architecture
 
Sitecores' Cortex
Sitecores' CortexSitecores' Cortex
Sitecores' Cortex
 
Track 4 - How the avalanche of available customer data can help create more e...
Track 4 - How the avalanche of available customer data can help create more e...Track 4 - How the avalanche of available customer data can help create more e...
Track 4 - How the avalanche of available customer data can help create more e...
 
What is digital personalisation in Travel and why should I care? Travel Techn...
What is digital personalisation in Travel and why should I care? Travel Techn...What is digital personalisation in Travel and why should I care? Travel Techn...
What is digital personalisation in Travel and why should I care? Travel Techn...
 
Introducing the Sitecore Commerce 9 Connector for Microsoft D365
Introducing the Sitecore Commerce 9 Connector for Microsoft D365Introducing the Sitecore Commerce 9 Connector for Microsoft D365
Introducing the Sitecore Commerce 9 Connector for Microsoft D365
 

More from VarunNehra

Sitecore Product Updates from Minneapolis DX Summit
Sitecore Product Updates from Minneapolis DX SummitSitecore Product Updates from Minneapolis DX Summit
Sitecore Product Updates from Minneapolis DX SummitVarunNehra
 
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...VarunNehra
 
OneWeb: Unifying multi-brand experience management and digital operations wit...
OneWeb: Unifying multi-brand experience management and digital operations wit...OneWeb: Unifying multi-brand experience management and digital operations wit...
OneWeb: Unifying multi-brand experience management and digital operations wit...VarunNehra
 
Migrating from Azure Search to SearcStax
Migrating from Azure Search to SearcStaxMigrating from Azure Search to SearcStax
Migrating from Azure Search to SearcStaxVarunNehra
 
Get ready for Jamstack with Sitecore Experience Edge
Get ready for Jamstack with Sitecore Experience EdgeGet ready for Jamstack with Sitecore Experience Edge
Get ready for Jamstack with Sitecore Experience EdgeVarunNehra
 
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)VarunNehra
 
Enterprise Marketplace Powered by Sitecore Experience Cloud
Enterprise Marketplace Powered by Sitecore Experience CloudEnterprise Marketplace Powered by Sitecore Experience Cloud
Enterprise Marketplace Powered by Sitecore Experience CloudVarunNehra
 
Accelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixAccelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixVarunNehra
 

More from VarunNehra (8)

Sitecore Product Updates from Minneapolis DX Summit
Sitecore Product Updates from Minneapolis DX SummitSitecore Product Updates from Minneapolis DX Summit
Sitecore Product Updates from Minneapolis DX Summit
 
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
 
OneWeb: Unifying multi-brand experience management and digital operations wit...
OneWeb: Unifying multi-brand experience management and digital operations wit...OneWeb: Unifying multi-brand experience management and digital operations wit...
OneWeb: Unifying multi-brand experience management and digital operations wit...
 
Migrating from Azure Search to SearcStax
Migrating from Azure Search to SearcStaxMigrating from Azure Search to SearcStax
Migrating from Azure Search to SearcStax
 
Get ready for Jamstack with Sitecore Experience Edge
Get ready for Jamstack with Sitecore Experience EdgeGet ready for Jamstack with Sitecore Experience Edge
Get ready for Jamstack with Sitecore Experience Edge
 
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)
Sitecore Experience Edge, A short story (Intro to Sitecore Experience Edge)
 
Enterprise Marketplace Powered by Sitecore Experience Cloud
Enterprise Marketplace Powered by Sitecore Experience CloudEnterprise Marketplace Powered by Sitecore Experience Cloud
Enterprise Marketplace Powered by Sitecore Experience Cloud
 
Accelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixAccelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & Helix
 

Recently uploaded

Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxBEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxthusosetemere
 
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiCall Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiPriya Reddy
 
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESBIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESfuthumetsaneliswa
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
History of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathHistory of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathphntsoaki
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.thamaeteboho94
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
Lions New Portal from Narsimha Raju Dichpally 320D.pptx
Lions New Portal from Narsimha Raju Dichpally 320D.pptxLions New Portal from Narsimha Raju Dichpally 320D.pptx
Lions New Portal from Narsimha Raju Dichpally 320D.pptxlionnarsimharajumjf
 
Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20rejz122017
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 
Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxlionnarsimharajumjf
 

Recently uploaded (20)

Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxBEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiCall Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
 
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESBIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
History of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathHistory of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth death
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Lions New Portal from Narsimha Raju Dichpally 320D.pptx
Lions New Portal from Narsimha Raju Dichpally 320D.pptxLions New Portal from Narsimha Raju Dichpally 320D.pptx
Lions New Portal from Narsimha Raju Dichpally 320D.pptx
 
Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptx
 

Sitecore: Session recommendation engine

  • 1. #SitecoreSYM#SitecoreSYM © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 1 Symposium Session Recommendation Engine #mysym Varun Nehra Dmytro Shevchenko
  • 2. #SitecoreSYM 2 • SitecoreTechnology MVP (2016–2018) • 7+ years of Sitecore experience • 10+ Sitecore deliveries/15+ client engagements • Live/work in Germany Introduction © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. DMYTRO SHEVCHENKO Sitecore Solutions Architect @ EPAM dmytro_shevchenko_de@epam.com @shedal www.structuredcode.com VARUN NEHRA Sr. Sitecore Solutions Architect @ EPAM • 7+ years of Sitecore experience • 13+ Sitecore deliveries/30+ client engagements • Live/work in Atlanta, GA varun_nehra@epam.com @sitecorevarun www.sitecorevarun.com
  • 3. #SitecoreSYM 3 EPAM’s Sitecore Practice © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 100+ Projects 50+ Customers 12 SITECORE MVPS 7 SITECORE SITE OF THE YEAR AWARDS 50+ CERTIFIED SITECORE DEVELOPERS 450+ EXPERIENCED PROFESSIONALS PLATINUM PARTNER WITH 10+ YEARS OF EXPERIENCE DELIVERED FOR
  • 4. #SitecoreSYM Agenda Machine Learning 1. Overview 2. How it works 3. Demo © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 4 Sitecore xConnect 1. Overview 2. How it works 3. Demo What’s Next with Sitecore Cortex Q&A
  • 5. #SitecoreSYM UserStory AS A Sitecore Symposium attendee, I WOULD LIKETO get recommendations for sessions I should attend, SOTHAT I don’t need to review every breakout session and do a coin toss to resolve conflicting sessions in my agenda. © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 5
  • 6. #SitecoreSYM 6 PreparingThe Solution © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. ONE AMAZING EVENT VIBRANT COMMUNITY OF DEVELOPERS & MARKETERS MULTI-CHANNEL CONTENT EXPERIENCE PLATFORM BYOML (BRING YOUR OWN ML)+ + + + Recipe MULTI-CHANNEL CONTENT MACHINE LEARNING PERSONALIZED AGENDA #mysym SITECORE XP + + = Key Ingredients
  • 7. #SitecoreSYM 7 Sitecore Experience Platform 9 © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. One platform to rule them all, one event to find them, many channels to bring them all and in the ML bind them.
  • 8. #SitecoreSYM 8 Our Solution © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. Sitecore XP 9 Experience management & personalization Sitecore xConnect Creates contact profile with social media interactions Azure ML Supervised machine learning SymposiumTracks &Topics Labeled dataset for model training in supervised learning Symposium Session Content Personalized agenda for attendees I N G R E D I E N T W H AT I S D O E S
  • 9. #SitecoreSYM 9 Symposium Session Recommendation Engine © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
  • 10. #SitecoreSYM Demo – Session Recommendation Engine © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 10
  • 11. #SitecoreSYM How ItWorks – Machine Learning • Supervised Learning • Azure MLTemplate © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 11
  • 12. #SitecoreSYM 12 How ItWorks - Machine Learning © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. MACHINE LEARNING A u t o m a t ic t e x t c l a s s i f i c a t i o n b e l o n g s t o t h e t e x t m i n i n g o r t e x t a n a l y t i c s d o m a i n o f m a c h i n e l e a r n i n g C l a s s i f y i n g t e x t i n p u t i n t o a s e t o f p r e d e f i n e d c a t e g o r i e s A z u r e M L o f f e r s t e m p l a t e t o b u i l d t e x t a n a l y t i c s s o l u t i o n SUPERVISED UNSUPERVISED CLUSTERINGCLASSIFICATION RE GRE SSION TEXT CLASSIFICATION
  • 13. #SitecoreSYM 13 How ItWorks – Supervised Learning © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. T R A I N I N G , T E X T, D O C U M E N T S , I M A G E S , E T C . L A B E L S N E W T E X T, D O C U M E N T, I M A G E , E T C M A C H I N E L E A R N I N G A LG O R I T H M E X P E C T E D L A B E L FEATUREVECTORSFEATUREVECTORS P R E D I C AT E M O D E L
  • 14. #SitecoreSYM 14 Microsoft’s ML Products © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. Microsoft ML Server (Microsoft R Server) Azure ML Microsoft Azure Cognitive Services Microsoft R Microsoft Cognitive Toolkit Batch AI Training Service Spark MLLib (HDInsight) SQL ML Services
  • 15. #SitecoreSYM 15 Azure MLTemplate © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. START STEP#1 DATA PREPARATION STEP#2 TEXT PRE- PROCESSING STEP#3A N-GRAMS TF FEATURE EXTRACTION STEP#3B UNIGRAMS TF-IDF FEATURE EXTRACTION STEP#4 TRAIN AND EVALUATE MODELS STEP#5A DEPLOY WEB SERVICES WITH N-GRAMS TF MODEL STEP#5B DEPLOY WEB SERVICES WITH UNIGRAMS TF-IDF MODEL
  • 16. #SitecoreSYM Demo –Azure ML • Azure ML Studio • Azure MLWeb Services © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 16
  • 17. #SitecoreSYM SitecorexConnect –SolutionOverview © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 17
  • 18. #SitecoreSYM 18 How ItWorks – Sitecore xConnect API © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. S I T E C O R E I N G R E D I E N T S W H AT I T ’ S U S E D F O R Collection Model The complete attendee profile is represented as an xConnect collection model Contacts An xConnect contact is created as a representation of every attendee Facets Extended information about the attendee is stored in custom contact facets Channels Every social media platform is represented as a marketing channel Interactions Actions and activities of an attendee (e.g. tweets, posts, comments) are stored via xConnect interactions
  • 19. #SitecoreSYM 19 How ItWorks – Social Media + xConnect © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. S O C I A L M E D I A I M P O R T E R X C O N N E C T C O L L E C T I O N C O L L E C T I O N D ATA B A S E
  • 20. #SitecoreSYM 20 How ItWorks – Generating Recommendations © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. C O L L E C T I O N D ATA B A S E X C O N N E C T C O L L E C T I O N S E R V E R S I T E C O R E W I T H M L C O M P O N E N T S A Z U R E M L W E B S E R V I C E S S Y M P O S I U M A G E N D A R E C O M M E N D A T I O N
  • 21. #SitecoreSYM How ItWorks –Sitecore xConnect • Our data model: custom xConnect facets • Social media integration • Azure ML – web services integration © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 21
  • 22. #SitecoreSYM Behind the Scenes © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 22
  • 23. #SitecoreSYM 23 Step 1: Define Custom Facets © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. [Serializable] [FacetKey(FacetKeys.AttendeeProfile)] public class AttendeeProfile : Facet { public string TwitterHandle { get; set; } public Dictionary<string, double> TrackScores { get; } = new Dictionary<string, double>(); public Dictionary<string, double> TopicScores { get; } = new Dictionary<string, double>(); public int PostsProcessed { get; set; } }
  • 24. #SitecoreSYM 24 Step 1: Define Custom Facets © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. [Serializable] [FacetKey(FacetKeys.SocialPostInfo)] public class SocialPostInfo : Facet { public string Text { get; set; } public DateTime CreatedAt { get; set; } }
  • 25. #SitecoreSYM 25 Step 2: Register the Facets in xConnect Model Configuration © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. public class CustomDataModel { public static XdbModel Model { get; } = BuildModel(); private static XdbModel BuildModel() { XdbModelBuilder xdbModelBuilder = new XdbModelBuilder("Recommender", new XdbModelVersion(1, 1)); xdbModelBuilder.ReferenceModel(CollectionModel.Model); xdbModelBuilder.DefineFacet<Contact, AttendeeProfile>("AttendeeProfile"); xdbModelBuilder.DefineFacet<Interaction, SocialPostInfo>("SocialPostInfo"); return xdbModelBuilder.BuildModel(); } }
  • 26. #SitecoreSYM 26 Step 2.5:Try to Save Data © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. The type of this instance does not correspond to any type in the model
  • 27. #SitecoreSYM 27 Step 2.75: Register the Facets in xConnect Model Configuration © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. ... <schemas hint="list:AddModelConfiguration"> <schema name="customDataModel" type="Sitecore.XConnect.Client.Configuration.StaticModelConfiguration"> <param desc="modeltype">Recommender.Foundation.CollectionModel.CustomDataModel</param> </schema> </schemas> ...
  • 28. #SitecoreSYM 28 Step 2.99:Try to Save Data © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 'CustomDataModel, 1.0' does not match the remote version
  • 29. #SitecoreSYM 29 Step 3: Export the Model to Json © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. class Program { static void Main() { var json = XdbModelWriter.Serialize(CustomDataModel.Model); File.WriteAllText(CustomDataModel.Model.FullName + ".json", json); } }
  • 30. #SitecoreSYM 30 Step 3: Export the Model to Json © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. { ... "Types": { "Recommender.Foundation.CollectionModel.Facets.SocialPostInfo": { ... "Type": "Facet", "BaseType": "Sitecore.XConnect.Facet", "Properties": { "Text": { "Type": "String" }, "CreatedAt": { "Type": "DateTime" } } } }, "Facets": [ ... { "Target": "Interaction", "Name": "SocialPostInfo", "Type": "Recommender.Foundation.CollectionModel.Facets.SocialPostInfo" } ] }
  • 31. #SitecoreSYM 31 Sitecore Forms Submit Action © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners.
  • 32. #SitecoreSYM 32 Identify and Save the Contact © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. Tracker.Current.Session.IdentifyAs("twitter", twitterHandle); contactManager.SaveContactToCollectionDb(Tracker.Current.Contact);
  • 33. #SitecoreSYM 33 Load the Contact with Social Media Facets © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. ContactExpandOptions expandOptions = new ContactExpandOptions( FacetKeys.AttendeeProfile, FacetKeys.SocialImportInfo, PersonalInformation.DefaultFacetKey); IEntityReference<Contact> twitterContactReference = new IdentifiedContactReference("twitter", twitterHandle); Contact contact = client.Get(twitterContactReference, expandOptions);
  • 34. #SitecoreSYM 34 Initialize Custom Attendee Facet © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. AttendeeProfile attendeeProfile = contact.GetFacet<AttendeeProfile>() ?? new AttendeeProfile(); attendeeProfile.TwitterHandle = twitterHandle; attendeeProfile.TrackScores.Clear(); attendeeProfile.TopicScores.Clear(); client.SetFacet<AttendeeProfile>(contact, attendeeProfile);
  • 35. #SitecoreSYM 35 ImportTweets as Interactions © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. List<Status> results = TwitterHelper.GetUserTweets(context, twitterHandle); foreach (Status tweet in results) { var interaction = new Interaction(contact, InteractionInitiator.Contact); var postInfo = new SocialPostInfo { CreatedAt = tweet.CreatedAt, Text = tweet.FullText }; client.SetFacet<SocialPostInfo>(interaction, postInfo); client.AddInteraction(interaction); }
  • 36. #SitecoreSYM 36 ScoreAll Interactions Using Azure ML © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. public class AttendeeScorer { private readonly CognitiveServicesClient _services; public AttendeeScorer(CognitiveServicesClient services) { _services = services; } public async Task ScoreAttendee(IXdbContext client, Contact contact) { try { const int batchSize = 10; string text = string.Empty; int i = 0; List<SocialPostInfo> posts = contact.Interactions .Select(interaction => interaction.GetFacet<SocialPostInfo>()) .Where(p => p != null) .ToList(); int maxi = posts.Count - 1; AttendeeProfile profile = contact.GetFacet<AttendeeProfile>(); Dictionary<string, double> scores; foreach (SocialPostInfo post in posts) { text += " " + post.Text; if (++i % batchSize == 0 || i == maxi) { profile.PostsProcessed += i % batchSize == 0 ? batchSize : i % batchSize; scores = await _services.InvokeTracksService(text); foreach (string key in scores.Keys) { if (!profile.TrackScores.ContainsKey(key)) { profile.TrackScores[key] = scores[key]; } else { profile.TrackScores[key] += scores[key]; } } scores = await _services.InvokeTopicsService(text); foreach (string key in scores.Keys) { if (!profile.TopicScores.ContainsKey(key)) { profile.TopicScores[key] = scores[key]; } else { profile.TopicScores[key] += scores[key]; } } text = String.Empty; } } client.SetFacet(contact, profile); } catch (Exception ex) { Log.Error(ex.Message,ex, typeof(AttendeeScorer)); throw; } } } public class CognitiveServicesClient { public class StringTable { public string[] ColumnNames { get; set; } public string[,] Values { get; set; } } public class ServiceOutput { public string Type { get; set; } public ServiceOuputValue Value { get; set; } } public class ServiceOuputValue { public string[] ColumnNames { get; set; } public string[] ColumnTypes { get; set; } public string[][] Values { get; set; } } private static readonly Regex ClassRegex = new Regex(".+"(?<className>.+)".*"); public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeTracksService(string text) { ISitecoreContext context = SitecoreContextFactory.Default.GetSitecoreContext(); var endpoint = context.GetItem<CognitiveServicesEndpoint>("/sitecore/content/CognitiveServices/Tracks"); return await InvokeScoringService(text, endpoint); } public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeTopicsService(string text) { ISitecoreContext context = SitecoreContextFactory.Default.GetSitecoreContext(); var endpoint = context.GetItem<CognitiveServicesEndpoint>("/sitecore/content/CognitiveServices/Topics"); return await InvokeScoringService(text, endpoint); } public async System.Threading.Tasks.Task<Dictionary<string, double>> InvokeScoringService(string text, CognitiveServicesEndpoint endpoint) { using (var client = new HttpClient()) { var scoreRequest = new { Inputs = new Dictionary<string, StringTable>() { { "Unigrams Web Service Input", new StringTable() { ColumnNames = new[] {"text_column"}, Values = new[,] { { text } } } }, }, GlobalParameters = new Dictionary<string, string>() { } }; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", endpoint.ApiKey); client.BaseAddress = new Uri(endpoint.EndpointUrl.Url); HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest).ConfigureAwait(false); if (response.IsSuccessStatusCode) { string output = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, ServiceOutput>>>(output); string[] columnNames = result["Results"].First().Value.Value.ColumnNames; string[] values = result["Results"].First().Value.Value.Values[0]; Array.Resize(ref columnNames, columnNames.Length - 1); Array.Resize(ref values, values.Length - 1); return Enumerable.Range(0, columnNames.Length) .ToDictionary( i => ClassRegex.Match(columnNames[i]).Groups["className"].Value, i => Convert.ToDouble(values[i], CultureInfo.InvariantCulture)); } else { string responseContent = await response.Content.ReadAsStringAsync(); var ex = new Exception($"The request failed with status code: {response.StatusCode}. Full response: {responseContent}"); throw ex; } } } }
  • 37. #SitecoreSYM Experience Profile Demo © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 37
  • 38. #SitecoreSYM Let’s summarize… © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 38
  • 39. #SitecoreSYM 39 Create a labeled dataset Session titles + abstracts = training text Session tracks & topics = Labels Extract features using feature extraction algorithm Train models in Azure ML Deploy theTracks web service Repeat steps 1-4 using session topics as labels and deploy theTopics web service Step by Step – ML Solution © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 1 1 2 2 3 4 5
  • 40. #SitecoreSYM 40 FetchTwitter posts using LinqToTwitter Implement a custom xConnect model using contact and interaction facets Use the xConnect Collection service to populate contacts and save social media interactions Use theTracks andTopics Azure ML web services to batch-process social media interactions Save label scores to a custom contact facet Step by Step – Sitecore Solution: xConnect © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 2 3 4 5 1
  • 41. #SitecoreSYM 41 Create a web form to get user input using Experience Forms Import content using SPE by parsing JSON feed Implement a calendar rendering to show full agenda Use the highest-scoring track to generate initial agenda This leaves us with conflicts or gaps in agenda Resolve conflicts using topic scores (highest scoring topic wins) Fill gaps using the secondary track along with the highest-scoring topics Step by Step - Sitecore Solution - UI © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 1 1 2 3 4 2 3
  • 42. #SitecoreSYM What’s Next …? © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 42
  • 43. #SitecoreSYM 43 Scalable Data-Processing platform designed to integrate with xDB and Machine Learning workers SitecoreCortex Launched © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. Provides default integration with Microsoft’s ML Server BYOML (Bring your own ML)
  • 44. #SitecoreSYM 44 SitecoreCortex Processing Engine © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. STEP#1 DATA PREPARATION Cortex Processing Engine Task Agent Worker Data Source Task Executor Storage Model Task Agent Task Agent External Service MESSAGE BUS Event Microsoft Machine Learning Server
  • 45. #SitecoreSYM 45 Remember Supervised Learning? © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. STEP#1 DATA PREPARATION T R A I N I N G , T E X T, D O C U M E N T S , I M A G E S , E T C . L A B E L S M A C H I N E L E A R N I N G A LG O R I T H M FEATUREVECTORS P R E D I C AT E M O D E L
  • 46. #SitecoreSYM 46 With SitecoreCortex © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. BYOMLDATA PREPARATION Distributed Task WorkerData Source Model External Service
  • 47. #SitecoreSYM 47 SolutionWith Cortex Processing Engine © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. CONTINOUS SOCIAL SYNC SCORING LABELS USING ML INTERACTION FACETS CONTACT FACETS ML MODEL TRAINING Distributed Task WorkerData Source Model MODEL FOR ML Distributed Task Worker Data Source Model
  • 48. #SitecoreSYM © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 48 Q&A
  • 49. #SitecoreSYM FOR DISCUSSION PURPOSESONLY. Sitecore Confidential and Proprietary. © 2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. © 2001-2018 Sitecore Corporation A/S. All rights reserved. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand and product names are the property of their respective owners. 49