<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
            "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">

<channel>
<title>perl-AI archive @ ASPN</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Browse/Threaded/perl-AI</link>
<description>Discussions of Artificial Intelligence in Perl.</description>
<language>en-us</language>
<copyright>Copyright 2005, ActiveState</copyright>
<managingEditor>aspn-feedback@activestate.com</managingEditor>
<webMaster>aspn-feedback@activestate.com</webMaster>

<image>
<title>perl-AI @ ASPN Mail Archive</title>
<url>http://ASPN.ActiveState.com/ASPN/img/logo_78x25.gif</url>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Browse/Threaded/perl-AI</link>
</image>

<item>
<title>Re: [ANNOUNCE] AI::FANN</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/3108993</link>
<description>&lt;PRE>--- Ovid &lt;publiustemp-perlai@... wrote:

> I think these are a typos:
> 
>   FANN::AI->new_standard(@...
>   FANN::AI->new_sparse($connection_rate, @...
>   FANN::AI->new_shortcut(@...
>   FANN::AI->new_from_file($filename)

oh, yes, thank you for pointing them.

Cheers,

  - Salva


__________________________________________________
Do You Yahoo!?
Tired of spam?	Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
&lt;/PRE></description>
</item>

<item>
<title>Re: [ANNOUNCE] AI::FANN</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/3108880</link>
<description>&lt;PRE>--- Salvador FandiÃ¯Â¿Â½o &lt;sfandino@... wrote:

> Hi,
> 
> I have uploaded the new AI::FANN module to CPAN:
> 
>    http://search.cpan.org/~salva/AI-FANN/

Looks great (from the docs, haven't tested it).

I think these are a typos:

  FANN::AI->new_standard(@...
  FANN::AI->new_sparse($connection_rate, @...
  FANN::AI->new_shortcut(@...
  FANN::AI->new_from_file($filename)

Cheers,
Ovid

-- 
If this message is a response to a question on a mailing list, please send follow up
questions to the list.

Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/
&lt;/PRE></description>
</item>

<item>
<title>[ANNOUNCE] AI::FANN</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/3108535</link>
<description>&lt;PRE>Hi,

I have uploaded the new AI::FANN module to CPAN:

   http://search.cpan.org/~salva/AI-FANN/

It is a wrapper for the Fast Artificial Neural Network library
(http://fann.sf.net):

   Fast Artificial Neural Network Library is a free open source
   neural network library, which implements multilayer artificial
   neural networks in C with support for both fully connected and
   sparsely connected networks. Cross-platform execution in both
   fixed and floating point are supported. It includes a framework
   for easy handling of training data sets. It is easy to use,
   versatile, well documented, and fast. PHP, C++, .NET, Python,
   Delphi, Octave, Ruby, Pure Data and Mathematica bindings are
   available. A reference manual accompanies the library with
   examples and recommendations on how to use the library. A
   graphical user interface is also available for the library.

This is an early release that may contain critical bugs, though
most things seem to be working properly.

The documentation focus on the differences with the C library, and
both versions should be consulted in order to use the module.

Training an ANN to emulate a XOR gate with AI::FANN looks like
that:

   use AI::FANN qw(:all);

   # create an ANN with 2 inputs, a hidden layer with 3 neurons
   # and an output layer with 1 neuron:
   my $ann = AI::FANN->new_standard(2, 3, 1);

   $ann->hidden_activation_function(FANN_SIGMOID_SYMMETRIC);
   $ann->output_activation_function(FANN_SIGMOID_SYMMETRIC);

   # create the training data for a XOR operator:
   my $xor_train = AI::FANN::TrainData->new( [-1, -1], [-1],
					     [-1, 1], [1],
					     [1, -1], [1],
					     [1, 1], [-1] );

   $ann->train_on_data($xor_train, 500000, 1000, 0.001);

   $ann->save("xor.ann");


And using the trained ANN:

   use AI::FANN;

   my $ann = AI::FANN->new_from_file("xor.ann");

   for my $a (-1, 1) {
     for my $b (-1, 1) {
       my $out = $ann->run([$a, $b]);
       printf "xor(%f, %f) = %f\n", $a, $b, $out->[0];
     }
   }



Comments and feedback are very welcome!

Cheers,

   - Salva.
&lt;/PRE></description>
</item>

<item>
<title>Author of Language::Prolog::Yaswi ?</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/3002957</link>
<description>&lt;PRE>Hi perl-ai people!

I'm trying to contact the author of Language::Prolog::Yaswi, Salvador
"FandiÃ±o" GarcÃ­a, but didn't hear anything from him since september
2005. Does anyone know something about him? 

(Greeti+Tha)nX
Steffen 
-- 
Steffen Schwigon &lt;schwigon@...
Dresden Perl Mongers &lt;http://dresden-pm.org/>
&lt;/PRE></description>
</item>

<item>
<title>New AI::NeuralNet::Simple - feedback welcome</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2971214</link>
<description>&lt;PRE>Hi all,

For those interested in neural nets, there's a new version of
AI::NeuralNet::Simple out
(http://search.cpan.org/dist/AI-NeuralNet-Simple/).  This version
incorporates a good-sized patch from Raphael Manfredi, the author of
Storable.

New features:

  Added tanh activation function.
  train_set() now accepts a maximum error rate target.
  Multiple network support.
  Persistence via storable.

AI::NeuralNet::Simple is an easy to use "feed forward, back propogation
neural network."  Since the core of the module is written in C, it's
very fast.  The only significant (known) limitation of the module at
this point is that the number of layers (3) is fixed.  However, this is
a very common number of layers for this type of network, so it's not
too bad.

The docs make loud warnings about the code being alpha and it claims to
be a "simple learning module" but I think it's solid enough at this
point that it might actually be useful.

Cheers,
Ovid

-- 
If this message is a response to a question on a mailing list, please send follow up
questions to the list.

Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/
&lt;/PRE></description>
</item>

<item>
<title>Yaswi with modules</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2971060</link>
<description>&lt;PRE>Hi!

I'm using Language::Prolog::Yaswi.

Everything works ok with 'consult'ing prolog files.

When I write all my prolog in modules (without public/export
declaration) I have problems to use them in L::P::Yaswi.

My mini example (see attachments) has a predicate give_me_sth/2, that
can be used this way in pure swi prolog:

    $ pl
    ?- use_module('a.swipl').
    ?- use_module('b.swipl').
    ?- module(a).
    a:	?- give_me_sth(2, Answer).
    Answer = 222 ;
    a:	?- module(b).
    b:	?- give_me_sth(2, Answer).
    Answer = 2 ;

However I'm not able to call it from Perl with L::P::Yaswi. I always
get:	error(existence_error(procedure, '/'(give_me_sth, 2)), _100).

I thought it should basically used this way:

  swi_use_modules ( "./a.swipl", "./b.swipl" );
  local $swi_module = 'a';			   ### or 'b'
  swi_set_query( give_me_sth(2, Answer) );
  swi_var(Answer);

Please see attachment for full mini example.

If someoene please could give me a hint what I'm doing wrong ...

I'm no prolog wizard anyway, so it's also possible I'm doing
something wrong there. 

(Greeti+Tha)nX
Steffen 
-- 
Steffen Schwigon &lt;schwigon@...
Dresden Perl Mongers &lt;http://dresden-pm.org/>
&lt;/PRE></description>
</item>

<item>
<title>[Job Posting] Research Scientist, Eagan MN</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2942336</link>
<description>&lt;PRE>Hi all,

My company, Thomson Legal and Regulatory (the parent company for West  
Publishing, FindLaw, and other legal information services) is looking  
for a good Natural Language Processing person.	Our R&amp;D group is about	
20 or so people, about 10 of whom are Research Scientists (including  
me).  Since so much of our business is in text data, our entire group  
specializes in NLP.

This position is certainly not perl-specific, but as researchers we can  
generally choose the tools that we want to use.  Personally I tend to  
choose perl a lot, but as you'll note below, we also use Java, C, or  
whatever is appropriate to our tasks - sometimes prolog or python or  
smaller niche languages.  Thus I thought it would be appropriate to  
post in this forum.

This position has also been posted on various public job boards,  
including Monster.com and our company's career web site:

  http://jobsearch.monster.com/getjob.asp?JobID=37099311
   
http://www.thomsoncareercenter.com/search/view_job_xml.asp? 
src=rs&amp;jobID=154545&amp;loc=Ext

Note that I am not the hiring manager or an HR person, I'm a fellow  
Research Scientist.

Eagan is a suburb of Minneapolis/St. Paul.

Thanks,

  -Ken

***********************************************************************
Research Scientist â?? Opportunities at Thomson Legal and Regulatory

The Research &amp; Development department for Thomson Legal and Regulatory	
would like to invite qualified applicants to apply for an open Research  
Scientist position in their Eagan, MN offices. The Research &amp;  
Development department performs applied research in natural language  
processing, document retrieval, information extraction, text  
classification, summarization, and named entity recognition. The ideal	
candidate would have significant expertise in one or more of these  
research areas.

Preference will be given to candidates with research and work related  
experience in the area of named entity recognition and resolution.

Principal duties:
â?¢	Conducting applied research in information retrieval, information  
extraction, text categorization, text mining, or related areas in the  
context of large online delivery environments, such as Westlaw.
â?¢	Execution of such projects, including
â?¢	implementation of prototypes and the design of experiments to  
evaluate them
â?¢	performing of experiments to validate key algorithms and  
architectures associated with such prototypes, followed by written  
reports
â?¢	liaison with other departments concerning transition of prototypes  
into production
â?¢	collaboration with software engineers engaged in the construction of  
prototypes.
â?¢	Custom development for other TLR departments on key projects with a  
research component.
â?¢	Monitoring of research literature through reading.

Prerequisites:
â?¢	Applicants should have a graduate degree in Computer Science or a  
related discipline.
â?¢	Relevant experience in one or more of the following areas: natural  
language processing, machine learning, information retrieval,  
information extraction, document classification, summarization, and  
named entity extraction and resolution (Applicants with Masters degree	
must have some additional work related experience).
â?¢	Substantial experience with UNIX or Windows environment.
â?¢	Proficiency in a programming language such as Java or C++.
â?¢	Good oral and written communication skills (as demonstrated through  
prior technical publications).
â?¢	Relevant publications in Journals and (refereed) conferences a plus.

Reports to: Director of Research.
Contact: Khalid Al-Kofahi &lt;Khalid.Al-Kofahi@...
&lt;/PRE></description>
</item>

<item>
<title>Re: Yaswi question</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2843049</link>
<description>&lt;PRE>Hi!

Thanks for all your answers. And of course you are right, when you
say that I just have to benchmark it.

After struggling with some minor problems with Yaswi from mod_perl, I
can now say that the performance impact is indeed quite small when
using Language::Prolog::Yaswi.

I compared
 - Language::Prolog::Yaswi from within a mod_perl application,
 - the same mod_perl framework without calls ti L::P::Yaswi,
 - the pure prolog httpd that is delivered with SWI Prolog.

I used the threaded stress tester that comes with the swi prolog
htttpd and measured time needed for 10000 requests from 8 threads).
(Apache 1.3, mod_perl 1, Athlon 1800+)

 - mod_perl+Yaswi takes about 29sec.
 - plain mod_perl takes about 26sec.
 - httpd from swi takes about 20sec.

As you can see, using Yaswi doesn't make my application much slower
than it already is.

GreetinX
Steffen 
-- 
Steffen Schwigon &lt;schwigon@...
Dresden Perl Mongers &lt;http://dresden-pm.org/>
&lt;/PRE></description>
</item>

<item>
<title>Re: Yaswi question</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2837065</link>
<description>&lt;PRE>--- Steffen Schwigon &lt;schwigon@... wrote:

> Hi!
> 
> I'm about to intermix a Perl web application with SWI-Prolog.
> Currently Language::Prolog::Yaswi seems to be useful.
> 
> The prolog part ought to solve only one particular problem,
> everything else is a mod_perl driven web app.
> 
> Now I'm not sure about its performance. I expect about 1 to 3
> requests
> per second at peak times and I don't know yet how long my prolog
> programm will take.
> 
> Does Language::Prolog::Yaswi start a new "pl" process for every
> query? 

No. It uses SWI-Prolog as a library, and the queries run inside the
perl process. L::P::Y just converts data structures between perl and
prolog. The overhead is relatively small, though it depends on how
big the data structures passing through the interface are.

Cheers,

  - Salvador


		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com
&lt;/PRE></description>
</item>

<item>
<title>Re: Yaswi question</title>
<link>http://ASPN.ActiveState.com/ASPN/Mail/Message/perl-AI/2837042</link>
<description>&lt;PRE>--- Steffen Schwigon &lt;schwigon@... wrote:

> Now I'm not sure about its performance. I expect about 1 to 3
> requests
> per second at peak times and I don't know yet how long my prolog
> programm will take.
> 
> Does Language::Prolog::Yaswi start a new "pl" process for every
> query? 
> The README talks about threads, so maybe it already does something
> clever about this.

The reason threads are mentioned is because Perl and SWI-Prolog must
both have threads enabled or both NOT have threads enabled.  Threads
are not a requirement.	I'm not aware that SWI-Prolog does start
another process but I certainly wouldn't place a bet on that.

I would strongly recommend Devel::Profiler or something similar on your
code to find out where your true bottlenecks are.  If you do find out
your Prolog calls are slow, then you can spend the time tuning those
queries (of course, if it's just too many Prolog queries in too short
of  a time, tuning might not help).  On the other hand, if profiling
can get you significant gains in the Perl portion, then you may get a
win just by tuning Perl.  If you can't speed up the Prolog, trying to
replicate it's functionality in Perl may be difficult.	Of course,
there are tricks you can use to push much of the logic into a database
and making multiple calls from Perl.  That's probably slower but a good
RDBMS has optimizations that Prolog often doesn't so it's worth
exploring if you're stuck.

If you really have problems with Prolog, I would suggest issuing a
bunch of short Prolog queries and timing them and then issue some
long-running queries.  Time them both from Perl and directly in
SWI-Prolog as if you were running it there.  That can give you some
idea as to the performance impact from Perl.

Cheers,
Ovid

-- 
If this message is a response to a question on a mailing list, please send
follow up questions to the list.

Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/
&lt;/PRE></description>
</item>

</channel>
</rss>