如何读取包含我不想在Perl中使用Lingua :: Stem的add_exceptions($ exceptions_hash_ref)的词语的可编辑文件?

时间:2012-08-21 20:02:30

标签: perl stemming

我正在使用Perl的Lingua :: Stem模块(Lingua::Stem),我希望有一个文本文件或其他可编辑的文件格式,以包含我不想要阻止的单词列表。我希望能够随时在文件中添加单词。

他们的例子显示:

add_exceptions($exceptions_hash_ref);

这样做的最佳方式是什么?

我在硬编码一些例外中使用了他们的方法,但我想用文件来做这件事。

# adding default exceptions
Lingua::Stem::add_exceptions({ 'emily' => 'emily',
                            'driven' => 'driven',
                        });

2 个答案:

答案 0 :(得分:2)

您可以定义一个函数来加载给定文件中的异常:

sub load_exceptions {
  my $fname = shift;
  my %list;
  open (my $in, "<", $fname) or die("load_exceptions: $fname");
  while (<$in>) {
    chomp;
    $list{$_} = $_; 
  }
  close $in;
  return \%list;
}

并使用它:

Lingua::Stem::add_exceptions(load_exceptions("notstem.txt"));

示例输入文件:

emily 
driven

答案 1 :(得分:1)

假设您的“可编辑”文件是空格分隔的,如下所示:

emily emily
driven driven

您的代码可能是:

open my $fh, "<", "excep.txt" or die $!;
my $href = { map split, <$fh> };
Lingua::Stem::add_exceptions($href);