Live from New York, it's theCUBE, covering Inforum 2016, brought to you by Inforum. Now, here are your hosts, Dave Vellante and George Gilbert. Welcome back to New York City, everybody. This is theCUBE. We're here live at the Javits Center. Lee Martin is here. She's the Senior Director of Infor Dynamic Science Labs. Lee, thanks for coming on theCUBE. Thanks for having me. So we've heard a lot about this kind of science, cool name, dynamic science lab. Tell us about it. Sure, that's true. On main stage this morning, we were mentioned in several areas. So we are a team of data scientists, essentially. We're based in Cambridge, Massachusetts, right near MIT. We recruit heavily from the local schools, including MIT and Harvard. We have about 20 scientists in our team today. And they are typically PhDs or masters in operations research, applied math, statistics, those types of areas. Right, so we always talk about theCUBE, about what makes a data scientist, and you mentioned those areas. And also, just the ability to do, you know, multitask in those areas, and a love of data, and data wrangling, and. Yeah, yeah, so we do, we typically start our engagements with customers. We do that through a proof of concept phase. So if we're developing a new product, or we're trying to do a new science-based enhancement, we work with customers, and the first thing we want to do is bring in data. So we'll identify a particular problem in an industry that we're trying to solve. We'll speak to a variety of customers. We'll find a few good matches in there where there's a customer that is interested in working with us on a proof of concept and giving us their data. And then we'll work with them over a series of a few months to look at their data. And that's always the first step, right, is getting an understanding of their data. And for us because we work across all the industries at Infor, we're touching lots of different types of data. So the folks in our team don't necessarily come with those industry backgrounds, and some of it's learning as we go. So getting access to the data is a way for us to start understanding that industry. I remember when hearing a story in one of the big data conferences that we were doing, in the early days of the automobile, the industry elite were concerned that there wouldn't be enough, you know, what we now call chauffeurs to drive people around. Because, you know, the people, the way they were transported was somebody would, you know, in a horse and carriage, would be driving, right? So there weren't enough chauffeurs to go around. Then they applied that little story to data scientists. Like, there's not enough data scientists to go around, so it's a barrier to actually growth in that business. This notion of, you know, data science for the many, the citizen data scientists, all kinds of cliches. Where are we at with that? Is it really still a community of just high powered data scientists? Can we permeate that throughout organizations? It's a good question, because there is a lot of competition for data scientists out there right now. It's really hard to actually recruit folks to come into our team. And, you know, I've been, prior to coming to Infor, I worked at other analytics teams. So I've been around in the industry for a while now. And certainly when I first started, data science was sort of a little bit more of a, it felt like a niche field. But now it's everywhere, and it's very broad. So when you hear the terms data scientists and big data, it actually, people use it in a variety of different ways and in a very broad meaning. So for some people, it can mean BI related things. For us, we think of it more of a traditional, really data oriented using predictive analytics, using mathematical modeling, optimization forecast. So, you know, new methods and old methods. So forecasting has been around for a long time.  So it definitely has grown over time, and we really do see a big competition for it now in terms of recruiting, and a lot of customers asking for it. So it definitely has grown. I just want to follow up on Dave's question about the demand for data scientists. McKinsey did that study a few years ago, so we're going to be many hundreds of thousands, you know, short. And if you want, you know, to work with the data scientists, you're going to have to work with us or IBM or, you know, because they're all going to work for us. How far along are we in using machine learning to help the data scientists become more productive? I think machine learning is one of those things we've definitely made progress on. My sense is that it also has become a bit of a buzzword. And so it's, the term is thrown around a lot. There are some places where really machine learning is happening. In fact, we have a project that we have been working on for the past couple of months that ultimately down the line, we'll use machine learning. But you got to start somewhere, right? Especially with a customer who's trying to solve a very specific problem, you want to start with solving that problem and then branch out. And maybe machine learning isn't the first thing you bring to the table, because it tends to be slightly more advanced than some other techniques. So I do think it's being used. I do think, you know, it's a great tool to have in your tool belt. And I think it can bring a lot to the industry, but I also think it's, you know, there's a lot of use of the term and it's not always sort of what we think of it as in a more traditional sense. It feels like Infor is trying to be very deliberate about the dynamic science lab in that it's not just theoretical. You're trying to actually embed it into applications to have a productive outcome. I wonder, I mean, it seems blatantly obvious, but maybe it didn't just happen like that overnight, but can you talk about the intent and how you're actually purposefully driving innovation through your products, ultimately to your customer? Right, so when Duncan introduced dynamic science labs back in New Orleans, he was talking about the concept that Infor, with its customers, has access to such a large amount, such a large amount of data. So if you think of all the data and ERPs and the edge apps and other areas that we have, and our customers want to harness that. So we have really spent a lot of time understanding where issues exist with customers, so things that they want to really focus on, problems in their business, areas that they want to improve on, and really trying to start with those and then building out a solution from there. So this year we've gone live, we've gone GA on three solutions out of our team. Now we're a team of 20, we're now 20 folks. So having three solutions out there is very exciting for us, which is probably why we were mentioned a lot on main stage today. So we have an inventory intelligence for healthcare solution, we have a CRM sales logic solution, and we have pricing science for distribution. So we have other projects beyond that that we are working on, but those are three core solutions that we're really excited to have those available here today, but they're still in early stages. So in all cases we're sort of working with early adopters who are helping us to refine our approaches and our algorithms, but our goal is really to try to help solve those particular problems using science. So let's take one as an example, take the CRM sales logic. Everybody's familiar with CRM, something that resonates. How would you anticipate that DSL will differentiate in for and add value for customers in ways that plain vanilla CRM will? Well, so in the case of CRM, I think we are bringing, this is the first step, right? As in a lot of the solutions that we're starting with, let's get down some basics, and then let's move on to the more complicated things. So I was talking about machine learning before, in the case of CRM sales intelligence, we're starting with next likely purchase and lead scoring. Now that's not something that nobody else has, there are solutions out there that have that, but what we really want to do is bring our in for customers to advanced, to the sort of arena of advanced math and science so that eventually we do get ahead of others. But in some cases, we're really trying to sort of start with what are the things that customers want today, and that's something in the CRM space that they felt like they were missing, and so we're able to go in and add that functionality. So in the case of CRM, we're going to build on that, and we're going to get more advanced, but we have a good solid platform to start with now. A lot of it too is the data itself, the quality of the data, but it starts with the premise that basically you said, Duncan sort of had this premise when you guys launched this two years ago, of we have a ton of data. Are you finding that you've got the right data, and is the quality of that data in a form that is acceptable, or is that big part of the effort? Determining that and wrangling that, or maybe talking about that a little bit? Certainly managing data is a really, and cleaning data for the purposes that we need to use it for is really difficult. So we do spend a lot of time with customers, and oftentimes we'll go visit with customers who want to do a project, and their question isn't actually, well can we work with you on a project? Their question is what data do I need to start thinking about now for this project that I want to do in the future? So that's in particular when you think about IoT, that is a really hot question that we get from people, is what kind of things should I be gathering around IoT and thinking about in terms of IoT so that you have something to analyze down the road? I want to get back to this question of how much data, and is it an advantage? By way of relaying something I heard from one of the leading AI researchers at Stanford, where she became part of Toyota's autonomous driving program. I mean, she isn't going to work for them, but she's part of their funded institute. She said she thought they would be a leader because you just put cameras and sensors on Toyota cars, they'll have more data than just about anyone else. And so my question then, taking that to loss and for is will you have, let's say from the CRM data, will you have more data that's relevant for this next best offer than anyone else? Or understanding that more data is more important than better algorithms, how do you make that advantage yours? Yeah, so I am a fan of the idea of knowing where you're going before you start down the data science path. I mean, I think, I sort of think of it, there's two ways you can go. You can sort of say, here's all my data, go see if you can find something interesting. And the other thing is, here's this problem I'm trying to solve, analyze this data, and let's see if we can answer the question. So I think most of our work falls in the second camp of what's the business problem you're trying to solve, and do you have the data to support that? This other path is very valuable, but it's longer, it's much more expensive, it's more time intensive to do. But I think, I guess what I'm trying to ask is if you know you want to go after this next best offer or something equivalent, do you compare the data you are likely to be able to bring to bear on that modeling exercise? Do you compare that with competitors on the assumption that the more data, the better. That someone who has big data advantages even if they have inferior algorithms, they will probably have an advantage. It's a fair question. I do think that at the out start, at the start, you're probably, you have a smaller data set perhaps because you're trying to answer this very specific question, but I do think the advantage of Infor is that if you have a suite of Infor products and you see down the road that you're able to pull in that the data from those various products, then you have the ability to look across all of those products and start to get a bigger picture of things. Have more context. Exactly, so I think to start with, we're trying to solve specific problems and we often know or we find out during the proof of concept phase what the data is to solve that problem, but I do think down the road, we can take in data from all those different Infor applications and combine it and find interesting things that customers today can't do and especially if you're using solutions from lots of different vendors, it will be hard to get to the point where you can put all that data together. That's the advantage about Infor is if you have all these solutions, you have the opportunity to bring that data together. Get value out of the existing data. There's nothing to stop you in the future from bringing in external data sources Exactly. Leveraging all the API that are out there, but want to start with what you've got. Start with what we have, exactly. The data that our customers have today is the best and easiest thing to get at. So are you prioritizing which are the problems that you'll probably be most successful with based on the primary data and the context or do customers come to you and say these are the highest value problems? Yeah, it's a combination of us talking to customers and saying so inventory intelligence for healthcare, for example. The senior scientist who designed that solution, Don Rose, she and I spent six months when we first joined Infor two years ago and speaking with a whole bunch of loss in customers to understand all the challenges that they have, things they'd like to see or like to work on. And we came up with this whole list of things and we decided inventory optimization was a good place to start because we had some experience there from our retail, prior retail experience. And so we could bring some knowledge to that space even though neither of us were healthcare experts. Excellent, so okay, so I guess you guys do Infor every two years, right? I'm waiting for the annual, but that's cool. So it gives you enough time to sort of introduce things and then bake them out. So we're seeing a lot of progress from New Orleans. So okay, so at Infor 18, what should we be looking for? For DSL? Well, I know the announcement came out today about IoT and I think we are not the sole group thinking about IoT at Infor, but it's certainly an area that will be interesting for us down the line once we start working with customers who have some IoT data. I think RFID, we're talking to customers about RFID projects and similar to IoT, how can you use our RFID information? We talked about I think the network aspect of things. So we are in fact working with GT Nexus right now. It was sort of a subtlety of the presentation today on main stage, but we are doing a proof of concept with them around ETAs. So being better able to forecast when an item will leave one continent and arrive at the other continent. So it's a first step of our working relationship with them, but we are going to be working with them on a roadmap to move beyond that. And so I think we'll see even more advanced projects going on around network and GT Nexus. And are there any natural industry affinities that you're finding? So one of the great things about our team is the fact that we work across industries, right? So there's a lot of science going on at Infor, not just in dynamic science labs. We happen to get a lot of mention on main stage, but there's a lot of science going on outside of just our team. And there is the ability to take one concept and bring it to another area. So whether we can take inventory optimization for healthcare and modify that to do spare parts optimization in manufacturing or distribution, we definitely see those kinds of opportunities down the road. Dave, you better take one more because then- Okay, we're out of time. So if you want to get one more in, now's your chance. All right, we got to wrap. Last thoughts, Lee, on Inforum 16. Some of the things that customers are talking about. Because what's the reaction been to dynamic science labs? Well, I was really pleased to see that we had a session immediately after the main stage this morning and we had a full house. We had some people standing in the background. So I think it's really exciting, like I said, to have these three solutions out there, have our team be mentioned on main stage, being able to really do some good work with our customers. We have several customers here presenting this week about the work we've done with them. So that's great to see and we're really excited about the next steps. Great, all right, well thanks, Lee, for coming on theCUBE. All right, thanks for having me. We appreciate it. All right, keep it right there. Everybody will be back with our next guest right after this brief break.


So, I'm an associate at Airbnb Economics and I'm working as an economist in competition at Lowe. In terms of economics, I use a lot the microeconomics courses and the structure organization. So all the economics theory and all the economic background are required here at TSE. So I've done a master in economics at Lowe and I use a lot of my low skills in terms of communication and writing skills. I think the name of TSE definitely helps. Airbnb has a lot at TSE. We are having a lot of interviews today and also yesterday. So yeah, the economics at Lowe Master is definitely good to work at Airbnb because you have all the economic background to work in competition and also all the consistency, shake and work on writing skills you are required during your low lectures. I would say feel free to apply always because you can think you will not be able to do it while the recruiter actually thinks you are definitely able to do it, especially here at TSE. So at any point feel free to apply.


Under the visionary mandate of the Ministry of Agriculture to achieve food and nutrition security, a farmer-filled school program has been launched with an aim of enhancing the productivity and efficiency of farmers in the api culture sector. The eight-week farmer-filled school program empowers farmers with practical knowledge and skills, addressing production deficiencies and promoting sustainable growth through theory and practical exercises, covering hive management, beekeeping-based practices, disease control, honey harvesting, quality standards, and marketing strategies. Recognizing the pivotal role of standards in ensuring quality and competitiveness, head of standard development at the St. Lucia Bureau of Standards, Andre Charles, emphasized the significance of the draft apiculture code of practice and honey specification in promoting standardized practices within the industry. These things are very important to the beekeepers and apiaries on the whole because these are used for trade. It's really the standards, our way of getting a set product, a product of a particular quality and the management of the bees in a particular way and again achieving a particular quality. So it's very important that our standards are utilized and again I'll mention that our standards are voluntary, the code of practice and the specifications are voluntary but again these are guidance documents to provide the better or best outcomes in the beekeeping industry. As the agriculture ministry continues to prioritize the growth of the agriculture sector, apiculture coordinator attached to the Veterinary and Livestock Services Division, Charis Auguste Hyacinth explained that the farmer-filled school program aims to provide farmers with the necessary tools and techniques to excel in their apiculture practices. The Ministry of Agriculture has noticed insufficient production in honey. So we wanted to target specifically for honey production to increase productivity and efficiency of farmers. So with the mandate given by the prime minister and the funding, this is one of the engagements we have for the year. It is an eight-week training program where you have three weeks theory and the rest of it will be heavy practical to get the productivity and then the farmers will be going on to a mentorship program where you will have a mentor alongside you for at least three years to help you increase productivity. By impacting crucial knowledge and practical skills, the farmer-filled school program championed by the Ministry of Agriculture is poised to empower apiculture farmers, propelling them towards sustainable growth in the agricultural landscape. From the communications unit of the Ministry of Agriculture, I am Anicia Antoine reporting.


What's going on everybody? I'm Joe for Jaspy's Case at Breaks.com coming at you with a half case from a fresh case, 2022 Bowman Draft Baseball Sapphire edition. Love this stuff. Random team break number 11. Now we've got three different dice rolls happening here. First of all, we're going to do the early bird giveaway. So if you're one of the first 16 spots sold, you've got a chance at an early bird spot. Second dice roll will give away an additional three spots. That's for everybody. Early birds included. Randomize those names. Top three will get extra spots. Then the third and final dice roll will be finally for the names and teams. Alright, good luck everybody. So let's do the early birds first. Highlighted in purple. There's the first 16. That's sort of a sapphire Papadapolis parallel color. That's what I was trying to go for. And that's for the early bird. That's our first dice roll. Let's roll it and randomize it. Six and a four. Ten times. Name on top after ten gets an extra spot. Good luck. One, two, three, four, five, six, seven, eight, nine, and tenth and final time. After ten, no doubt about it. Jake, with the top three spots you get an extra spot. After ten, thanks for being an early bird. Now everybody gets a shot at another three spots, including the early birds and then the rest who are in the non-early birds. Three extra spots. Second dice roll. Let's roll it and randomize it. Three and a one. Four times. Top three after four. One, two, three, and a one. Fourth and final time. So from four on down, sad times. But don't worry, you're still in the break. But top three, you got extra spots. That's Jake. Jake and Joe. So good run there, Jake and Joe, you're in as well. So we'll put another rooftop next to your name. That's just for the extra spots that we're giving away so we can differentiate them from your main spots, your full price spots.  So now we've got 30 spots on each list. Let's roll it. And third and final dice roll, six and a five, eleven times. One, two, three, four, five, six, seven, eight, nine, ten, and eleventh and final time. After eleven, we got Jake down to Nicholas. Six and a five, eleven times for the baseball teams. One, two, three, four, five, six, seven, eight, nine, ten and eleventh and final time. We got my Dodgers up top and the Cubbies in the 30 spot after eleven. Here's how it shakes out for you ladies and gentlemen. Shake, shake, shake, shake, shake, shake, shake. Jake with the Dodgers, Dave, David with the Tigers, Jackie last spot mojo Marlins, Bjorn with the Brew Crew, Richard with the Mets, Nicholas with the Rays, Jake with your early bird spot, Reds. They also have the Guardians and the Rangers, Jackie with the Royals, Jake with the Nationals and Braves, Joe with the White Sox, Jackie with the A's and Diamondbacks. Richard with the Mariners, Jake with the extra spot you won, Yankees. Richard with the Cardinals, David M. Phillies and Orioles, Jake with the Rockies and with the other extra spot, Angels. Joe with the Astros, Jake with the Red Sox, Joe with your extra spot, Pittsburgh Pirates. Jake with the Giants, Drew with the Padres, Jimmy with the Twins, Jackie with the Blue Jays and Nicholas with the Chicago Cubs. So let's alphabetize by team and we're going to pause the video when we come back. We're going to see if there's any trades and then we'll have the break. Stick around, BRB. Hi, welcome back everybody. No deals are done, so the list remains the same. So thanks everybody for spending a bit of your Monday night with me. I appreciate you. I appreciate everybody filling up this break. Second half in the store. Get your teams now before someone else does or get your spots, your early bird spots now before someone else does. So random team break. All right, so let's pop this baby open and let's see. It's a 10 box case. Let's see which five we're going to do here. All right, we've got five boxes back there and five boxes over here. We kind of see everything on the top camera as well. We'll go one, two, three on the dice roll for that back five and for the front five right over here. One, two, three for the back four, five, six for the front three, the back five. This five we will do next time. So this will be this is break currently break 11. All right, so this will be for break 12 or break IZ break is marked myself with a sharpie. But it's not in a spot where I'm going to touch a card. So I'm good. All right. Good luck, ladies and gentlemen. See what we got in here. Thanks everybody for the fill. I appreciate it. This is looking like, yeah, we're about, it's looking like this is going to be our last break of the night. I don't think anything else. I don't see any other orders coming in here. So yeah, it looks looking like the last thing of the night. But how are you? I get those early bird spots as quickly as possible. Give yourself a shot at an extra spot. And I'll be back tomorrow, three o'clock Pacific, six o'clock Eastern. We'll do this. We'll do this silliness all over again. All right, got the parallel pop and early. It's Leonardo Balcazar seven out of 50. So the autographs, few and far between in this Bowman draft sapphire, we're chasing parallels. And this is for the red legs. That's going to be for Jake with his early bird spot. And of course, all card ship and a Jackson holiday Bowman first sapphire edition. Nice. Holiday. That's going to be for David M and the O's. Number one overall pick. Matt's kid and behind blaze Jordan is a Bowman first, Jacob Marcy 53 out of 99 friars drew with the Padres. Santiago, some orange down there maybe. I got a little orange down there. Oh, and some yellow right here. Do we have three parallels in this? I think there's some color down there. It's only supposed to be two per box. Here's an Alexis Hernandez 30 out of 99 for the cubbies. That's going to be for Nicholas. And behind George Valera is an orange Marcelo Meyer 18 out of 25. That's for Boston. It's going to be for Jake Smith. That's card shark. There's a tomorrow Johnson Bowman first. It's one of their one of the Pirates top prospects here. Joe Simone with that one, your fourth overall pick. Yeah, there's another parallel down there. We've got three. There's an Elijah Green spilling this Ivan Melendez card. There's the Elijah Green. That's going to be for Jake and the Nationals. It's your fifth overall pick. And we got the extra parallel. Extra parallel looks like it's going to be for Detroit. Jackson Job 35 out of 99. David with the Tigers. Tiger uppercut. Xbox. What is that? Am I psyching myself out or is that a train whistle color right there? Is that another train whistle color right there? What is happening here? All right. Here's a Yasser Mercedes. Not a Bowman first, but still nice. All right. Behind Ryan Ritter is another card here. Behind Jonathan Mahia is a four out of five. Jackson Job. Tigers. David M with the Tiger uppercut. Nice with your 2021 third overall pick. David. All aboard the Big Hit Express. Is that what I think it is, Richard? Or am I just psyching myself out? It is. It's a Papadashiri. Papadopoulos. Papagianis. It's a Bowman first. It's Cutter Coffee. One of one first for the Boston Red Sox. Jake, Jake, Jake, Jake, Jake. Jake with the Cutter Coffee. A second round pick. Top 100 prospect number 65. Corner Baseball America with one-time leg kick and fast hands. Drives barrel through the zone. I like to hear all this. Adjusts well to speed and spin. Generates high exit VELOS. Bouncy athlete with excellent arm. California Kid. Bakersfield. There you go. 6-2-190 shortstop. Could be a big deal. There you go. Jake and the Red Sox. All aboard the Big Hit Express. That's awesome. Looks like he skipped college. That's his high school betting record right there. Yeah, the high schoolers will take a little bit longer to develop, but yeah. Yeah, maybe four or five years. Congrats, yeah. Stick it in a shoebox and check in on that in like five years. Alright, hey. Jake, congrats. Congrats, congrats. I'm still alive Rex. We're only two minutes past the hour. The gang filled the break. They dug deep. I'm digging deep. We're staying a little tiny bit later. Unusual. Always got to do that. Something fun and quick sells out like this. Two train whistles in that box. Nice. Cart shark saying that Cutter Coffee is number 19 prospect, just system prospect currently. That's pretty good. Alright, there's Walter Ford and Jordan Walker, 31 out of 50. Green for Richard and the Redbirds. A green, red bird. They're 21st overall pick back in 2020 and just one pair. I guess that's what we get, right? We had three in one box and then two train whistle hits in the other one than the Hobby Gods balancing things out with just one in that one. Yeah, that's kind of an, I think he's swinging now. That might be a slightly older video, but yeah, Miguel Vargas. I got, I think messed up his pinky a little bit, but they were still, but they still had him just so he can track pitches, you know, spring trainings at times to do that sort of stuff. So they had him track pitches and yet he was still able to, to get, to generate like half of his like 12 ABs or whatever were like walks, which was kind of crazy. But yeah, I don't think when he finally sees everyday major league pitching, I don't think he's going to get that kind of on base percentage. Yendri Rojas reveals a Jimmy Crooks 45 out of 99. I'm not a crooks. That's going to go to Richard and the Cardinals. Like the little leg kick he's, he's got going on there. We've got another yellow parallel on the bottom. Let's see if we can find anything in the middle here. Right. And behind Anthony Hall, behind Anthony Hall is Jose Salas 74 out of 99. That's Jackie and the Marlins last spot mojo. Is it your birthday? Is that what you were saying earlier? So there you go. Little something for the B day last spot mojo gets a parallel. There you go gang and Jackson Cox at the very end. There you go. Ladies and gentlemen, that was 2022 Bowman draft baseball sapphire edition, random team break number 11, second half in the store. Jackie happy birthday and thanks everyone for getting in. Thanks for watching. Thanks for breaking with us. I'll see you next time for the next one.


Once you have exported your data, you may have to edit it. The best way to do this is in a spreadsheet. In this video, I am using LibreOffice, but the same techniques apply for Microsoft Excel. First, open the comma-separated value file that you exported from the survey software. When you open it, you will see a preview of the data, as best as the spreadsheet can figure it out. Make sure that only comma is selected as a separator. And then click OK. The first five columns are internal information from LIME Survey. To get rid of them, put your mouse in the column header labeled A, and then drag across to column E. With the mouse still in the column header letters, right-click and select Delete Columns. The next task is to combine feet and inches into total height. Move your mouse to column header letter C, then right-click and Insert Columns. In cell C1, type the new header for this column, which is height. And as long as you are in the neighborhood, change cells D1 and E1 to feet and inches. Now calculate the first height by clicking in cell C2 and entering this formula, equals 12 times D2 plus E2. Press Enter and it calculates it. You don't want to have to type that formula over and over again for the remaining rows. Click in cell C2 again. Put the cursor in the little square at the lower right-hand corner of the cell. The cursor will turn into a thin plus sign when you're in the right place. Now drag down the column and release the mouse. And presto. Everything is calculated for you. It's always a good idea to double check your data. Look at row 55. This guy is six foot 72 inches tall. Because we can't tell what he really meant, the best choice is to delete that row. Select the row by clicking its row number, then right-click and delete rows. Now you can save the file. I strongly suggest that you use Save As from the file menu. This lets you name the file when you save it so that you don't lose your original data. Name the file as results.csv. And notice that LibreOffice has changed the file type for you. Microsoft Excel might not do that automatically, so make sure that it reads csv, or it won't be saved in the proper format. When you click Save, LibreOffice will ask you if you want to save in the current format csv or not. Keep the current format. Now you have a csv file that you can import into SOFA.


In this video, we're going to continue on where we left off after merging our two state energy ranking data sets, the natural gas and the total energy. And we're going to solve this issue of these repeated rows for different states through logical statements and subsetting. So let's get to it. So the issue that we're having here is that we've got 18 states who have their full names here that don't have any data because they didn't produce natural gas. And they weren't in the total energy data set. And we've got their two letter abbreviations coming from the total energy data set because they have the total energy produced data. So what we want to do is get rid of basically all these rows that have the full names. You don't have any data attached to them. How do we do this? Well, we can do this using logical statements and filtering or subsetting our data frame. So let's make a new data frame, DF2. We'll start with DF. This is the output of the outer merge done above in the previous video. And we're going to make use of our PD not null function here. Because what we want to do is basically want to keep all the rows that either have natural gas data. So do not have NAN in the natural gas column, or do not have NAN in the total energy column, or do not have NAN in either column. In other words, we want to get rid of those rows that have NAN in both columns. So we will reference our natural gas column here, calling the data frame after the merge. So DF, square brackets, natural gas. And let's just see how this not null function works on the natural gas column alone. So let's go ahead and run this. We'll print DF2. We have our columns there, but we only have 33 states represented here. So these are our 33 states that produce natural gas from the natural gas data set. We want to also include those states that had some total energy production, even though they didn't have natural gas. So how do we do this? We say we want to keep those rows who have values in natural gas column, or those rows that have values or not null in the total energy column. So let's go ahead and run this. So we run this. Again, we sell the same columns, we scroll down, and we now have all 50 states plus DC. I know this goes to 68, but that's just because the index, the indices here have been broken. We've gotten rid of some of those rows in the middle that had some indices. If we want to reset that, we can just say DF2.ResetIndex, and we'll get our sequential numbering back. So we see now that these indices go down to 50. They start at zero, go down to 50, so there's 51. Again, 50 states plus DC. Furthermore, you'll note that we have our old indices as the second column here. We might want to get rid of that. We also might want to get rid of some other things here. For instance, you know, these rankings don't really need them. We're just interested in these quantities. So if we want to filter by columns, we can, we have some handy tools that are disposable here. So we can access values using in particular this look function for getting multiple columns or rows at the same time. So for example, if we want to select one or more than one column, let's make a new data frame, DF3 now, from our DF2.look, and we'll use colon to say all rows. So we're going to get all rows, and then separated by a comma here, we'll put in whatever columns we want. If we only want to keep, say for example, state and total energy and natural gas, we can enter them as a list. So we can close them in square brackets, separate these quoted values, text values and commas here, DF3. Let's see what we get. Here's our data frame, state, total energy, natural gas. Note that these columns are now in the order that I specified. So before we had natural gas coming before energy, and I've switched that around just by the order that I've stated their names in here. And we've effectively gotten rid of those rankings and that old index here. So now we have a much cleaner data set. If we want to select one or more, we can, for example, with this look function select one or more rows, conversely, we're not going to make use of this and later on so we'll just say for example cases, the DF3.look, we want to say for example, the first five rows, give you something like that. So we need to say what columns we want. If we want to say all columns, you could do that. The colon cases. And there we go, we have the first five rows. No, you can mix this up, you can do a combination of selecting different rows and different columns too if we wanted to, but I think you get the idea here. And then just last but not least, like to exemplify how to get, or easily display, I should say, the top energy producers here. So say for example, one of the top five total energy producers. We've got this handy function and largest we say, and largest five for the first five, and then whatever variable we want the largest values from. And so here we see that the largest total energy producers are in number one, Texas, number two, Pennsylvania, number three, Wyoming, Oklahoma and then West Virginia on down. So those are some handy tools to get started with processing data, changing data types. And in this video, sub setting the data into a clean data product. Thank you.


Hello and welcome to the session. In this session we will discuss a question which says that if the length of the tangent from the point fg to the circle x square plus y square is equal to 6, d twice the length of the tangent from the same point to the circle x square plus y square plus 3x plus 3y is equal to 0, then prove that f square plus g square plus 4f plus 4g plus 2 is equal to 0. Now before starting the solution of this question we should know a result and that is the length of the tangent drawn from the point x1, y1 to the circle whose equation is x square plus y square plus 2gx plus 2y plus c is equal to 0 is given by square root of x1 square plus y1 square plus 2gx1 plus 2xy1 plus c. Now this result will work out as a key idea for solving out this question. And now we will start with the solution. First of all we will find the length of the tangent from the point fg to the circle. Now given the equation of circle as x square plus y square is equal to 6 which implies x square plus y square minus 6 is equal to 0. Now we can find the length of the tangent from a point to a circle by using this formula. Now let us name it as 1. So the length of the tangent from the point fg to the circle whose equation is given as 1 is given by square root of f square plus g square minus 6. Here in this equation we have substituted the value of x as f and the value of y as g. And now in the second case we have to find the length of the tangent from this point which is the same point to this circle. Also it is given the equation of another circle is square plus y square plus 3x plus 3y is equal to 0. Now let us name it as perpendicular tangent from the point fg to the circle whose equation is given as equation number 2 is given by square root of 9. Now here substitute the value of x as f and the value of y as g. So it will be f square plus g square plus 3f. Now according to the condition which is given in the equation the length of the tangent from this point to this circle is twice the length of the tangent from this point again to the second circle. According to the question we have square root of f square plus g square minus 6 is equal to 2 into square root of f square plus g square plus 3f plus 3g. Which means the length of the tangent from the point fg to the first circle is equal to twice the length of the tangent from the point fg to the second circle. Now squaring both sides plus g square minus 6 is equal to 4 into f square plus g square plus 3f plus 3g the whole. Which implies f square plus g square minus 6 is equal to 4f square plus 4g square plus 12f plus 12g. On solving this implies 3f square plus 3g square plus 12f plus 12g plus 6 is equal to 0. This implies taking 3 common written brackets it will be f square plus g square plus 4f plus 4g plus 2 is equal to 0. Further this implies g square plus 4f 4g plus 2 is equal to 0. So in the question we have to prove this condition and it's proved. So this is the solution of the given question and that's all for the session. Hope you all have enjoyed the session.


Welcome back to another my microsoft sound bites and today we're going to be talking about get response And so this will allow my craft to have a little more of a dialogue with the with your users and kind of make some decisions So it can pose a question and then make a response based on the answer that it receives And so we're gonna be focusing on that and validation of the user responses today So with that, I think we'll jump right in we went ahead and pre-created some of these files And so just so that everybody has an idea of what's in them I'm just going to cap them out to the screen just to kind of save us some time So if you're really interested in what's happening here you'll be able to pause the video and Take a look for yourself. The other files haven't changed the request and the intent, but I'll cap them out there just for thoroughness and With that, I think we're going to hop on over into the init file So this this probably looks pretty familiar as the you know It's the thing that we've been looking at for a few videos now some of those minor changes that stratus mentioned But today we're gonna add that get a response in because we want to start asking the user questions So you can see here when the user, you know, the user's asked a question or you know Triggered an intent to ask for an ice cream. We welcome them to the store and now we're curious about whether they want any toppings so what goes in here is a Dialogue file just like up in the welcome up here So we're going to go ahead and put in our dialogue file and the dialogue file I believe we're going to be doing the toppings request And you don't need to have the dot dialogue What else does get response do or is this all we want it to do right now? Well, just like speak dialogue you can add in a data object if you have some dynamic data that you want to Inject into that dialogue, but for this one We're just going to leave it as the toppings request one of the big differences between speak dialogue and get response Is that get response will return the utterance? So this is going to trigger the microphone that it'll read Topic, you know, whatever's in toppings request dialogue We'll trigger the microphone and prompt the user to respond to that and it's going to return Whatever whatever the user says as the return value from that method so we can assign that to a variable Yeah, perfect Maybe let's log that out and log out the topping response just so we can we can see that something has come back perfect So remind me again. How do we only see the output from our skill? Yeah, so we're going to use the colon find command And then so that we can see not just the logs from our from our skill class, but also Anything related to our skill we might do c e cream. So it's because it's case sensitive You know some things ice cream with capital i something's ice cream with the lower case i this should capture everything If we reload the skill we should see that reload great perfect There's our info log our get response is working. It's it's logged the result But currently we're we're still telling the person that they're just getting a chocolate ice cream. So we can probably extend that final speak dialogue And um, and we'll add in the the toppings into our final speak dialogue And so in this case We have already um pre-prepared the file. So as I showed right at the beginning of the video So we're not going to worry about that If we remember from our previous lessons if you use the control key in the left and right it will circle through your history So to save you some typing There you go. Um as you saw sometimes uh because the microsoft when you're doing the get response It's triggering The microphone listener. So if you if you type a response before the microphone listener is open Then it's not going to hit properly. Um, so you kind of have to wait and pretend like you're a speaking user For the purpose of this video. We've actually turned off microsoft's uh Audible feedback in order to just not clutter up the audio feed here So we're taking a guess you have to hit it just right so that you've waited enough time for the trigger But not too long that it times out great. We've got to get response We're getting the response from the you know the response utterance from the user And then we're able to provide that as part of our final speak dialogue But at the moment we could say anything and You know the the ice cream shop is just going to give us a a flavored ice cream with whatever type of topping we want Whether we have it or not, whether it's the legitimate topping or not So, you know, we could ask for a chocolate ice cream with puppies on top and uh our skill would at the moment Provide that to us, which is probably not what we want. But the Get response method also has the option to validate the response, you know using using a function Let's add a validator in So I imagine the first thing we need to do is actually decide on what it is that we will have in stock for something to Validate against so why don't why don't we uh take that offline and we'll come back and have a nice list for people Of the toppings that we're going to provide to the store So there we go, uh, we've decided on only a few Toppings because we're a very poor store and kovat doesn't allow us to restock very quickly So this is all we have to offer today And so now we we need to be able to check, you know, what comes back from the response Against this list. So what we're going to do is we're going to add in a function that's going to do that for us Is our toppings validator that we wrote earlier. We've done a few Example versions here. You can see the first line's commented out. It's kind of the simplest possible Version of a validator that you could do you could have in this case So the validator needs to return a boolean a true or false of whether the response is valid or not And that first commented outline Says does that response is it is it in self dot toppings at all? So if the user replies Nuts or gummy bears or chocolate chips or anything in that list, then it's going to say yes true And return true and it'll be a valid response if it's not in that list or if the if the person Wants to have two toppings so they say I want to have sprinkles and nuts then It's going to return false because the entire response is not in self dot toppings So it's a it's a very limited version So what we ended up with was moving to a slightly more detailed version Where we first assign an empty list so that we we've got something getting ready We then look through all of the toppings and check if that topping Exists in the response if the user responds with yeah, sure I would like whipped cream and gummy bears Then it's going to go through the list and say does sprinkles exist in the response? No, does whipped cream exist in the response? Yes I'm going to append that to the requested toppings list and then continue on sort of go through all the toppings Add them all to the list and then we return that requested toppings list What you'll also notice is that this is not strictly a boolean But an empty list will evaluate to false Whereas a populated list will evaluate true So it still kind of meets that need to to return true or false And then yeah, the final the final commented learn Is is an alternative way of doing that that same thing You know, they're both completely valid Whether you whether you wanted to use a for loop if you find that more readable Or if you want to use a list comprehension And have that much tighter either way is is really fine The other thing that we would add to this if we were making a real skill is a Doc string for our validator to describe exactly what it's doing But great, we now have a we now have a validator That's going to check a response and tell us Whether it's valid or not and we can use that in our get response method By adding another argument of validator So we're going to add that to our get response method as an argument of validator equals And it's equal to the name of the function that is going to validate our response. All right We now have our validator on in our get response method. So if the user responds With whatever whatever they respond with it's going to get past to that validator function And tell us whether it's a valid response or not But if it's not a valid response We probably want to provide the user with a bit more information Rather than just bugging them with the exact same question Chances are that, you know, we can let them know that we don't have that particular topping in stock Or you know, we might even provide them a list of available toppings or any number of things But we can do that with the on fail argument And so that we can pass again another dialogue file and that will be read If the response provided Was not valid. So if the if the validator returned false it would read The topping missing dialogue and give the user another chance to respond to the question And then finally we can we can specify the number of times The user gets to respond to this. So if they if they continue getting it wrong We'll try in this case two times before we just fail and say No, that that didn't work. The user's not getting a valid response back You can set that to any number if you set it to negative one It will retry indefinitely. Obviously You want to be pretty Pretty cautious with that, but uh, but it is a it's it's possible Cool. So let's let's give this a try So we're going to try and trigger our Validator function that we just wrote. So we're going to have to trigger this in The same way that we used to by first triggering the intent It's going to ask for toppings and we're going to say French fries And we can see that it did actually have french fries. So I'm going to add it in and say Nuts which we know is in our list and so you can see that we actually Triggered our failure events and then we passed after multiple retries and there's the output So there's a few other things that we can do to you know, make this You know just that a little bit better like at the moment We will just take whatever the topping response is and feed that into our final speak dialogue And we probably actually want to Get the list of requested toppings that we've validated and pass that in instead So we might quickly cut and paste that Here we have, you know an extended version of of our Intent handler So we first check if the topping response is not none So that there is no response to our question then we just provide the ice cream without toppings But if they do respond then we're going to reuse that validator function to extract out You know the various toppings that they requested so this way they can request more than one thing at a time To turn that list into more of a human speakable String, you know rather than a list of a list of strings. We want a single string Spoken to the user for that we're using join list So we import that from microsoft.util.format And then we pass it a list of strings and a joining word So in this case and and and that will be Translated into the user's own language But what this does is if the user asks for whipped cream nuts and gummy bears it's going to take that list of strings and Add commas in between them and then put the joining word before the final one So that will turn from a list of of three strings one two three two one comma two And three which is you know how how it's normally spoken and then we we can pass that Formatted string into our dialogue file The other thing that we want to note here is that we now are using both the width or without toppings So that when the shopkeeper returns with your ice cream, he doesn't say With none. So for example In the case that that the list is none and we ran this dialogue It'll say here's your chocolate ice cream with none toppings So we have two different dialogues here to handle Whether or not toppings are selected Yep, and this is this is a nicer way to do it than to try and add in words like toppings Into the one dialogue file, you know, sometimes you see skills where They'll join the list and then add the word toppings on the end Which works if you're only ever going to use this skill in English But if you open to people all around the world using your skill Then it's it's much nicer to use the the different dialogue files so that they can be translated effectively All right, let's let's do one last run. We'll show The our new extended version of the skill working. So we'll ask for some ice cream And we'll ask for some toppings of So we've eroded out once second time We asked for whipped cream and sprinkles, please And then it's responded with just the sprinkles and whipped cream So it's extracted those two toppings correctly Provided it back to us as the answer. Perfect Shall we test the fail? Yeah, let's let's test the complete fail the customer has sat on their phone while they're ordering and they didn't hear your question and they're not responding Great as expected I didn't respond to the question and we got a chocolate ice cream with no toppings back So that's all working as expected Perfect. So is there anything else that we wanted to cover here in our skill or are we pretty happy with the results? You know, I think, you know, there's so many ways that this could be improved, you know, if this really was an ice cream shop You know, there's there's edge cases that we that we wouldn't be catching This gives a pretty good overview of the basic use of of get response Well, more than the basic use I think, you know, you can use it just with the with the dialogue file But um, the validator function, you know, it can be a really powerful thing if you if you use it correctly Yeah, sounds good. I look forward to adding this into my next skill All right, that was get response. So, uh, you know, using this we can we can not just Take an intense and respond to the user using dialogue We can also ask the ask the user questions and start to get into a bit of a conversation Then if we start to get a bit more advanced, we can use a validator function to check that response and Make sure that the user's giving something that we expect and if it's not then we can provide a bit more context a bit more Direction to the user about how they might be able to to get to the next stage of our skill You know, you can obviously just take the response and then Process it after that happens and and then, you know, do things based on that But this allows a very quick way of staying in that conversational mode And getting to to a valid response that we can use I think, you know, there's there's a few other methods that we have available in On the micro skill class that utilize get response. So they're they're under the hood they get response But they just have some some magic around them to Make things a little bit easier. We'll have a look at those in in the next video But for now, uh, that's everything you need to Ask the user a question and and have microff respond Excellent, then I look forward until the next time Until next time. Ciao