我正在使用Lingua::StopWords中的以下示例:
use Lingua::StopWords qw( getStopWords );
my $stopwords = getStopWords('en');
my @words = qw( i am the walrus goo goo g'joob );
# prints "walrus goo goo g'joob"
print join ' ', grep { !$stopwords->{$_} } @words;
如何使用我的$document
,删除停用词并将结果打印到文件中?请在此处查看我的代码:
open(FILESOURCE, "sample.txt") or die("Unable to open requested file.");
my $document = <FILESOURCE>;
close (FILESOURCE);
open(TEST, "results_stopwords.txt") or die("Unable to open requested file.");
use Lingua::StopWords qw( getStopWords );
my $stopwords = getStopWords('en');
print join ' ', grep { !$stopwords->{$_} } $document;
我试过这些变化:
print join ' ', grep { !$stopwords->{$_} } TEST;
print TEST join ' ', grep { !$stopwords->{$_} } @words;
基本上,我如何阅读文档,删除停用词然后将结果写入新文件?
答案 0 :(得分:3)
在您的程序中,您忘记将输入文本标记为单词。 Lingua::EN::Splitter::words
的简单替代方法是split
将空格中的一行放入一个单词列表中(大约)。
考虑到tchrist的评论,这个程序适合作为Unix过滤器。
use strictures;
use Lingua::StopWords qw(getStopWords);
use Lingua::EN::Splitter qw(words);
my $stopwords = getStopWords('en');
while (defined(my $line = <>)) {
print join ' ', grep { !$stopwords->{$_} } @{ words $line };
}