はじめての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に手を入れる感じになるのかなぁと悩み中。
なんでガンダムが抽出されないんだろうか?