Information Technology Developer
Veritas Technologies LLCSoftware Engineer
AcuvateSoftware Engineer - Trainee
AcuvateStudent Council
SVKM's Narsee Monjee Institute of Management Studies (NMIMS)Volunteer
TEDxNMIMS || 2018-2020
Python

C#

UiPath
Azure DevOps Server
Azure

Microsoft Bot Framework

Microsoft SQL Server

Microsoft Power Platform

Bitbucket

Sourcetree

Elasticsearch

LangChain
.NET Core

MongoDB

Postman

Microsoft Azure

ElasticSearch
.jpg)
Grafana

Power BI

Python Automation

Power Automate

Azure Functions

BitBucket

Git

CI/CD Pipelines
I have completed my B.Tech in 2019 as a mechatronics engineer. After that, I completed my post-graduation diploma in P in industrial robotics, where we studied about robotics. Later, I joined the company AcuVet, where we worked as a chatbot developer, and we developed so many chatbots there. And we have rolled out 15 plus chatbots on WhatsApp, plus there are 3223 Instagram and WhatsApp accounts. Then, we developed Teams channel chatbots where we integrated them. And we are also using, like, Microsoft Power Virtual Agents. After that, we used the Microsoft Bot Framework SDK in dot net. Then we created a portal from scratch using Blazor applications so that we can develop a flow. From that portal, you can train your chatbot and analyze it later. Later, I joined the Veritas company, where we also developed a chatbot. We delivered 5 plus chatbots on Teams channels. Coming to my background, I like to ride bicycles, and I always ride in the morning. I also go to the gym to have a fit body. That's it. Thank you.
What techniques have you used to troubleshoot a chatbot that is not accurately recognizing user intents. Okay. So first of all, I'm using NLP to train the intent entities. And also, currently, in my current project, we use the language service from Azure. Earlier, we used to train it on LUIS provided by the language service. So what we do is we train some utterances of the users, and according to that, we train it. And then we train the intent with particular responses, then we test it in the same portal on the Azure platform whether we are getting accurate results or not. If we are not getting accurate results, then we retrain it. We try to train the intent with the proper keywords so that it can recognize whatever we want to know later. What we do is, after that, if it is not recognized, we also have a framework, a feedback mechanism where the user will provide the intent and what didn't recognize. So we are providing feedback to the user once the conversion is done whether the bot has resolved or not. If he says that it is not resolved and he was looking for something else, then it's like an auto-train mechanism so that a transcript will be stored and then that transcript will return to that intent with that particular user utterances. So that next time when the user will come with the same utterance, it will provide him accurate results using that intent. This is done for Microsoft. We have developed our own NLP also. So in that, we used to play with stuff first where we can use the scores accurately, and it will help us. So if the intent is not recognized, then we will take it. In the feedback, we will get that. And once we get that, we can provide some stops first and we can analyze it. And with proper fine-tuning, we can get that transfer log to recognize for that particular intent.
In terms of NLP, we would handle the challenge of homonyms in user input by employing several techniques while developing a chatbot. One of the approaches is to train the model on multiple utterances of similar words so that its probability is increased. This way, when a homonym is encountered, the model is more likely to pick up the correct intent. Another strategy is to use a non-intent block for subwords or words that are not intended to be recognized as homonyms. This way, if a homonym is encountered, it will be directed to the non-block and the particular intent will not get picked up, which is the desired outcome. To further enhance homonym recognition, we can create a list of multiple utterances for each intent and provide homonyms as entities in a list format. This way, the model can learn to recognize homonyms and fulfill the entities for that particular user. Additionally, we can use NLP search models to recognize homonyms and spelling mistakes, and then fulfill the entities for that particular user so that in the next utterances, it will not ask the users. We can also provide homonyms in the intents and entities format so that they can also get recognized by the model. This way, we can create a comprehensive list of homonyms and ensure that the model is able to recognize and fulfill them correctly.
Okay, so in the chatbot backing system, we built it to handle a very huge number of user traffics. However, if user traffic is high, we upload it to app services, which handles it properly. We use an activity handler in our chatbot SDK, based on which there is the conversation ID and user ID. With that conversation ID, we store all the particular users' details. Considering that PII data will not be stored, we use the conversation ID to get users' responses, the users' flow, and their last utterance, so that we can determine their next utterance. This will provide them feedback accordingly. It will not matter if there's a huge traffic. Later, we use Azure bot services to integrate it, so that every conversation ID has appropriate responses to the users. If there's a huge traffic, with 100 or 1000 users chatting at the same time, it will not lag and provide accurate results. It will not jumble responses to each other. We use the synchronous method inside the flow to give proper and appropriate responses, and not jumbled ones.
I'm in understanding various dialects and accents. Okay. So while we test the effectiveness of the chatbot, I think it can also address something called language understanding. So based on which we can understand which language or in which accent the user is speaking, so that it will convert that accent, for example, if someone was saying in a Spanish accent or a German accent, then that gets converted to English, and then an English accent is provided to the chatbot. So that in the backend, there's only one language, whether you say Hindi, Marathi, English, Spanish, Japanese, or anything, all the process behind the scenes will work in English language. And once that preprocessing is done, then we can reconvert that response to their particular language. So we particularly do this so that it can understand and provide all those things will happen. And if it's in English and some essence are different as well, then we can train accordingly the intent entities of that particular user, so that next time if one user comes again, the next time it should not come again with the same issue. So that next time when the user will come, it will provide them the accurate results.
Which design pattern? Basically, we use Microsoft dialogues flows which are, like, which we develop in the composer so that whatever the complex designs also come. So we provide it inside the comp composer, we design its flow. And then it was integrated to Microsoft bot framework SDK. So if complex flows also come, so we handle it with the bot framework SDK as well as the composer. It depends. So based on channels, specific channels, different types of, what you can say, different types of utterances, accents, all those things will get handled. In the composer flow, then there are some different types of dialogues, if-else conditions, then there are multiple switch cases, all those flows. Then in the help of entity intents recognitions, we use to provide the flows to it. So it will get clarified.
After reviewing these JavaScript function integration, chatbot responses within existing system identifying potential choose finance function. I can't just pass it to you. Welcome to our service. Okay. We are getting it by element. Get elements by ID. Okay. So here, in our HTML, we are providing the response data, but we can have some welcome messages, which is open to the chatbot icon, hi. How can I help you, and all those things? Once you click on it, then the welcome message will be provided and a few cards also. Here, we can have provided some cards so that users will know, in what areas the chatbot will help us. So while we are appending the chatbot responses, not in, hardcoded, we can provide it as a, what you can say, fetch it from a different database or something, and then it will go and pass it to the response message. And it's a static message, welcome to our service, but we can have some generated responses also by integrating the Azure OpenAI services to it, which we did successfully in our own chatbot. Then, I have not after that, yeah. And, yep, I think that's it.
Examine the patterns. It uses a chatbot response system. I can identify an issue regarding the natural language processing logic implementation here from the text prop define. Check the underscore sentiment. Put the text analyst, text blob. Okay. We are using a text blob for sentiment analysis. Okay. Okay. So there are different types of NLP which we can implement. Here, we are using a text block, but I prefer to feel that the text block is not very good. I think we have used NLTK. It gives us very good responses for that. And then here, we can't, meaning we can't help provide stop words, and then we cannot manipulate our own, what you can say, the values of those words, like, how much weightage the word will have so that if that were a sarcastic word also, if we are providing, so it should analyze. So if you can provide the stop words with proper accurate weightage, then the sarcastic comments also it can analyze. So here I was not saying that after that if text blog included was directly saying the analysis but I am not sure if analysis contains the polarity of the sentiment. And it was returning you just what is it, like, positive? Is it negative response or whatever it is? You are not giving the service. Your service is not that bad. So here it will come not and bad. So it may go to positive as it was considering negative things. So the sentiment will make it print as a polarity, like, neutral or negative. But if you if you use NLTK, we can provide if it's come not. So remove the stopper and it was negative. So we can add that weightage like it is this much negative. If bad comes, then this is that much negative, and we can have an analysis. Yeah.
User will come and you will chat. So there are particular things like conversation ID and user ID. So, particularly, if users come back to the same platform, such as Teams or some other platform, there is something known as a user ID. We can store that user ID in some cache storage where we can have some things like which flow it has been, some data we can store as cache. Then later, we can use it. But considering the privacy policies, we always mask all the PII data of that user. So it will never get stored in the cache storage. Once the user wants to clear the cache, we will have some functionality where it will clear all the cache, so past conversations are not there inside the chatbot. However, it is not necessary to store all the conversation data into the cache storage. It's like some conversation logs we will have. We will have some non-intensive logs. We will have some other logs also, like feedback, what the users have provided as feedback with that particular conversation ID. We will store some user ID and conversation ID so that we can know what all things were done. If multiple sessions are available, we can have a feature when users want to continue with their previous sessions or chat with their previous concepts, then we can provide it in detail.
Okay, basically, I was not well-versed with Java because we develop a chatbot. I know Java and its functionalities. I have developed few applications in Java, but for Java which is used in chatbots, I was not aware because as you know, Microsoft is also going to end long-term support for Java and Python. They will support full-time for.NET and JavaScript. We develop chatbots. We choose C# as a technology to develop the chatbot using the Bot Framework SDK. So, majorly, we work with C# languages where we use the SDK. So, if we needed to interact with multiple database systems concurrently, there are a few approaches which we use, such as database systems. I think Java also has some database systems, or else we can use other systems which we can interact with the database systems. I think that there are other systems also which are based on.NET only. So, it's like I was not recalling the name. But we can integrate the database directly to have a class where we can call with the connection strings. We can call it to the database. So, it's like a call only where we can fetch all those details in the database, but I was not particularly remembering the method we used to call it, but I know all the steps.
Yeah, so for multilingual input. Right? So there are many multilingual inputs we can have. We have developed a chatbot also in my last company, where we develop accurate software, where we also develop a multilingual chatbot for which we can have one, which we use someone's integration for multiple multilingual languages, which is provided by Azure language service, language translator. So what we do is we can first fetch out the user's language. We recognize what language it is. Once we understand which language it is, we ask the user to convert it to English. Then the English language, we process within our chatbot code. And then as per the preprocessing is done, once all things are done before sending the user response, whatever the language we came to know, which language the user has provided. So in that language, we converted the response back, and we provide it to the user. So what it is then is, our code didn't change, we just provided the language and converted it to English while calling it before, and this is one of the multilingual language options. Then there is a second option where Azure language service for conversational language understanding, which is LUIS, where we can understand the intended entities. It also provides multilingual language services. And then there is a custom question answering service, which is question answering in a KB knowledge base where we can store our all question answering services. So it also provides multilingual language services. So if you ask something in another language, it will provide you the proper responses. So this is the second approach, but I prefer the first approach so that you will get the output in that particular language only to the user. Otherwise, in the second approach, you will get the answer in whatever language you stored. Suppose you stored it in English, then you will respond in English only. Thank you.