پروژه: پردازش متن

شمارش کلمات، فرکانس با هش و آمار متن — قلمرو اصلی پرل!

پروژه ۴: پردازش متن 📝

این پروژه در قلمرو اصلی پرل است — پردازش متن!

کد کامل

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]

چالش‌های تکمیلی

  1. حذف stop words (the, a, is...)
  2. شمارش جملات با نقطه
  3. میانگین طول کلمات

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط