はじめてのSWIG3 (はてなキーワード抽出とその問題点)
とりあえずデバッグ用に findKeywordsをC++ で作ってみる。
void Hige::findKeywords(char** list, const char* text) { using namespace std; Darts::DoubleArray da; int count = 0; while (list[count]) { count++; } Darts::DoubleArray::result_type r [1024]; size_t size = da.commonPrefixSearch(text, r, sizeof(r), strlen(text)); // このあたりは手抜き for (int i = 0; i < size; i++) { printf("match %s\n", list[r[i]]); } }
いろいろ不恰好なところがありますが、まずは動くものを作ろうということで。
list はキーワードのリスト、textは日記本文です。
Perl側からは、
sub main { my $hige = HatenaSwig::Hige->new; my $wordlist = # ソート済のはてなキーワードの配列リファレンスを得る $hige->findKeywords($wordlist->{keywords}, '電車男ガンダムです'); }
と使います。
さて結果なのですが以下の感じです。
match 電車 match 電車男
はてな的には電車男・ガンダムが抽出されるのが期待されます。
ということなので改善しなければいけない点は
さてそうなると、dartsに手を入れる感じになるのかなぁと悩み中。
なんでガンダムが抽出されないんだろうか?