質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

1回答

3682閲覧

mecab-asyncによる文字化け

nano-dia

総合スコア32

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2016/09/13 14:04

編集2016/09/13 14:06

mecab-asyncの例にあった

javascript

1var MeCab = new require('mecab-async') 2 , mecab = new MeCab() 3; 4var fs = require('fs'); 5mecab.parse('すもももももももものうち', function(err, result) { 6 if (err) throw err; 7 fs.writeFileSync('out.txt',result); 8 console.log(result); 9});

を実行してみたのですが,次のように文字化けとなってうまくいきません。

[ [ '�������������������̂���', '記号', '一般', '*', '*', '*', '*', '*\r' ] ]

windows7 64bitでmecabの辞書はUTF-8,jsファイルはUTF-8です。
辞書・ファイル共にSHIFT-JISでも同様に文字化けが起こります。

ご教授お願いします。

また,UTF-8で作業したいのですが,
コマンドプロンプトでmecabを調べると,

C:\Users\Desktop>mecab -P | grep config-charset File STDIN: config-charset: SHIFT-JIS

となっており,config-charsetの変更方法はあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

mecab-asyncではできませんでしたが,
node-mecab-liteモジュールで,例にあった

javascript

1var mecab = new Mecab(); 2mecab.ENCODING = 'UTF-8'; 3var text = "すもももももももものうち"; 4 5mecab.parse(text, function (err, items) { 6 console.log(items); 7}); 8 9mecab.wakatigaki(text, function (err, items) { 10 console.log(items); 11});

で行うと

javascript

1C:\Users\Desktop>node test.js 2[ 'すもも', 'も', 'もも', 'も', 'もも', 'の', 'うち' ] 3[ [ 'すもも', '名詞', '一般', '*', '*', '*', '*', 'すもも', 'スモモ', 'スモモ' ], 4 [ 'も', '助詞', '係助詞', '*', '*', '*', '*', 'も', 'モ', 'モ' ], 5 [ 'もも', '名詞', '一般', '*', '*', '*', '*', 'もも', 'モモ', 'モモ' ], 6 [ 'も', '助詞', '係助詞', '*', '*', '*', '*', 'も', 'モ', 'モ' ], 7 [ 'もも', '名詞', '一般', '*', '*', '*', '*', 'もも', 'モモ', 'モモ' ], 8 [ 'の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ' ], 9 [ 'うち', '名詞', '非自立', '副詞可能', '*', '*', '*', 'うち', 'ウチ', 'ウチ' ], 10 [ 'EOS' ] ]

でUTF-8でもできました。
node-mecab-liteのプログラムを見ると,

javascript

1 var platform = require('os').platform(); 2 this.ENCODING = (platform.substr(0,3) == 'win') 3 ? 'SHIFT_JIS' : 'UTF-8';

でエンコードができているみたいです,勉強になりました。
wakatiのほうが先に出るのは非同期で行っているからです。

投稿2016/09/13 14:32

編集2016/09/13 15:28
nano-dia

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問