1

ファイルが読み込まれ、配列に変更され、カウントされてハッシュテーブルに入れられます。次に、ストップ ワードを含む別のファイルを配列に読み込みます。ストップ ワードの配列を取得してハッシュ テーブルと比較し、ストップ ワードの単語が一致する場合は、それをハッシュ テーブルから削除します。

perlを使用してこれを達成するためにどのような方法ができるか興味があります。他の人に私のコードを書いてもらうことを控えているので、私は自分のコードを投稿しません。どうすればこれに取り組むことができるか知りたいだけです。誰かが良いウェブサイトを持っていれば、それを参考にすることができます.

4

3 に答える 3

3

これを試して:

my %table = some_sub_to_populate_table();
my @stop_words = some_sub_to_get_stopwords();
for my $stop_word ( @stop_words ) {
    delete $table{ $stop_word };
}
于 2012-11-19T15:08:50.983 に答える
1

これもうまくいくはずです

open FH,"<".$PATH or die $!;
my $table={};
while(<FH>){
    $table->{$_}=VALUE
}
close FH;
open FH,"<".$PATH2 or die $!;
my @arr=<FH>;
close $FH;
delete $table{$_} foreach(@arr);

よろしく

于 2012-11-19T15:14:50.860 に答える
1

最初は単純なループ ソリューションを使用しますが、それを行う他の方法にも興味があります。多分あなたはこれを試すことができますか?

my %new_table = map { $_ => $old_table{$_} } grep { not $_ ~~ @stop_words } keys %old_table;

1: grepを使用して @stop_words にないすべてのハッシュ キーを取得します。

grep { not $_ ~~ @stop_words } keys %old_table;

2:これらのキーを使用して、 mapを使用して新しいハッシュを作成します。

my %new_table = map { $_ => $old_table{$_} }

それらを配列に変換する場合は、Array::Utilsの array_minus を使用できます。

于 2012-11-20T10:39:25.400 に答える