err0r.net


<my little piece of the internet/>

Words Frequencies

Submitted by err0r Friday, 1 August 2025, 10:20 AM IRC

Description: Word frequency check using hash table in mirc.

Author gennarino

Words Frequencies using hash table!

I wrote this script to check hash tables. Copy the source in your script editor and you get a new menu tab called Words.

The Top10 and Bottom10 aliases where taken from the official mirc documentation



    ;
    ; Collects words and frequencies
    ; 
    ;                    By gennarino
    ;
    ; Creates Hash table Words => Frequencies
    ;
    On *:Start:{
      if (!$hget(Words)) { hmake Words 1000 }
      if ($isfile($scriptdir/Words.hsh)) { hload  Words $scriptdir/Words.hsh }
    }

    On *:Exit: { if ($hget(Words)) { hsave Words $scriptdir/Words.hsh } }
    On *:Disconnect: { if ($hget(Words)) { hsave Words $scriptdir/Words.hsh } }

    ;End Hash Table handler

    on *:TEXT:*:#: {
      if ( http isin $1- ) halt   ; skips sentences containing links
      var %sentence = $replace($1-,?,$chr(32),.,$chr(32),!,$chr(32),",$chr(32),',$chr(32),$chr(44),$chr(32),:,$chr(32))
      var %Lengn = 0

      var %k = 1
      var %aw = $NULL
      tokenize 32 %sentence
      while (  %k <= $0 ) { 
        %aw  = $ [ $+ [ %k ] ]
        %Lengn = $len(%aw)
        if (%Lengn > 3) {             ; Accept only words greater than %LengM
          if ($hget(Words,%aw)) { hinc Words %aw }
          else { hadd Words %aw 1 }
        }
        inc %k
      }
    }

    menu * {
      -
      ?  --- Words --> 
      .-
      .Save Hash Table: .hsave Words $scriptdir/Words.hsh
      .Save Ini File: .hsave -i Words $scriptdir/Words.ini
      .Show Top10: .top10
      .Show Bottom10: .bottom10
      .Print All: .print_All_Words 
      .-
    }

    Alias print_All_Words {
      var %i = 1
      echo -a Words Table:
      ; iterate over each item
      while ($hget(Words, %i).item) {
        echo -a %i $+ ) $v1 => $hget(Words, $v1)
        inc %i
      }
    }

    alias top10 {
      hsave -no Words top10.txt
      filter -ffcteun 1 32 top10.txt top10.txt
      var %i = 1 | while (%i <= 10) {
        var %top10.item = $hget(Words,$gettok($read(top10.txt,nt,%i),1,32)).item
        set %top10 %top10 %top10.item  ( $+ $hget(Words,%top10.item) $+ )
        inc %i
      }
      echo -a TOP 10: $replace(%top10,$chr(32),$+($chr(44),$chr(32)))
      unset %top10
    }

    alias bottom10 {
      hsave -no Words bottom10.txt
      filter -ffctun 1 32 bottom10.txt bottom10.txt
      var %i = 1 | while (%i <= 10) {
        var %bottom10.item = $hget(Words,$gettok($read(bottom10.txt,nt,%i),1,32)).item
        set %bottom10 %bottom10 %bottom10.item ( $+ $hget(Words,%bottom10.item) $+ )
        inc %i
      }
      echo -a BOTTOM 10: $replace(%bottom10,$chr(32),$+($chr(44),$chr(32)))
      unset %bottom10
    }





Submitted By: err0r
Date Added: Friday, 1 August 2025, 10:20 AM
Views: 323