[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl-Forum] Complexed perl problem.



Hi Ronald,
I'm very gratefull for your reply.
I'll try to clarify myself a little:

Ronald J Kimball wrote:
> 
> On Sat, May 13, 2000 at 11:21:15AM +0200, Jimmy Lantz wrote:
> > Complexed perl problem.
> >
> > Hi, I have the following problem:
> > I need to do the following operation on a (huge) data file see sample
> > below :
> > Strip the first row of the < & > and print it into a output file
> > then I have to read the the rest of the data and to be able to
> > and put it into a hash ??(if that's the best way to go) and associate
> > the <PRON(pers,sing)> with the value I and <V(montr,pres)> with think
> > and so forth so that I can analyse the values depending on if it's PRON
> > or V or something else.
> 
> Which should be the keys and which should be the values?  How are you
> analyzing the values?
###############################################
The key should be: 
<PRON(pers,sing)> 
And the value should be the word standing in front of the key:

I 
key= <V(montr,pres)>
value= think
I <PRON(pers,sing)> think <V(montr,pres)>

I need to anlyze the contents of the keys to see if they are of a
certain gramatical category ie. <ART(def)> the article is def then I
need to print the def to the outputfile. Then again I need to be able to
analyze if there's a adjective determing a noun the I need the verb. the
below is the output that I require. Hope that helps. 


This is the output that I need:
S1A-001 #2:1:B||indef/def||main||things||I  think the **[main]** things
that I saw as as **[absent]** from disa from work with with disabled
people was ||

That is:
The first row stripped from <&> and the text ICEGB:||the value of the
key ART, if none write NONE || the value of ADJ, if several print new
rows, one row for each ADJ ||if theres a Noun connected to the ADJ print
it else print NONE ||the whole sentence without the keys.||

##############################################
> > The following:
> > **[main <ADJ(ge)>]**
> > is a match and need's to be stripped of the
> > **[ & ]**  and printed to the output file.
> >
> > Everything printed (I need to print more on each row but that I can
> > handle myself) has to be delimited by
> > || (double pipe)
> >
> > Further below is a perlprog that I started to make until I realized that
> > I needed some help.
> >
> > <ICE-GB:S2A-016 #2:1:B>
> > I <PRON(pers,sing)> think <V(montr,pres)> the <ART(def)> **[main
> > <ADJ(ge)>]** things <N(com,plu)> that <PRON(rel)> I <PRON(pers,sing)>
> > saw <V(cxtr,past)> as <PREP(ge)> <,> <PAUSE(short)> as <PREP(ge)>
> > **[absent <ADJ(ge)>]** from <PREP(ge)> disa <UNTAG> from <PREP(ge)> work
> > <N(com,sing)> with <PREP(ge)> with <PREP(ge)> disabled <ADJ(edp)> people
> > <N(com,plu)> was <V(cop,past)>
> 
> How long will each of these blocks between <ICE-GB... be?  It will probably
> be easier to work on a whole block at once, rather than line by line.
##############################

they will be rather the same size gve or take a few numbers...

##################################
> 
> > <ICE-GB:S3A-051 #8:1:A>
> > **[medium <ADJ(ge)>]** speed <N(com,sing)>
> >
> > NB! Data filerows  above can vary in length (see row 2 & 4)
> >
> > #!/usr/bin/perl
> > $faktor1 = "<ICE-GB:";
> > $icedata = "icedata.data";
> >
> > open(FILE, "$icedata");
> 
> Don't forget to check the return values of system calls!
> 
> open(FILE, $icedata) or die "Can't open $icedata: $!\n";
> 
> > while(<FILE>) {
> >       $file = $_;
> >       chomp $file;
> >       if ($file =~ /$faktor1/) {
> >               $file =~ s/$faktor1/ /;
> 
> That part is redundant; you don't need to match twice.
> 
>     if ($file =~ s/$faktor/ /) {
> 
> >               $file =~ s/>/ /;
> >               print "$file\n";
> >       }
> >       elsif ($file !~ /$faktor1/      ){
> 
> That's redundant too; either /$faktor/ matches or it doesn't.
> 
>     } else {
> 
> >       @db_fields = split (/>/, $file);
> >       foreach $field (@db_fields) { print "$field\n"; }
> >       }
> >       else{
> >               print "No match\n";
> 
> This block will never be entered.
> 
> >       }
> > }
> > close(FILE);
> 
> I have some ideas on ways to do this, but I'd like to know the details
> I asked about before I write any code.
> 
> Ronald
######################################
I hope this answers your questions.
Thank you very much for your help !
Your sincerely
Jimmy Lantz
Sweden

==== Want to unsubscribe from this list?
==== Send mail with body "unsubscribe" to macperl-forum-request@macperl.org