version 1.17, 2001/12/17 14:16:35
|
version 1.20, 2001/12/25 21:02:35
|
Line 28
|
Line 28
|
# YEAR=2001 |
# YEAR=2001 |
# 2/13-12/7 Guy Albertelli |
# 2/13-12/7 Guy Albertelli |
# 12/11,12/12,12/17 Scott Harrison |
# 12/11,12/12,12/17 Scott Harrison |
|
# 12/21 Gerd Kortemeyer |
|
# 12/21 Scott Harrison |
|
# 12/25 Gerd Kortemeyer |
|
|
# Makes a table out of the previous attempts |
# Makes a table out of the previous attempts |
# Inputs result_from_symbread, user, domain, course_id |
# Inputs result_from_symbread, user, domain, course_id |
Line 40 use POSIX qw(strftime);
|
Line 43 use POSIX qw(strftime);
|
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::lonmsg(); |
use Apache::lonmsg(); |
|
|
|
# ----------------------------------------------- Filetypes/Languages/Copyright |
my %language; |
my %language; |
my %cprtag; |
my %cprtag; |
my %fe; my %fd; |
my %fe; my %fd; |
my %fc; |
my %fc; |
|
|
|
# -------------------------------------------------------------- Thesaurus data |
|
my @therelated=(); |
|
my @theword=(); |
|
my @thecount=(); |
|
my %theindex=(); |
|
my $thetotalcount=0; |
|
my $thefuzzy=2; |
|
my $thethreshold=0.1/$thefuzzy; |
|
my $theavecount; |
|
|
# ----------------------------------------------------------------------- BEGIN |
# ----------------------------------------------------------------------- BEGIN |
sub BEGIN { |
BEGIN { |
# ------------------------------------------------------------------- languages |
# ------------------------------------------------------------------- languages |
{ |
{ |
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. |
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. |
Line 102 sub BEGIN {
|
Line 116 sub BEGIN {
|
} |
} |
} |
} |
} |
} |
|
# -------------------------------------------------------------- Thesaurus data |
|
{ |
|
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. |
|
'/thesaurus.dat'); |
|
if ($fh) { |
|
while (<$fh>) { |
|
my ($tword,$tindex,$tcount,$trelated)=split(/\@/,$_); |
|
$theindex{$tword}=$tindex; |
|
$theword[$tindex]=$tword; |
|
$thecount[$tindex]=$tcount; |
|
$thetotalcount+=$tcount; |
|
$therelated[$tindex]=$trelated; |
|
} |
|
} |
|
$theavecount=$thetotalcount/$#thecount; |
|
} |
|
} |
|
# ============================================================= END BEGIN BLOCK |
|
|
|
|
|
# ---------------------------------------------------------- Is this a keyword? |
|
|
|
sub keyword { |
|
my $newword=shift; |
|
$newword=~s/\W//g; |
|
$newword=~tr/A-Z/a-z/; |
|
my $tindex=$theindex{$newword}; |
|
if ($tindex) { |
|
if ($thecount[$tindex]>$theavecount) { |
|
return 1; |
|
} |
|
} |
|
return 0; |
|
} |
|
# -------------------------------------------------------- Return related words |
|
|
|
sub related { |
|
my $newword=shift; |
|
$newword=~s/\W//g; |
|
$newword=~tr/A-Z/a-z/; |
|
my $tindex=$theindex{$newword}; |
|
if ($tindex) { |
|
my %found=(); |
|
foreach (split(/\,/,$therelated[$tindex])) { |
|
# - Related word found |
|
my ($ridx,$rcount)=split(/\:/,$_); |
|
# - Direct relation index |
|
my $directrel=$rcount/$thecount[$tindex]; |
|
if ($directrel>$thethreshold) { |
|
foreach (split(/\,/,$therelated[$ridx])) { |
|
my ($rridx,$rrcount)=split(/\:/,$_); |
|
if ($rridx==$tindex) { |
|
# - Determine reverse relation index |
|
my $revrel=$rrcount/$thecount[$ridx]; |
|
# - Calculate full index |
|
$found{$ridx}=$directrel*$revrel; |
|
if ($found{$ridx}>$thethreshold) { |
|
foreach (split(/\,/,$therelated[$ridx])) { |
|
my ($rrridx,$rrrcount)=split(/\:/,$_); |
|
unless ($found{$rrridx}) { |
|
my $revrevrel=$rrrcount/$thecount[$ridx]; |
|
if ( |
|
$directrel*$revrel*$revrevrel>$thethreshold |
|
) { |
|
$found{$rrridx}= |
|
$directrel*$revrel*$revrevrel; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return (); |
} |
} |
|
|
# ---------------------------------------------------------------- Language IDs |
# ---------------------------------------------------------------- Language IDs |
Line 165 sub get_previous_attempt {
|
Line 255 sub get_previous_attempt {
|
my %lasthash=(); |
my %lasthash=(); |
my $version; |
my $version; |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
map { |
foreach (sort(split(/\:/,$returnhash{$version.':keys'}))) { |
$lasthash{$_}=$returnhash{$version.':'.$_}; |
$lasthash{$_}=$returnhash{$version.':'.$_}; |
} sort(split(/\:/,$returnhash{$version.':keys'})); |
} |
} |
} |
$prevattempts='<table border=2></tr><th>History</th>'; |
$prevattempts='<table border=2></tr><th>History</th>'; |
foreach (sort(keys %lasthash)) { |
foreach (sort(keys %lasthash)) { |