AI Zone Admin Forum Add your forum

NEWS: Chatbots.org survey on 3000 US and UK consumers shows it is time for chatbot integration in customer service!read more..

Hi everyone! Happy to join an active community on this passionate topic!
 
 

I am Sam,
French but living in Germany, working as consultant for a big software company.

I have always been passionated by AI, and since I am no good at mechanics but can program, I focus on the brain side of the bots wink

I have a little project going on, on which I work from time to time. My approach (always evolving…) is currently:

- Using the GATE framework as backbone of my application. It is easy to add plugins (JAVA), there is a GUI to do some quick tests, supports many existing plugins (WordNet, ...) and supports annotations on text (Entity recognition, ...)
- The pipeline of modules uses NLP features (tokenizer, taggers, coreference matcher, ....) in order to extract grammar information, disambigue concepts, ...
- I believe that a good bot has to learn from itself (even if like a kid). So from the information gathered, I m trying to build some common rules that can be translated into OWL/RTD ontologies using the Jena library. For example, if the bot has to learn “The sky is blue”, it extracts the relation: subject:sky-predicate:be-object:blue. Put this in a new ontology, with new classes “sky” and “blue” (which is subclass of “colour”, since my entity recaognition did its job) and put this triplet in the ontology. I did not make the retrieval part yet, but the saving part is there.
- I m also trying to use OpenEphyra, to optimize the quality of the bot when in comes to questions. At least to extract keywords, focus and answer format. The reall answer will be done by querying the Ontologies.
- I believe the use of patterns is required, since it solves many situations we cannot even think about. So I am having a look at AIML JAva library (CharlieBot?) that I could use to treat situations that a clever NLP analysis could not resolve…

That kind of my idea…

Happy to read you all soon.

cheers

Sam

 

 
  [ # 1 ]

Hi Sam,

Welcome to chatbots.org! You are joining us at a fortuitous time.

Dan Hughes recently installed YAGO2 to experiment with that knowledge base, though he found that he had to assemble a very powerful server to be able to handle it. I am currently working with YAGO2 as well.

Since I cannot afford to buy hardware powerful enough to run it quickly, I am writing some new software to transform it into a more efficient data structure. Triple stores are very versatile, there is not question about that, but for speed and efficiency it is still good to be able to create a relational database wherever possible (that’s what I keep telling myself anyway). I have also started to learn a little about RDF during the course of this process.

What kind of resources do you have at your disposal? It will be very interesting to compare notes with you about knowledge bases.

Cheers,
Andrew Smith

 

 
  [ # 2 ]

Hi Andrew!

I had a look at your previous thread about YAGO2. Never heard of it, but looks interesting indeed.

If by resource you mean hardware, I was not precise in my intro, this project is private and I am not doing this as part of a project for my company, so I do not have access to powerful servers if that is what you meant wink

I started with OWL/Jena because of Java of course and the fact that it can store the ontologies into files or into databses (Oracle, Derby, MySQL, MSQL, ...) which could be interesting when it comes to huge amount of data that would not make sense to store in the file system…

Cheers

Sam

 

 
  [ # 3 ]

Hi, Sam, and welcome!

I’m Dave; one of the moderators here, and also one of the few people here who don’t actually have a “ground-breaking” project “in the works”. But just because I’m not working on some new idea, theory, or implementation in AI, that doesn’t mean that I’m not contributing. smile My goal is to try to get folks to work together as a team, and to bring together all of these new ideas, theories and implementations in order to create something that is “greater than the sum of it’s parts”. There’s an old saying, “It takes a village to raise a child”. I believe that it will take a community (such as ours) to build a viable, robust AI conversational system that can have an engaging, interesting, (nearly) infinitely varying talk with someone, that can range from the simple (“the sky is blue”), to the complex (“The other day, I talked with Marta, and she told me that you were going fishing tomorrow”), and from the serious (“I’m sorry to hear your car broke down”) to the silly (“How did the elephant fit into your pajamas, anyway?”). Putting something like this together will be a huge task, but I believe that it can be done. There are still a few parts of the puzzle missing, yet, but I’m still looking. smile

 

 
  [ # 4 ]

Hi Dave!

thanks for the welcoming message. Yes, this task cannot be the work of one man, it will take a whole community to produce something worth it! I am sure we can all make progress here.

 

 
  [ # 5 ]

Hello Sam, welcome to the site. Sounds interesting what you are doing.

 

 
  [ # 6 ]

Hi Sam, welcome!

I hope you keep the forum updated as your project progresses, I’m definitely interested in hearing more. Particularly, I’d like to know more detail about which parsing techniques you’re employing. And how will the ontologies you’re storing feed back into improving the parse?

 

 
  [ # 7 ]

Hi Sam, on behalf of myself, welcome as well grin. I’d love to work on my own project, but Chatbots.org as a project itself takes all my time. Now in the middle of the promotion campaign for our companies area http://www.chatbots.org/companies.

Enjoy the forums and all the enthusiastic, helpful and knowledgeable people over here!

 

 
  [ # 8 ]

Thanks a lot (in the appearance order wink ) Jan, CR, Erwin!

I will try to give some updates from time to time when I achieve something that makes sense.

 

 
  [ # 9 ]
Sam Hoareau - Oct 25, 2011:

Thanks a lot (in the appearance order wink ) Jan, CR, Erwin! I will try to give some updates from time to time when I achieve something that makes sense.

Finding the right balance between discussing (or arguing about) things with our peers, and keeping our heads down to get some work done can be difficult. Erwin’s comment made me think that everyone should be working with a web designer who takes care of documenting everything as they go.

Sometimes I think it would be neat if I could get my NLP software to the point where it could take care of communicating with everyone else for me, while I concentrate on programming. It would have the advantage that it would never lose its temper, though it still might be a bit tactless from time to time. smile

 

 
  [ # 10 ]

@Andrew: that is the exact reason why we’re trying to connect designer with programmers (and speech specialist). The animation area within companies is just a start.

 

 
  [ # 11 ]

That idea is well worth exploring, Andrew. What sort of criteria would be required, do you think? If only simple text documentation is needed, then that’s easily accomplished. If folks need to also add images, or PDF documents, or even downloadable example files, then a bit more planning and effort would be required, but is certainly in the realm of possibility. The only real challenge would actually be in getting everyone to participate. smile

 

 
  [ # 12 ]

Would anyone be kind enough to post an ontology sample text?

 

 
  [ # 13 ]

I have many other ontologies, but too big to be uploaded here…

Here a simple example of an ontology about cameras in the OWL language. (I had to remove some statements)

Sam

<?xml version=“1.0” encoding=“UTF-8”?>
<rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#”
      xmlns:rdfs=“http://www.w3.org/2000/01/rdf-schema#”
  xmlns:owl=“http://www.w3.org/2002/07/owl#”
  >

  <owl:Ontology rdf:about=”“>
      <rdfs:comment>
      Camera OWL Ontology                  
                                           
    Author: Roger L. Costello                      
    Acknowlegements: Many thanks to the following people for  
                their invaluable input:             
                  Richard McCullough, Yuzhong Qu,     
                  Leo Sauermann, Brian McBride and    
                  Jim Farrugia.                 
      </rdfs:comment>
  </owl:Ontology>

    <owl:Class rdf:ID=“Money”>
      <rdfs:subClassOf rdf:resource=“http://www.w3.org/2002/07/owl#Thing”>
    </owl:Class>

    <owl:DatatypeProperty rdf:ID=“currency”>
      <rdfs:domain rdf:resource=”#Money”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#string”>
    </owl:DatatypeProperty>

    <owl:Class rdf:ID=“Range”>
      <rdfs:subClassOf rdf:resource=“http://www.w3.org/2002/07/owl#Thing”>
    </owl:Class>

    <owl:DatatypeProperty rdf:ID=“min”>
      <rdfs:domain rdf:resource=”#Range”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#float”>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:ID=“max”>
      <rdfs:domain rdf:resource=”#Range”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#float”>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:ID=“units”>
      <rdfs:domain rdf:resource=”#Range”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#string”>
    </owl:DatatypeProperty>

    <owl:Class rdf:ID=“Window”>
      <rdfs:subClassOf rdf:resource=“http://www.w3.org/2002/07/owl#Thing”>
    </owl:Class>

    <camera:Window rdf:ID=“ThroughTheLens”>
    <camera:Window rdf:ID=“WindowOnTopOfCamera”>

    <owl:Class rdf:ID=“Viewer”>
      <owl:oneOf rdf:parseType=“Collection”>
          <camera:Window rdf:about=”#ThroughTheLens”>
          <camera:Window rdf:about=”#WindowOnTopOfCamera”>
      </owl:oneOf>
    </owl:Class>

    <owl:Class rdf:ID=“PurchaseableItem”>
      <rdfs:subClassOf rdf:resource=“http://www.w3.org/2002/07/owl#Thing”>
    </owl:Class>

    <owl:ObjectProperty rdf:ID=“cost”>
      <rdfs:domain rdf:resource=”#PurchaseableItem”>
      <rdfs:range rdf:resource=”#Money”>
    </owl:ObjectProperty>

    <owl:Class rdf:ID=“Body”>
      <rdfs:subClassOf rdf:resource=”#PurchaseableItem”>
    </owl:Class>

    <owl:Class rdf:ID=“BodyWithNonAdjustableShutterSpeed”>
      <owl:intersectionOf rdf:parseType=“Collection”>
          <owl:Class rdf:about=”#Body”>
          <owl:Restriction>
              <owl:onProperty rdf:resource=”#shutter-speed”>
              <owl:cardinality>0</owl:cardinality>
          </owl:Restriction>
      </owl:intersectionOf>
    </owl:Class>

    <owl:Class rdf:ID=“Lens”>
      <rdfs:subClassOf rdf:resource=”#PurchaseableItem”>
    </owl:Class>

    <owl:Class rdf:ID=“Camera”>
      <rdfs:subClassOf rdf:resource=”#PurchaseableItem”>
    </owl:Class>

    <owl:Class rdf:ID=“SLR”>
      <owl:intersectionOf rdf:parseType=“Collection”>
          <owl:Class rdf:about=”#Camera”>
          <owl:Restriction>
              <owl:onProperty rdf:resource=”#viewFinder”>
              <owl:hasValue rdf:resource=”#ThroughTheLens”>
          </owl:Restriction>
      </owl:intersectionOf>
    </owl:Class>

    <owl:Class rdf:ID=“Large-Format”>
      <rdfs:subClassOf rdf:resource=”#Camera”>
      <rdfs:subClassOf>
          <owl:Restriction>
              <owl:onProperty rdf:resource=”#body”>
              <owl:allValuesFrom rdf:resource=”#BodyWithNonAdjustableShutterSpeed”>
          </owl:Restriction>
      </rdfs:subClassOf>
    </owl:Class>

    <owl:Class rdf:ID=“Digital”>
      <rdfs:subClassOf rdf:resource=”#Camera”>
    </owl:Class>

    <owl:ObjectProperty rdf:ID=“part”>

    <owl:ObjectProperty rdf:ID=“lens”>
      <rdfs:subPropertyOf rdf:resource=”#part”>
      <rdfs:domain rdf:resource=”#Camera”>
      <rdfs:range rdf:resource=”#Lens”>
    </owl:ObjectProperty>

    <owl:ObjectProperty rdf:ID=“body”>
      <rdfs:subPropertyOf rdf:resource=”#part”>
      <rdfs:domain rdf:resource=”#Camera”>
      <rdfs:range rdf:resource=”#Body”>
    </owl:ObjectProperty>

    <owl:ObjectProperty rdf:ID=“viewFinder”>
      <rdf:type rdf:resource=“http://www.w3.org/2002/07/owl#FunctionalProperty”>
      <rdfs:domain rdf:resource=”#Camera”>
      <rdfs:range rdf:resource=”#Viewer”>
    </owl:ObjectProperty>

    <owl:DatatypeProperty rdf:ID=“size”>
      <rdfs:domain rdf:resource=”#Lens”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#string”>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:ID=“aperture”>
      <rdfs:domain rdf:resource=”#Lens”>
      <rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#string”>
    </owl:DatatypeProperty>

    <owl:ObjectProperty rdf:ID=“compatibleWith”>
      <rdfs:domain rdf:resource=”#Lens”>
      <rdfs:range rdf:resource=”#Body”>
    </owl:ObjectProperty>

</rdf:RDF>

 

 
  [ # 14 ]

Wonderful Sam Hoareau — That sample is very helpful.

Thank you.  Since my last post here, I started some research

and just installed an open source demo ontology sample site at:

http://b-zg.com/ontology/

I hope to use this open source sample site as a guide for

a chatter robot ontology.

This sample ‘FREE QUERY’, which is quite shorter than your sample,

looks like this:

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX DemoOntology:<http://demo-ontology.googlecode.com/svn/trunk/demo-ontology/DemoOntology.owl#>
select ?y
where {
?x rdf:type DemoOntology:Municipality.
?
x DemoOntology:hasName ?y.

More Research:

http://en.wikipedia.org/wiki/Web_Ontology_Language

 

 

 
  [ # 15 ]

Hi Sam

I’m curious how you use GATE as a framework. It looks to me like a framework for text analysis, with annotation capabilities, but not really a conversational agent which can interact with a user.  Is this the way you are using it, via a plugin?

Oliver

 

 1 2 > 
1 of 2
 
  login or register to react
‹‹ Hi to all      Human aesthetics in chatbots ››