- 追加された行はこの色です。
- 削除された行はこの色です。
[[Rの備忘録]]
#contents
* CaBocha は 0.60 以降でないと動かない. [#c08ec8e7]
[[ここからダウンロード:http://sourceforge.net/projects/cabocha/]]して,インストールしましょう.
*Windows版の場合 [#sa597f65]
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 だけ実行した>hidden_R_Packages]]のだろうか.
* CaBoCha Checkでキャスト [#n44e22ac]
#define CHECK(eval) if (! eval) { \
fprintf (stderr, "Exception:%s\n", cabocha_strerror(cabocha)); \
cabocha_destroy(cabocha); \
return (SEXP) -1; }
を忘れてはいけない.
* まとまった節を文を単位に区切る. [#peb0fd33]
こうするしかないのだろうか?
#define DELIMITER L"/ ,、。!?.!?" /* 区切り文字 */
#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で [#yf3ca6a7]
ということらしいので,Windows版では CPP ソースファイルだけUTF-8にした.従って,コード内に日本語文字をハードコーディングできない.R から引数で渡すしかない.