テキスト・マイニング/MacでHyper Estraierを使う
をテンプレートにして作成
開始行:
*はじめに [#n2077ef0]
「[[Hyper Estraier:http://hyperestraier.sourceforge.net/]...
次の環境で確認しました.
-Mac OS X 10.6.1
-MeCab 0.98
-zlib 1.2.3
-QDBM 1.8.77
-Hyper Estraier 1.4.13
*必要なもの [#k36b188a]
-make
-gcc
-zlib
-QDBM
-MeCab
MeCabはなくてもかまいません.
MeCabのダウンロードとインストールについては「[[MacでMeCab...
*ダウンロード [#c3d28457]
**zlib [#mfc79129]
-zlib Home Site~
http://www.zlib.net/
current releaseのtar.gz formatのところにある「US (www.zli...
**QDBM [#w73b6986]
-QDBM: Quick Database Manager~
http://qdbm.sourceforge.net/
ダウンロードのところにある「最新のソース・パッケージ(バ...
**Hyper Estraier [#o51619f7]
-全文検索システム Hyper Estraier~
http://hyperestraier.sourceforge.net/
ダウンロードのところにある「最新のソース・パッケージ(バ...
*インストール [#s087a8ce]
**zlib [#kafab7bc]
ダウンロードした''zlib-1.2.3.tar.gz''をダブル・クリックし...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure
make
sudo make install
}}
**QDBM [#l2955f6b]
ダウンロードした''qbdm-1.8.77.tar.gz''をダブル・クリック...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure --enable-zlib
make mac
make check-mac
sudo make install-mac
}}
**Hyper Estraier [#u0e7cf55]
ダウンロードした''hyperestraier-1.4.13.tar.gz''をダブル・...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure --enable-zlib --enable-mecab
make mac
make check-mac
sudo make install-mac
}}
MeCabを使わない場合は''--enable-mecab''を省略します.
Yosemite (10.10) だと
#geshi(bash){{
ld: symbol(s) not found for architecture x86_64
}}
というエラーが出てコンパイル(正確にはコンパイル後のリン...
そこで,configureした後にMakefileの
#geshi(bash){{
LIBS = -lqdbm -lz -liconv -lm -lc
}}
の行の最後に -stdlib=libstdc++ を追加し,
#geshi(bash){{
LIBS = -lqdbm -lz -liconv -lm -lc -stdlib=libstdc++
}}
としたらコンパイルできました.
*使い方 [#hd679b45]
**インデックスの作成 [#q031c24c]
#geshi(bash){{
estcmd create -acc -xs index
}}
''-acc''でN-gramの替わりに形態素解析を使用,''-xs''で文書...
**文書の追加 [#dc17b0c6]
#geshi(bash){{
estcmd gather -ft -il ja -lt -1 -um index path
}}
''-ft''でプレーン・テキストを指定,''-il ja''で日本語を指...
**インデックスの最適化 [#g4f98501]
#geshi(bash){{
estcmd optimize index
}}
**文書の検索 [#t9c59887]
#geshi(bash){{
estcmd search -vh index '検索 OR search'
}}
''-vh''でスニペット付きの見やすい形で表示,''index''でイ...
*Xcodeによるプログラミング [#m17bc986]
「[[プログラミング・ガイド:http://hyperestraier.sourcefor...
新規プロジェクトを「''Application''」の「''Command Line T...
プロジェクトを選択して「情報」を開き,「ビルド」の「ライ...
プログラミング・ガイドには「-lnsl」も必要と書いてあります...
実行可能ファイルを選択して「情報」を開き,インデックスが...
*検索スコアを取得する [#u4c29d10]
検索スコアを取得するプログラムを作成しました.
#geshi(c){{
/*
* search.c
* search for Hyper Estraier
*
*
* ./search NAME QUERY
*
* NAME インデックス名
* QUERY クエリー
*
*
* Created by Tohgoroh Matsui on 2011.05.16
*/
#include <estraier.h>
#include <stdio.h>
#include <string.h>
int main (int argc, const char * argv[]) {
const char *name = argv[1]; // インデックス名
const char *query = argv[2]; // クエリー
ESTDB *db;
ESTCOND *cond;
int ecode, *res, num;
int i;
if (!(db = est_db_open(name, ESTDBREADER, &ecode))) {
fprintf(stderr, "Error: %s\n", est_err_msg(ecode));
return 1;
}
cond = est_cond_new(); // 検索条件
est_cond_set_phrase(cond, query); // クエリー
est_cond_set_options(cond, ESTCONDSCFB); // スコア取...
res = est_db_search(db, cond, &num, NULL); // 検索
for (i = 0; i < num; i++) {
// 検索された文書のidとスコアを表示
printf("%d, %d\n", res[i], est_cond_score(cond, i));
}
est_cond_delete(cond);
free(res);
if (!est_db_close(db, &ecode)) {
fprintf(stderr, "Error: %s\n", est_err_msg(ecode));
return 1;
}
return 0;
}
}}
検索スコアを取得するには,検索を実行する前に検索条件にEST...
*参考文献 [#b2d49996]
-[[Hyper Estraierの設計と実装:http://www.slideshare.net/r...
-[[Hyper Estraierプログラミング・ガイド:http://fallabs.co...
終了行:
*はじめに [#n2077ef0]
「[[Hyper Estraier:http://hyperestraier.sourceforge.net/]...
次の環境で確認しました.
-Mac OS X 10.6.1
-MeCab 0.98
-zlib 1.2.3
-QDBM 1.8.77
-Hyper Estraier 1.4.13
*必要なもの [#k36b188a]
-make
-gcc
-zlib
-QDBM
-MeCab
MeCabはなくてもかまいません.
MeCabのダウンロードとインストールについては「[[MacでMeCab...
*ダウンロード [#c3d28457]
**zlib [#mfc79129]
-zlib Home Site~
http://www.zlib.net/
current releaseのtar.gz formatのところにある「US (www.zli...
**QDBM [#w73b6986]
-QDBM: Quick Database Manager~
http://qdbm.sourceforge.net/
ダウンロードのところにある「最新のソース・パッケージ(バ...
**Hyper Estraier [#o51619f7]
-全文検索システム Hyper Estraier~
http://hyperestraier.sourceforge.net/
ダウンロードのところにある「最新のソース・パッケージ(バ...
*インストール [#s087a8ce]
**zlib [#kafab7bc]
ダウンロードした''zlib-1.2.3.tar.gz''をダブル・クリックし...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure
make
sudo make install
}}
**QDBM [#l2955f6b]
ダウンロードした''qbdm-1.8.77.tar.gz''をダブル・クリック...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure --enable-zlib
make mac
make check-mac
sudo make install-mac
}}
**Hyper Estraier [#u0e7cf55]
ダウンロードした''hyperestraier-1.4.13.tar.gz''をダブル・...
ターミナルを起動して展開されたディレクトリーに移動し,次...
#geshi(bash){{
./configure --enable-zlib --enable-mecab
make mac
make check-mac
sudo make install-mac
}}
MeCabを使わない場合は''--enable-mecab''を省略します.
Yosemite (10.10) だと
#geshi(bash){{
ld: symbol(s) not found for architecture x86_64
}}
というエラーが出てコンパイル(正確にはコンパイル後のリン...
そこで,configureした後にMakefileの
#geshi(bash){{
LIBS = -lqdbm -lz -liconv -lm -lc
}}
の行の最後に -stdlib=libstdc++ を追加し,
#geshi(bash){{
LIBS = -lqdbm -lz -liconv -lm -lc -stdlib=libstdc++
}}
としたらコンパイルできました.
*使い方 [#hd679b45]
**インデックスの作成 [#q031c24c]
#geshi(bash){{
estcmd create -acc -xs index
}}
''-acc''でN-gramの替わりに形態素解析を使用,''-xs''で文書...
**文書の追加 [#dc17b0c6]
#geshi(bash){{
estcmd gather -ft -il ja -lt -1 -um index path
}}
''-ft''でプレーン・テキストを指定,''-il ja''で日本語を指...
**インデックスの最適化 [#g4f98501]
#geshi(bash){{
estcmd optimize index
}}
**文書の検索 [#t9c59887]
#geshi(bash){{
estcmd search -vh index '検索 OR search'
}}
''-vh''でスニペット付きの見やすい形で表示,''index''でイ...
*Xcodeによるプログラミング [#m17bc986]
「[[プログラミング・ガイド:http://hyperestraier.sourcefor...
新規プロジェクトを「''Application''」の「''Command Line T...
プロジェクトを選択して「情報」を開き,「ビルド」の「ライ...
プログラミング・ガイドには「-lnsl」も必要と書いてあります...
実行可能ファイルを選択して「情報」を開き,インデックスが...
*検索スコアを取得する [#u4c29d10]
検索スコアを取得するプログラムを作成しました.
#geshi(c){{
/*
* search.c
* search for Hyper Estraier
*
*
* ./search NAME QUERY
*
* NAME インデックス名
* QUERY クエリー
*
*
* Created by Tohgoroh Matsui on 2011.05.16
*/
#include <estraier.h>
#include <stdio.h>
#include <string.h>
int main (int argc, const char * argv[]) {
const char *name = argv[1]; // インデックス名
const char *query = argv[2]; // クエリー
ESTDB *db;
ESTCOND *cond;
int ecode, *res, num;
int i;
if (!(db = est_db_open(name, ESTDBREADER, &ecode))) {
fprintf(stderr, "Error: %s\n", est_err_msg(ecode));
return 1;
}
cond = est_cond_new(); // 検索条件
est_cond_set_phrase(cond, query); // クエリー
est_cond_set_options(cond, ESTCONDSCFB); // スコア取...
res = est_db_search(db, cond, &num, NULL); // 検索
for (i = 0; i < num; i++) {
// 検索された文書のidとスコアを表示
printf("%d, %d\n", res[i], est_cond_score(cond, i));
}
est_cond_delete(cond);
free(res);
if (!est_db_close(db, &ecode)) {
fprintf(stderr, "Error: %s\n", est_err_msg(ecode));
return 1;
}
return 0;
}
}}
検索スコアを取得するには,検索を実行する前に検索条件にEST...
*参考文献 [#b2d49996]
-[[Hyper Estraierの設計と実装:http://www.slideshare.net/r...
-[[Hyper Estraierプログラミング・ガイド:http://fallabs.co...
ページ名: