Drkcore

13 01 2007 HyperEstraier Tweet

Lingua::JA::Summarizeの特徴語をHyper Estraierで検索

Lingua::JA::Summarizeで特徴語を抽出して、Hyper Estraierでblosxomのデータを検索するということをやってみた。

抽出された語彙は単にOR検索しているので、精度があんまよくない。

use strict;
use warnings;
use Estraier;
use Lingua::JA::Summarize;

my $entry = << '__DDD__';
文章をここへ
__DDD__

my $s = Lingua::JA::Summarize->new;
$s->analyze($entry);
my @keywords = $s->keywords({ minwords => 3, maxwords => 5});

my $query_keywords = join(" OR ", @keywords);

print $query_keywords;

my $db = new Database();

# open the database
unless($db->open("/usr/local/blosxom/casket", Database::DBREADER)){
  printf("error: %s\n", $db->err_msg($db->error()));
  exit;
}

my $cond = new Condition();
$cond->set_phrase($query_keywords);
$cond->set_max(5);
$cond->add_attr('@uri ISTREW .txt');

my $result = $db->search($cond);

my $dnum = $result->doc_num();
foreach my $i (0..$dnum-1){
  my $doc = $db->get_doc($result->get_doc_id($i), 0);
  next unless(defined($doc));
  my $uri = $doc->attr('@uri');
  printf("URI: %s\n", $uri) if defined($uri);
  my $title = $doc->attr('@title');
  printf("Title: %s\n", $title) if defined($title);
  # display the body text
#  my $texts = $doc->texts();
#  foreach my $text (@$texts){
#    printf("%s\n", $text);
#  }
}

unless($db->close()){
  printf("error: %s\n", $db->err_msg($db->error()));
}

文書の類似性検索だったら文書をHyper Estraierに登録してから、類似度検索をかければいいのかも。estseek.cgiのsimilar検索みたいのがやりたいんだけど。Hyper Estraierのドキュメントをちゃんと読まねば。

追記 07.01.13

類似性検索できるようにしてみた。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021