uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Kluegl <pklu...@gmail.com>
Subject Re: Using RUTA
Date Tue, 28 Feb 2017 13:23:12 GMT
Hi,


operations directly on lists and arrays are on my todo list but not yet
implemented.


Right now, there are still some options like a variable or restricted
assignments.


Here's an example with an ANNOTATIONLIST variable:


ANNOTATIONLIST list;
Book{-> CREATE(NeilsBook, "attributes" = list)}<-{
    a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology" -> ADD(list,a1)}
    % a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman" -> ADD(list,a2)};
    };


Variables are global, so you need to clear the list maybe somewhere,
e.g. before the first ADD.


In the current trunk, something like the following is also possible:

Book{-> NeilsBook("attributes" = Attribute{OR(Attribute
.name=="title", Attribute.name=="author")})}....


Best,


Peter


Am 28.02.2017 um 14:06 schrieb José Vicente Moyano Murillo:
> Hi Peter, we have another question regarding the same example.
>
> Right now all is working properly (many thanks) and it seems that
> 2.5.1-SNAPSHOT it's fine.
>
> Now we are planning to store some information in the created annotation. We
> want to store all the attributes that matches the RUTA rule.
>
> It is possible to store a1 and a2 in a feature (attributes) of NeilsBook?
>
> The example:
>
> Book{-> NeilsBook}<-{
>     a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
>     %
> a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
> };
>
> We are using this aproach:
>
> Book{-> NeilsBook("attributes" = Attribute )}<-{
>      a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
>      %
> a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
> };
>
> This example works but it is storing all the annotations "Attribute"
> covered by "Book" and we just want the attributes that matches the rule.
>
> Thanks in advance.
>
>
>
>
> 2017-02-24 10:29 GMT+01:00 José Vicente Moyano Murillo <moyanoj@aia.es>:
>
>> Many thanks Peter ¡¡¡
>>
>> 2017-02-24 9:46 GMT+01:00 Peter Klügl <peter.kluegl@averbis.com>:
>>
>>> Hi,
>>>
>>>
>>> the repo:
>>>
>>> <repository>
>>>       <id>apache.snapshots</id>
>>>       <name>Apache Snapshot Repository</name>
>>>       <url>http://repository.apache.org/snapshots</url>
>>>       <releases>
>>>         <enabled>false</enabled>
>>>       </releases>
>>>     </repository>
>>>
>>>
>>> the folder:
>>>
>>> https://repository.apache.org/content/groups/snapshots/org/a
>>> pache/uima/ruta-core/2.5.1-SNAPSHOT/
>>>
>>>
>>> Best,
>>>
>>> Peter
>>>
>>>
>>>
>>> Am 23.02.2017 um 13:47 schrieb José Vicente Moyano Murillo:
>>>> Hi,
>>>>
>>>> ruta-core.jar it's enough.
>>>>
>>>> It will be fantastic if i could access the snapshot repository.
>>>>
>>>> 2017-02-23 13:03 GMT+01:00 Peter Klügl <peter.kluegl@averbis.com>:
>>>>
>>>>> Hi,
>>>>>
>>>>>
>>>>> what do you need? Only ruta-core.jar or also the Eclipse plugins/update
>>>>> site?
>>>>>
>>>>> I will prepare a new RC for the next release soon.
>>>>>
>>>>> There should be snapshot artifacts built by jenkins in the snapshot
>>>>> repository. I am out-of-office today so do not have the link right
>>> now. (If
>>>>> you want to build it yourself, the svn source repo can be accessed by
>>>>> anyone)
>>>>>
>>>>>
>>>>> Best,
>>>>>
>>>>>
>>>>> Peter
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Am 23.02.2017 um 08:06 schrieb José Vicente Moyano Murillo:
>>>>>
>>>>>> Hi Peter, good morning.
>>>>>>
>>>>>> Have we any opportunity to get a fixed version? I mean a snapshot
or
>>> an
>>>>>> access to the repo.
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> 2017-02-22 10:38 GMT+01:00 José Vicente Moyano Murillo <
>>> moyanoj@aia.es>:
>>>>>> you're right
>>>>>>> % is performing some kind of "or".
>>>>>>>
>>>>>>> So we will wait for the new release.
>>>>>>>
>>>>>>> Many thanks
>>>>>>>
>>>>>>> 2017-02-22 9:54 GMT+01:00 Peter Klügl <peter.kluegl@averbis.com>:
>>>>>>>
>>>>>>> I actually wonder why your rules work. I am quite sure that they
>>> match
>>>>>>>> too often, i. e. they match also if only one of the conjunct
rule
>>>>>>>> elements match.
>>>>>>>>
>>>>>>>> You can simply try that by using a wrong string in the check
like
>>> "NG"
>>>>>>>> instead of "Neil Gaiman"
>>>>>>>>
>>>>>>>> Anyways, the problem will be fixed in a few minutes and will
be
>>> part of
>>>>>>>> the next release.
>>>>>>>>
>>>>>>>>
>>>>>>>> Best,
>>>>>>>>
>>>>>>>>
>>>>>>>> Peter
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 22.02.2017 um 09:38 schrieb Peter Klügl:
>>>>>>>>
>>>>>>>>> Thanks. Maybe its just a bug in 2.5.0 I already fixed.
I'll
>>> investigate
>>>>>>>> it.
>>>>>>>>
>>>>>>>>> Am 22.02.2017 um 09:24 schrieb José Vicente Moyano Murillo:
>>>>>>>>>
>>>>>>>>>> Thank you very much Peter. Your advice was amazing.
>>>>>>>>>>
>>>>>>>>>> We tried the first option using Conjunct rules and
as you said it
>>> does
>>>>>>>>> not
>>>>>>>>> work with version 2.5.0. But we change a little your
example and it
>>>>>>>>> works
>>>>>>>>> perfectly witn 2.4.0 and 2.5.0
>>>>>>>>>> We use theses examples with success:
>>>>>>>>>>
>>>>>>>>>> DECLARE Annotation RuleDetection;
>>>>>>>>>>   Book{ -> CREATE(NeilsBook) } <- {
>>>>>>>>>>        Attribute{Attribute.name=="title", Attribute.ct=="Norse
>>>>>>>>>>
>>>>>>>>> Mythology"}"
>>>>>>>>>        %
>>>>>>>>>>                Attribute{Attribute.name=="author",
>>>>>>>>>> Attribute.ct=="Neil
>>>>>>>>>> Gaiman"};"
>>>>>>>>>>   };
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> DECLARE Annotation RuleDetection;
>>>>>>>>>>   Book{ -> CREATE(NeilsBook) } <- {
>>>>>>>>>>         Attribute{FEATURE("name","title"), FEATURE("ct",
"Norse
>>>>>>>>>>
>>>>>>>>> Mythology")}"
>>>>>>>>>        %
>>>>>>>>>>                 Attribute{FEATURE("name","author"),
FEATURE("ct",
>>>>>>>>>> "Neil
>>>>>>>>>> Gaiman")};
>>>>>>>>>>   };
>>>>>>>>>>
>>>>>>>>>> DECLARE Annotation RuleDetection;
>>>>>>>>>>   Book{ -> CREATE(NeilsBook) } <- {
>>>>>>>>>>        Attribute{Attribute.name=="title", Attribute.ct=="Norse
>>>>>>>>>>
>>>>>>>>> Mythology"}"
>>>>>>>>>        %
>>>>>>>>>>                 Attribute{FEATURE("name","author"),
FEATURE("ct",
>>>>>>>>>> "Neil
>>>>>>>>>> Gaiman")};
>>>>>>>>>>   };
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> May be the problem is with when we use Identifiers:
>>>>>>>>>>     a1:Attribute and  a2:Attribute
>>>>>>>>>>
>>>>>>>>>> In any case thank you very much for your help.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2017-02-21 17:46 GMT+01:00 Peter Klügl <peter.kluegl@averbis.com
>>>> :
>>>>>>>>>> Hi,
>>>>>>>>>>> I'd normally say that you need the conjunt rules
construct to
>>> specify
>>>>>>>>>> an
>>>>>>>>> AND between two rule element independent of the position:
>>>>>>>>>>> Book{-> NeilsBook}<-{
>>>>>>>>>>>      a1:Attribute{a1.name=="title", a1.ct=="Norse
Mythology"}
>>>>>>>>>>>      % a2:Attribute{a2.name=="author", a2.ct=="Neil
Gaiman"};
>>>>>>>>>>>      };
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> However, I just noted that there is a problem
with conjunct
>>> rules. I
>>>>>>>>>>> haven't used it in a long time and the test coverage
much lower
>>> than
>>>>>>>>>> the
>>>>>>>>> other constructs. I'll create a ticket for it and fix
it.
>>>>>>>>>>> Without conjunct rules, you need some boolean
variables for
>>> cheking
>>>>>>>>>> the
>>>>>>>>> AND, which looks all but declarative:
>>>>>>>>>>> BOOLEAN ft, fa;
>>>>>>>>>>> FOREACH(book) Book{}{
>>>>>>>>>>>      book{-> ft = false, fa = false};
>>>>>>>>>>>      book->{a1:Attribute{a1.name=="title",
a1.ct=="Norse
>>>>>>>>>>> Mythology"->
>>>>>>>>>>> ft=true};};
>>>>>>>>>>>      book->{a2:Attribute{a2.name=="author",
a2.ct=="Neil
>>> Gaiman"->
>>>>>>>>>>> fa=true};};
>>>>>>>>>>>      book{ft,fa -> NeilsBook};
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ... or with a BLOCK...
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> BLOCK(book) Book{}{
>>>>>>>>>>>      Document{-> ft = false, fa = false};
>>>>>>>>>>>      a1:Attribute{a1.name=="title", a1.ct=="Norse
Mythology"->
>>>>>>>>>>>
>>>>>>>>>> ft=true};
>>>>>>>>>      a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"->
>>> fa=true};
>>>>>>>>>>>      Document{ft,fa -> NeilsBook};
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> If the order of the attributes is known, you
can avoid the AND
>>> check
>>>>>>>>>> and
>>>>>>>>> just specify a sequential constraint:
>>>>>>>>>>> Book{-> NeilsBook}<-{
>>>>>>>>>>>      a1:Attribute{a1.name=="title", a1.ct=="Norse
Mythology"}
>>>>>>>>>>>      # a2:Attribute{a2.name=="author", a2.ct=="Neil
Gaiman"};
>>>>>>>>>>>      };
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> If you need to check on the complete title with
the URL, you can
>>>>>>>>>>>
>>>>>>>>>> replace
>>>>>>>>> the coveredText comparison with a REGEXP condition.
>>>>>>>>>>> (tested with UIMA Ruta 2.5.0)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Best,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Peter
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Am 21.02.2017 um 13:58 schrieb José Vicente
Moyano Murillo:
>>>>>>>>>>>
>>>>>>>>>>>> Hello everyone
>>>>>>>>>>>>
>>>>>>>>>>>> I'm planning to use RUTA to create some annotations.
But i'm not
>>>>>>>>>>>>
>>>>>>>>>>> able to
>>>>>>>>> accomplish my objective.
>>>>>>>>>>>> This is my case right now:
>>>>>>>>>>>>
>>>>>>>>>>>> I have a text annotated with some annotations
"*Book*".
>>>>>>>>>>>>
>>>>>>>>>>>> Under "*Book*" annotation i have a few annotations
"*Attribute*"
>>>>>>>>>>>> that
>>>>>>>>>>>> stores some information about the book. Each
"*Attribute*" has a
>>>>>>>>>>>>
>>>>>>>>>>> feature
>>>>>>>>> "
>>>>>>>>>>>> *name*" and a feature "*parent*" to its parent
(one "*Book*"
>>>>>>>>>>>>
>>>>>>>>>>> annotation).
>>>>>>>>> And example could be a text with 2 "*Book*" annotations:
>>>>>>>>>>>> "*Book*" annotation number 1 with 3 nested
attributes
>>>>>>>>>>>> 1.- *Attribute* with name feature equals
"title" -> covered
>>> text:
>>>>>>>>>>> "Norse
>>>>>>>>> Mythology
>>>>>>>>>>>> <http://www.barnesandnoble.com/w/norse-mythology-neil-
>>>>>>>>>>>>
>>>>>>>>>>> gaiman/1124023596;jsessionid=FD1D8F9690602616CA59B38CFE9290
>>>>>>>>>>> 06.prodny_store02-atgap08?ean=9780393609097>
>>>>>>>>>>>
>>>>>>>>>>>> "
>>>>>>>>>>>> 2.- *Attribute* with name feature equals
"author" ->  covered
>>> text:
>>>>>>>>>>> "Neil
>>>>>>>>> Gaiman"
>>>>>>>>>>>> 3.- *Attribute* with name feature equals
"language" - > covered
>>>>>>>>>>>> text:
>>>>>>>>>>>> "English"
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> "*Book*" annotation number 2 with 3 nested
attributes
>>>>>>>>>>>> 1.- *Attribute* with name feature equals
"title" -> covered
>>> text:
>>>>>>>>>>> "Never
>>>>>>>>> Never
>>>>>>>>>>>> <http://www.barnesandnoble.com/w/never-never-james-patterson
>>>>>>>>>>>>
>>>>>>>>>>> /1123863634;
>>>>>>>>> jsessionid=FD1D8F9690602616CA59B38CFE929006.prodny_store02-
>>>>>>>>>> atgap08?ean=
>>>>>>>>> 9780316433174>
>>>>>>>>>>>> "
>>>>>>>>>>>> 2.- *Attribute* with name feature equals
"author" ->  covered
>>> text:
>>>>>>>>>>> "James
>>>>>>>>>>>
>>>>>>>>>>>> Patterson"
>>>>>>>>>>>> 3.- *Attribute* with name feature equals
"language" - > covered
>>>>>>>>>>>> text:
>>>>>>>>>>>> "English"
>>>>>>>>>>>>
>>>>>>>>>>>> I need to respect this schema but i have
this question:
>>>>>>>>>>>> It is possible to create and annotation over
a book for a given
>>>>>>>>>>>>
>>>>>>>>>>> author
>>>>>>>>> name
>>>>>>>>>>>> and a given title name?
>>>>>>>>>>>>
>>>>>>>>>>>> Thank's in advance
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>


Mime
View raw message