Can I build my custom AI assistant using dialog flow? - tensorflow

I am so confused. I want to build a chatbot like Siri but for my own tasks. It should be able to :
- search on the internet and get answers of questions .
- give people specific information daily.
- discuss with people some scientific phenomenas.
I can't determine what platform should I use to build this chatbot . I thought about using Dialog flow but I can't figure out if it will give me the ability to do that or no. Also I thought about using tensor flow but I think that it will take a very long time so I was wondering if I can achieve what I want with using some thing like dialog flow and not to build it from scratch?

Actually in my opinion, DialogFlow is the best option to build an assistant, it is really easy to build a chatbot to save reminders, to check the weather or to have a simple conversation. DialogFlow has a really powerful tool called webhook that uses Cloud Functions to do the real programming, for example, call google APIs, such as Translate API, or insert data in your Cloud SQL database.
Also, DialogFlow use Machine Learning algorithms to understand the customer, for example, if the client says: "What's the weathe in Barcelona?" It will answer the question correctly.
Another great feature is that it is integrated with multiple technologies, such as, Google Assistant, Amazon Alexa, Cortana, Telegram, Line, Facebook Messenger, etc.
I recommend you to follow this tutorial.

Luis from Microsoft and DialogFlow from Google allow you to build models for natural language processing. These models need to be trained. So the answer is "no", out of the box, these tools do not "search the internet" to discover answers for your intents.
What you need to do is figure out how to train a natural language model, and integrate search data therein. This is bleeding edge AI. And this really is your question; "How do I integrate search with NLP and/or chatbot?"
Both Google and Microsoft let you hook into search. You do not need the dialog tools to do this; you can just pass the query text to do the searching (and let the engine use both ML and heuristic methods to rank results). You mentioned IBM Watson and this is a tool that uses ML modelling to try and answer QnA questions. The Google competition is DeepMind. You can check out those yourself.
But I believe curated content is often the way to go. Tools like Microsoft's QnA Maker let you build these types of applications very easily with little programming required. You can also look into the Azure or Bing search APIs.
And if you are looking to start with a bot from template, there are tons of examples on GitHub for Azure Bot Service and Actions-on-Google. Some even integrate with search and QnA tools. :-)
(And here is the disclaimer. I work for Microsoft. My views do not represent that of my employer.)

Related

Technological choice for a mobile application

I will soon make a mobile application. For the front-end I will use React native and for the back-end I want to make an API but I don't know which technology to use, Django REST API, express js?
My problem is with regard to the videos to store, which technology is going to be the most suitable for storing them?
So, what technology would you use to create an API that can store videos properly and that will be called by react native?
There is no simple answer to a question like this. It all depends on your expectations, experience, resources, time, etc. It is also a very subjective question because most developers have their own preferences about these solutions. The truth is that you can build a solution in A LOT of different ways. Besides the JS frameworks you suggest, popular choices are .NET, PHP, C#, Ruby, Java and Python... and much more!
Besides the backend / API, you will also need a server for hosting your API and maybe another type of server for storage.
If you want to build everything yourself, take a look at the services provided by AWS, Azure or DigitalOcean. If you have limited experience building backends and want to save time, take a look at Google Firebase or Heroku.
The last two are plug-and-play solutions for expecially mobile apps like the one you are describing.
Check it all out and make your own opinion!
Good luck with your project! :-)

Can Dialogflow agents be created, updated and deleted (managed) 100% programmatically?

I am looking to wrap a bot service in order to enable business areas to create and manage them at will with minimal technical knowledge, but meeting our strict security controls. With this in mind I need to be able to create and manage them 100% programatically.
I have been working on a prototype with Microsoft's Bot Framework, Luis and QnA Maker. Sadly though joining these technologies requires a number of manual steps, specifically:
Creating a bot in Azure (Bot Framework)
Creating a Luis Account
Joining Luis bot with Azure(the subscription management part
of the API was recently deprecated)
Creating a QnA Account
Microsoft really don't feel very joined up at all...
With this in mind I am now looking for alternatives and thus looking to see what Google are up to. I am just a bit weary of heading off in a new direction to find similar issues.
Looking briefly at the API documentation it seems I should be able to import an agent in to a project and then manage it. I imagine I could use a template to create my bots from.
Thanks for your time
Mike
Thanks for your feedback.
The way I see it, Bot Framework is more modular than other options out there. First of all, creating a LUIS and QnA account are optional and not time consuming. The average use case can be solved with less than 50 lines of code with no need to throw LUIS or QnAMaker into the mix. Why should Microsoft force you to use LUIS if you might not need it? Google uses a different approach. In my opinion, they give you most of the tools from start, like the NLP agent, so you need to understand NLP concepts even if you don't really need to use them. Most developers tend to overthink their bots and make them more complex that hey need to be.
With that said. We don't provide a way to create agents programmatically. But the process of registering your bot is very straight forward and fast. Let me know if you have any problems on this regard.
Please, take a look at our samples here:
https://github.com/Microsoft/BotFramework-Samples
They can give you a very deep knowledge on what architecture to use for different scenarios. Many times there is a simpler way to achieve the same goal and Microsoft does not try to force you to use the most advanced techniques. Most of the time you can achieve your goal with very simple and easy to maintain code.
Francisco
A Quick Update, in the end we went with a solution based on this idea:
https://aws.amazon.com/blogs/machine-learning/creating-a-question-and-answer-bot-with-amazon-lex-and-amazon-alexa/
I can simply create a new bot by executing cloudformation.

Augmented Reality Development , from where to start ?

I want to do my final year project on augmented reality geo-localization,
Please tell me, from where to start ?
what technology to learn ?
what are recruitments to development this kind of application ?
If you want to perform Geo-Localisation and use GPS, I wouldn't recommend using Unity. It's arbitrary coordinate system can be a bit confusing and difficult to make an app using GPS that's reliable enough.
For Augmented Reality, you can't use anything like Oculus Rift or Google Cardboard, because those are Virtual Reality headsets and have no way of allowing the user to see the real world. Augmented Reality peripherals are things like Microsoft Hololens or Google Glass, neither of which are commercially available but there are cheap knock offs that are. AR can also of course be used on any mobile device, since they all have a camera built-in and chips powerful enough to process all the tracking data.
As for making an actual app, the best thing you can do is have a go. Analyse your market, see where the gaps are. If you want to make an app for a specific OS that isn't cross-platform, I would recommend learning some Objbective-C (for iOS) or Java (for Android), if you don't know any already.
For cross-platform, I would say something like Xamarin would be useful for making an app on both the major OSes, it was recently made free by Microsoft and you can essentially make one app in C# that works across all devices.
For the Augmented Reality itself, there are frameworks out there that can be used for your purposes. Things like Kudan, Vuforia, Wikitude, etc. Some of them offer free versions of their software. You can use these to deal with all the tracking and projection side of things so you don't have to go about creating your own AR engine.
The best thing to do is probably to sit down for a few minutes, or hours, and think about what you're going to do. Figure out what you want the end result to look like, then work backwards and think about the best way to achieve that goal. Eventually you will arrive at the language and engine you want to use to make your life as easy as possible and then you can get started learning from tutorials online and getting your app out into the world.
you can check my tutorial about geo-based augmented reality solution on Android: https://www.netguru.co/blog/augmented-reality-mobile-android
I have presented there the basics and how to start with simple implementation.
Well a good starting point would be to ask yourself few questions:
What type of devices, you plan to work on(oculus rift, google cardboard, Microsoft Hololens, web etc)?
Augmented Reality is achievable in both Web-Context and Application-context. Which route do you want to go for?
Depending on these questions, if you choose to do a normal application based on a device, then depending on the device(Oculus Rift, Google Cardboard, Microsoft Hololens), you would need to grab their specific developer kits and learn how to develop apps using the documentation. For Oculus rift and Microsoft Hololens, you would need the respective Headsets inorder to make an app in that, but If it comes to google cardboard, all you need is you mobile phone with a good processing power.
There is another way to work on augmented reality applications, that is by doing a Web Application using some amazing javascript libraries like Awe.js, Three.js and JSARToolkit.
You can google about them and find out more.
One of the more accessible ways to learn Augmented reality is Project Tango.
Devices are around $500 last I checked and you can use a free version of Unity + Project Tango's free plugin:
https://developers.google.com/project-tango/
Which ever hardware you pick I'd recommend checking out Unity3D as it seems to be the platform of choice for AR/VR at the moment. There are other options... this just provides the most flexibility based on all of the platforms it supports.
Side note: I have no affiliation with Project Tango and am in fact working on another platform... but it isn't as accessible at the moment.

Google Chart APIs for plotting data in local machine

Preface:
I am a system programmer (who has just started his career as a S/W Engineer), so not very good # web scripting languages, though I have just started learning them.
Problem Synopsis:
I want to write an app that keeps track of what I am doing and records it allowing me to analyse my time spending pattern and could help me analyse whenever I want.
Problem Description:
My plan is to write an app that sits in the background and keeps track of active window on my desktop (every second) and stores this data in a SQLite database. But to be more appealing (As I want to share this app with others), I want to have a feature where the user can analyse data recorded between any period of his interest. For this I want the user to be able to generate charts and graphs using the recorded data.
For this I thought of using browser for UI and Google Visualization APIs for plotting work. So, is it possible to use Google Visualization APIs to plot local data? if so, plz guide me on how to continue... (As told before, I am a system programmer, C programmer to be specific, who has just started learning web scripting in free time)
Reasons for these decisions:
(1) App that records what I am doing will be in C/C++ - B'coz I am system programmer and am very comfortable with them. And can get it done easily and quickly.
(2) SQLite - Very small and can easily be embedded in my app, and is Open Source. And I think many web scripting langs like PHP, python have interfaces to access SQLite DB.
(3) Browser for UI - Hope it will be easy for user to use browser, and I will not have much to do regarding UI. As main UI will be browser and Google Visualization APIs will do plotting. All I might have to do is write few lines of script (Am I right here on the last point???)
Comment on my design decision and any tutorials(or pointers) which teaches me on how to do this will be highly appreciated...
Thank You
MicroKernel :)
PS: Idea inspired by Nathan Baulch's reply to https://stackoverflow.com/questions/161590/how-do-you-track-your-time
#Nathan Baulch, Thank you so much for such a brilliant idea. \m/
I would embed browser to app (you want to write in C#)
and use jquery plotting as chart. You will find more info here: http://www.flotcharts.org/

Tools available to do semantic analysis of text

I'm looking for code or a product or a service to do semantic analysis of text (sentences and or paragraphs) to categorize the text by general topic, e.g.
Finance
Entertainment
Technology
Business
Art
etc...
If you have a bunch of examples that have already been categorised, you can use these to train a classifier.
This is a very simple document classfication problem, and any suite of machine learning tools will have the algorithms and tutorials for this. For instance, check out weka: http://www.cs.waikato.ac.nz/ml/weka/
or rapidminer: http://rapid-i.com/content/blogcategory/38/69/
If your needs are limited, and you just want a simple API, you cannot go wrong with this Naive Bayes library: https://ci-bayes.dev.java.net/
Good luck!
If you want to evaluate a commercial service API, check out the VIKI engine APIs:
http://www.softwareevolution.it/en/products/viki-core-api.html
It is an easy to use Json service api with specific semantic features.
Would this be of any help to you?
http://en.wikipedia.org/wiki/Document_classification
It's not a finished product or service, neither code, but it describes the various algorithms that can be used for semantic analysis. Googling on a bit further, I believe that it's not really out of the laboratory yet. People are experimenting with KNN algorithms mostly, resulting in cool stuff, but not really what you need:
http://www.ebi.ac.uk/webservices/whatizit/info.jsf
But if there is some software that will do what you ask, it would be in this list:
http://www.kdnuggets.com/software/text.html
For example the LPU program, it seems to be able to learn if you feed it enough teaching documents.
http://www.cs.uic.edu/~liub/LPU/LPU-download.html
If you're into Python/interpreted languages, check out the excellent NLTK framework at nltk.org. It has an excellent how to page and a recently published O'Reilly book.
If you're into Java and/or require a more mature but harder to grasp framework, try GATE instead.