پروژه: پردازش متن
شمارش کلمات، فرکانس با هش و آمار متن — قلمرو اصلی پرل!
پروژه ۴: پردازش متن 📝
این پروژه در قلمرو اصلی پرل است — پردازش متن!
کد کامل
sub word_count {
my ($text) = @_;
my @words = ($text =~ /\w+/g); { استخراج همه کلمات }
return scalar @words;
}
sub word_freq {
my ($text) = @_;
my %freq;
$freq{lc($_)}++ foreach ($text =~ /\w+/g);
return %freq;
}
sub top_words {
my ($text, $n) = @_;
my %freq = word_freq($text);
return (sort { $freq{$b} <=> $freq{$a} } keys %freq)[0..$n-1];
}
my $text = "the quick brown fox jumps over the lazy dog the fox runs";
say "تعداد کلمات: " . word_count($text);
my %freq = word_freq($text);
say "--- فرکانس (مرتب) ---";
foreach my $w (sort { $freq{$b} <=> $freq{$a} || $a cmp $b } keys %freq) {
say "$w: $freq{$w}" if $freq{$w} > 1;
}
say "--- ۳ کلمه پرتکرار ---";
say join(", ", top_words($text, 3));
مفاهیم بهکاررفته
| مفهوم | کجا؟ |
|---|---|
| regex با g | استخراج همه کلمات |
| الگوی شمارش با هش | $freq{$_}++ |
| sort چندسطحی | فرکانس بعد الفبایی |
| برش لیست | [0..$n-1] |
چالشهای تکمیلی
- حذف stop words (the, a, is...)
- شمارش جملات با نقطه
- میانگین طول کلمات
این مبحث بخشی از دوره آموزش کامل پرل است.