On Fri, Feb 7, 2020 at 1:02 AM paarulakan(பாருலகன்) <
selva.develo...@gmail.com> wrote:

> Hi Linas,
>
> Thank you. Can you point me to documentation for 'how the backward-forward
> things'
>

The general theory would be explained in textbooks that explain chaining,
reasoning, deduction. I assume there's some wikipedia article but I never
looked. For how the opencog-ure codebase actually works ... I assume there
is a README or whatever in the repo, or wiki pages, but only Nil
Geisweiller would know for sure.


>   most of the communication is happening through atomspace. right?
>

It depends... in game programming, something like the atomspace would be
called "the blackboard" -- you write stuff into it, come back later, its
still there. But the atomspace is also like a database, because you can
search it. But there's also Atomese which is a kind-of programming
language, since you can write programs in it .. or rather, you can write
programs to the blackboard, and then later execute them .. or analyze them
.. or transform them. (Atomese is very low level. It's kind-of assembly
like, so a bit hard for humans, its also slow.)

By contrast, when people say "communication" they usually mean "channel"
and channels have no memory (channels have no blackboards).  Funny thing
is, you can use "Values" to implement channels.  So atoms specify the
plumbing, and values are what flow through those channels.


>
> To add more context, I come from deep learning background so I know
> python, but I want to work on symbolic natural language processing.
>

Yeah. I want to go in the opposite direction.  Or rather unify the two
approaches.  I have ideas but have not gotten very far yet.

I am learning lisp for the same reason.
>

Switch to scheme now. Its almost exactly the same ... but you will find it
slightly cleaner.

I have been working with python for 4 years now
>

There's a really great book, called SICP (structure and interpretation of
computer programs). It teaches scheme from the ground up. Coming from
Python (or C/C++) it might seem weird and hard and screwy but somewhere in
the middle of chapter 2 you will realize that everything you know about
programming is wrong... or rather, is a very special case of something far
more generic.

but it seems unnatural for symbolic NLP.
>

.. or symbolic anything.  Which is how we arrived at opencog/atomese. It
took a while to understand the issues ... and not done yet...

Is there a way to pickup some task and apply opencog framework for that?
> more concretely sentiment analysis and question answering.
>

I don't know how to give an easy answer, so let me give a complex one. So,
maybe 10 years ago, opencog had a question-answering system. It worked, in
a small domain. It worked by parsing natural-language sentences, for
example "A thermometer is an instrument" or "A violin is a musical
instrument" and converting them to abstract graphs e.g. isA(thermometer,
instrument) or isA(violin, mod(instrument, music)) and storing the abstract
graphs in the atomspace.  Questions, such as "What is an instrument?" were
converted to isA(???, instrument) and a pattern-match was run to find
everything that ??? would be. "fill in the blanks".

There are several obvious problems with this, as anyone who tries this
finds out. You have to write special cases for all the different question
types. One finds oneself curating an ever-more complex ruleset to handle
all of these cases. And like any complex ruleset ... its buggy. Its
fragile. questions can be misunderstood. Wrong, insane answers can be
supplied. No commonsense... (despite this, people have created huge
triple-stores and whatnot. I think that's a fundamentally wrong approach).

It was my hope to hand-write enough rules to get a general sense of what
that rule-set is like, and then create systems that can learn and adjust
the rules. Then I got side tracked solving other issues along the way. ..
Such as creating a code base capable of such things.  I still think I "know
how" to do this, but it remains experimental and a bit out of reach.  I did
learn various important lessons along the way, but cannot quickly summarize.

What's I'm describing is not a "task" but a decade-long research program.
If you want a short programming task, there are issue-lists of bugs to fix.
Most of these require you to know system internals, though.

Here's one task, but maybe its rather complex... so, one project,
https://github.com/opencog/learn wants to induce grammar via unsupervised
training on text. (and then later, from grammar, shallow and deep
semantics, i.e. "do question answering right")  We've been using English,
but it became clear that the correct thing is really to create random
grammars, then generate random sentences, and then see if the learning
system can learn those random grammars. .. and use that as a scoring
system, to track quality of learning.

So the task is ... create random grammars, and write the code to create a
collection of random sentences. Sounds easy, but its surprisingly hard. I
mean, its not a few days or a week, its a good bit longer. How much I can't
say.  Care to try that?  Warning: it might be really very difficult, and so
without a principled approach, you'll get nowhere. It will likely force you
to understand certain basic concepts about grammars and computation and
combinatorial explosion that you probably haven't ever had to think about
before ...

-- Linas


> On Friday, February 7, 2020 at 3:34:51 AM UTC+5:30, linas wrote:
>>
>> Hi Paarulakan ..
>>
>> Why scheme instead of lisp?  Well, scheme is a modern-lisp, having
>> cleaned up assorted messes and inconsistencies and ugly-bits.   Kind of
>> like asking "why C instead of fortran?"
>>
>> Why guile-scheme instead of some other scheme? Guile offered vastly
>> superior integration into C/C++ than any other scheme out there. I don't
>> know if that's still true or not. Certainly, all  schemes/lisps have
>> "foreign function interfaces" -- FFI's but I don't believe that's enough --
>> we're not just invoking foreign functions, there's a whole bunch of
>> backward-foreward movement between  the code in each language.
>>
>> -- Linas
>>
>> On Thu, Feb 6, 2020 at 4:20 AM paarulakan(பாருலகன்) <selva.d...@gmail.com>
>> wrote:
>>
>>> Why did opencog choose scheme as its lisp not common lisp. I recently
>>> started learning lisp family of languages, still a newbie. but other than
>>> the thing that scheme is lighweight, are they any other reason for using
>>> scheme?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "opencog" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to ope...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/opencog/7d99a84e-a980-4bb1-950f-8185362b5f76%40googlegroups.com
>>> <https://groups.google.com/d/msgid/opencog/7d99a84e-a980-4bb1-950f-8185362b5f76%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> --
>> cassette tapes - analog TV - film cameras - you
>>
> --
> You received this message because you are subscribed to the Google Groups
> "opencog" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to opencog+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/c2c68511-309d-4a4a-a4a5-ac5834d3c15b%40googlegroups.com
> <https://groups.google.com/d/msgid/opencog/c2c68511-309d-4a4a-a4a5-ac5834d3c15b%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>


-- 
cassette tapes - analog TV - film cameras - you

-- 
You received this message because you are subscribed to the Google Groups 
"opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to opencog+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/opencog/CAHrUA37A60KCcfwgVg3ShtQMORsi-PQcjMWDkS-v%2BmpOQ0TsxA%40mail.gmail.com.

Reply via email to