【发布时间】:2016-02-23 18:36:49
【问题描述】:
我有两个哈希:
1) %redundant_text 将文档中关键短语的起始位置作为哈希键,以每个关键短语的长度作为值。
2) %itter_w 将文档中每个单词的序号作为其键(1、2、3 等),对应的单词作为每个键的值。
我想通过从 %itter_w 中提取分配给由 %redundant_text 散列的元素确定的开始位置和结束位置之间的键的所有值(单词)来从文档中创建一个关键短语数组。下面的代码成功地做到了这一点,但是非常非常慢。关于如何构建此代码以最大限度地提高输出生成过程的速度的任何想法?
my @redundant_text ;
my @all_redundant_text ;
foreach my $key (keys %redundant_text) {
my $start_position = $key ;
my $end_position = $key + $redundant_text{$key}+10 ;
foreach my $word (sort {$a<=>$b} keys %itter_w) {
next if (($word < $start_position)||($word>$end_position)) ;
push (@redundant_text, $itter_w{$word})
}
### Blanking out the redundant text array. ###
my $redundant_sequence = join(' ', @redundant_text) ;
@redundant_text = () ;
push (@all_redundant_text, $redundant_sequence) ;
}
【问题讨论】:
-
我不完全遵循您正在尝试做的事情,但您的方式似乎非常复杂。你能准确地解释什么你想做什么而不是你想怎么做吗?
-
不确定我是否理解正确,但如果
itter_w在其位置上包含keyed的每个单词,那么数组不应该比itter_w的散列更适合 -
您能否为
%redundant_text和%itter_w提供一个合理的值。 -
我想在文档中创建一组关键短语,其中“关键短语”是根据它们是否包含在文本中其他地方找到的冗余术语来识别的。所以我有一个哈希(%redundant_text),其中每个元素的形式为(x,y),其中 x 是文档中的第 n 个单词(要提取的冗余短语的起点),y 本质上是冗余短语中的单词。我正在使用这两个数据点来识别要提取的原始文档中的单词序列。