Your verb show needs a y in it.

   show=: verb define
<: #/.~&> y
)
   show supertrig
|noun result was required: show
|       <:#/.~&>
   $trig
2
   show=: verb define
<: #/.~&> y
)
   show supertrig
1 1 1 1 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1

On Sat, Oct 12, 2019 at 12:23 PM 'Jim Russell' via Programming <
programm...@jsoftware.com> wrote:

> Genius! I tried (and failed) to convert your reply to a script on my
> iPhone:
>
> X=:'Now is the time for all good men to come ti'
> Y=: 'Now is the time for the quick brown good men to come ti'
> trig=: 3,\&.> X;Y
> NB. Get the nub of the union of both sets of trigrams and prepend it to
> each trigram set.
> supertrig=: (,~&.> <@~.@;) trig
> NB. Now we can use Key to count the trigrams in each set and decrement by
> 1 (for the extra  copy that we added).
>
> show=: verb define
> <: #/.~&>
> )
> show supertrig
>
> It almost worked, in particular your code did (j701):
>    load'~/user/ric.ijs'
> |syntax error: show
> |       show supertrig
> |[-11] /j/user/ric.ijs
>    supertrig
> +---+---+
> |Now|Now|
> |ow |ow |
> |w i|w i|
> | is| is|
> |is |is |
> |s t|s t|
> | th| th|
> |the|the|
> |he |he |
> |e t|e t|
> | ti| ti|
> |tim|tim|
>
> . Clip...
>
> |   |to |
> |   |o c|
> |   | co|
> |   |com|
> |   |ome|
> |   |me |
> |   |e t|
> |   | ti|
> +---+---+
>    show
> 3 : '<: #/.~&>'
>
>    <: #/.~&> supertrig
> 1 1 1 1 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>
>
> > On Oct 12, 2019, at 1:22 AM, Ric Sherlock <tikk...@gmail.com> wrote:
> >
> > Here's one approach...
> >
> > I find it much easier to work with if there is actual data. The following
> > may not be representative of your data but it gives us somewhere to
> start.
> >
> >  ]'X Y'=: 'actg' {~ 2 30 ?@$ 4
> >
> > ggtaaaatgactgtagtgaagaaggagtcc
> >
> > ctgattaaggttcggtgtcgataccgcgca
> >
> >
> > We now have 2 strings X and Y. Let's obtain the trigrams for each string
> >
> > trig=: 3,\&.> X;Y Get the nub of the union of both sets of trigrams and
> > prepend it to each trigram set. supertrig=: (,~&.> <@~.@;) trig Now we
> can
> > use Key to count the trigrams in each set and decrement by 1 (for the
> extra
> > copy that we added). <: #/.~&> supertrig
> >
> > 1 2 1 2 1 1 2 1 1 1 1 1 2 1 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> >
> > 2 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 2 1 1 1 1 2 1 1 1 1 1 1 2 1 1
> >
> > Or to summarise by trigram:
> >
> > (~.@; trig);|: <: #/.~&> supertrig
> >
> > +---+---+
> >
> > |ggt|1 2|
> >
> > |gta|2 0|
> >
> > |taa|1 1|
> >
> > |aaa|2 0|
> >
> > |aat|1 0|
> >
> > |atg|1 0|
> >
> > |tga|2 1|
> >
> > |gac|1 0|
> >
> > |act|1 0|
> >
> > |ctg|1 1|
> >
> > |tgt|1 1|
> >
> > |tag|1 0|
> >
> > |agt|2 0|
> >
> > |gtg|1 1|
> >
> > |gaa|2 0|
> >
> > |aag|2 1|
> >
> > |aga|1 0|
> >
> > |agg|1 1|
> >
> > |gga|1 0|
> >
> > |gag|1 0|
> >
> > |gtc|1 1|
> >
> > |tcc|1 0|
> >
> > |gat|0 2|
> >
> > |att|0 1|
> >
> > |tta|0 1|
> >
> > |gtt|0 1|
> >
> > |ttc|0 1|
> >
> > |tcg|0 2|
> >
> > |cgg|0 1|
> >
> > |cga|0 1|
> >
> > |ata|0 1|
> >
> > |tac|0 1|
> >
> > |acc|0 1|
> >
> > |ccg|0 1|
> >
> > |cgc|0 2|
> >
> > |gcg|0 1|
> >
> > |gca|0 1|
> >
> > +---+---+
> >
> >
> >> On Sat, Oct 12, 2019 at 4:40 PM 'Jim Russell' via Programming <
> >> programm...@jsoftware.com> wrote:
> >>
> >> Sure, thanks. I'm working to re-implement a text comparison program I
> did
> >> using VBA & Microsoft Access a number of years back.
> >>
> >> The object is to compare two text documents and see how similar one is
> to
> >> the other by  comparing the number of unique trigrams that are found in
> >> each.
> >> For each text string a table of trigrams is constructed with the
> >> expression 3,\x. The resulting table of 3-character samples m is then
> >> tallied using #/.~m . This yields a vector of counts of each unique
> trigram
> >> corresponding to (an unseen) nub of m. The count, and a copy of the nub
> of
> >> m, represent a summary of the text in string x.
> >> This same process then repeated to creat a smry for the second string,
> y.
> >>
> >> The next step in the process is to assign a score of 0 to 1 based on a
> >> comparison of the two string summaries. It would seem sensible to
> compare
> >> the nub of the two text strings to each other. What is the difference in
> >> counts between the trigrams they have in common, and how many trigram
> hits
> >> for each are unique?
> >> That is where using nub1 #/. nub2 would be attractive, were it not
> >> required that the arguments had the same row counts, and Key could not
> >> count unmatched rows.
> >>
> >> As it stands, I fear I am duplicating effort to find the nubs in
> preparing
> >> the summaries, and again if I have to use i. to calculate the scores.
> If I
> >> get a vector result when I use key on vectors, might I expect a table
> >> result (including the counts and the nub) when key is applied to tables?
> >>
> >> Or is there a more appropriate approach? (In access and VBA, I used
> >> dictionary objects with 3 character keys, as I recall. But I was very
> >> pleasantly surprised at how well the 3 character trigrams recognized
> text
> >> similarities.)
> >>
> >> I really appreciate any insights you might have, Ric, and thanks for
> >> tolerating my ignorance.
> >>
> >>>> On Oct 11, 2019, at 10:23 PM, Ric Sherlock <tikk...@gmail.com> wrote:
> >>>
> >>> Not sure I'm understanding your questions. Maybe including some of the
> >>> expressions you've tried to illustrate your points would help?
> >>
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>


-- 
(B=) <-----my sig
Brian Schott
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to