RCaBoCha_make
_ CaBocha? は 0.60 以降でないと動かない.
ここからダウンロードして,インストールしましょう.
_ Windows版の場合
CaBoCha\bin フォルダの libcabocha.lib からライブラリファイルを次のように作成する必要はなかった.
> C: \Rtools\minGW\bin\pexports.exe libcabocha.dll > libcabocha.def
> C: \Rtools\minGW\bin\dlltool --input-def libcabocha.def
--output-lib libcabocha.lib
ということは,libmecab.dll でも,これは実行しなかったのかな.R.dll だけ実行したのだろうか.
_ CaBoCha Checkでキャスト
#define CHECK(eval) if (! eval) { \
fprintf (stderr, "Exception:%s\n", cabocha_strerror(cabocha)); \
cabocha_destroy(cabocha); \
return (SEXP) -1; }
を忘れてはいけない.
_ まとまった節を文を単位に区切る.
こうするしかないのだろうか?
#define DELIMITER L" ,、。!?.!?" /* 区切り文字 */
...
setlocale(LC_ALL, "");
wchar_t *endptr = NULL;
...
mbstowcs(wbuf, p, 100);
sentences = wcstok(wbuf, DELIMITER, &endptr);
while(sentences != NULL){
wcstombs(str,sentences, 100);
tree = const_cast<cabocha_tree_t*>
(cabocha_sparse_totree(cabocha, str) );
CHECK(tree);
size = cabocha_tree_token_size(tree);
cid = 0;
for (i = 0; i < size; ++i) {
const cabocha_token_t *token
= cabocha_tree_token(tree, i);
if (token->chunk != NULL){
cid++;
linkN = token->chunk->link;
}
strcpy(buf1, token->feature);
node = strtok(buf1, ",");
j = 1;
while(node != NULL){
...
_ wcstok は UTF-8で
ということらしいので,Windows版では CPP ソースファイルだけUTF-8にした.従って,コード内に日本語文字をハードコーディングできない.R から引数で渡すしかない.
Link: R_old_tips2(2407d)
Rの備忘録(4443d)
CaBoCha(5653d)
hidden_R_Packages(5873d)
Last-modified: 2008-08-30 (土) 17:02:04 (6379d)