加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl段落n-gram

发布时间:2020-12-15 21:47:40 所属栏目:大数据 来源:网络整理
导读:假设我有一个文字句子: $body = 'the quick brown fox jumps over the lazy dog'; 我想把这句话变成’关键词’的哈希值,但我想允许多词关键词;我有以下内容来获取单字关键字: $words{$_}++ for $body =~ m/(w+)/g; 完成后,我有一个如下所示的哈希: 'the'
假设我有一个文字句子:
$body = 'the quick brown fox jumps over the lazy dog';

我想把这句话变成’关键词’的哈希值,但我想允许多词关键词;我有以下内容来获取单字关键字:

$words{$_}++ for $body =~ m/(w+)/g;

完成后,我有一个如下所示的哈希:

'the' => 2,'quick' => 1,'brown' => 1,'fox' => 1,'jumps' => 1,'over' => 1,'lazy' => 1,'dog' => 1

下一步,以便我可以获得双字关键字,如下所示:

$words{$_}++ for $body =~ m/(w+ w+)/g;

但这只会得到每一个“其他”对;看起来像这样:

'the quick' => 1,'brown fox' => 1,'jumps over' => 1,'the lazy' => 1

我还需要一个字偏移量:

'quick brown' => 1,'fox jumps' => 1,'over the' => 1

有没有比以下更容易的方法?

my $orig_body = $body;
# single word keywords
$words{$_}++ for $body =~ m/(w+)/g;
# double word keywords
$words{$_}++ for $body =~ m/(w+ w+)/g;
$body =~ s/^(w+)//;
$words{$_}++ for $body =~ m/(w+ w+)/g;
$body = $orig_body;
# triple word keywords
$words{$_}++ for $body =~ m/(w+ w+ w+)/g;
$body =~ s/^(w+)//;
$words{$_}++ for $body =~ m/(w+ w+ w+)/g;
$body = $orig_body;
$body =~ s/^(w+ w+)//;
$words{$_}++ for $body =~ m/(w+ w+ w+)/g;

解决方法

虽然所描述的任务可能对手动编码很有意义,
使用处理n-gram的现有CPAN模块不是更好吗?看起来像 Text::Ngrams(而不是 Text::Ngram)可以处理基于单词的n-gram分析.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读