OSDN Git Service

give utf-8 encoded path of userdic to mecab. use -u option rather than mecabrc.
authorTakuya Nishimoto <nishimotz@gmail.com>
Fri, 14 Feb 2014 12:57:33 +0000 (21:57 +0900)
committerTakuya Nishimoto <nishimotz@gmail.com>
Fri, 14 Feb 2014 12:57:33 +0000 (21:57 +0900)
source/synthDrivers/jtalk/mecab.py

index 61afeff..be00291 100644 (file)
@@ -129,15 +129,11 @@ def Mecab_initialize(logwrite_ = None, libmecab_dir = None, dic = None, user_dic
                                raise RuntimeError('utf-8 dictionary for mecab required.')\r
                except:\r
                        pass\r
-               ud = ''\r
+               argc, args = 3, (c_char_p * 3)('mecab', '-d', dic.encode('utf-8'))\r
                if user_dics:\r
-                       ud = r'userdic = ' + ','.join(user_dics)\r
-               mecabrc = os.path.join(libmecab_dir, '_mecabrc')\r
-               import codecs\r
-               with codecs.open(mecabrc, 'w', 'utf8', 'ignore') as fw:\r
-                       fw.write(ud + '\r\n')\r
-               args = (c_char_p * 5)('mecab', '-d', dic.encode('utf-8'), '-r', mecabrc.encode('utf-8'))\r
-               mecab = libmc.mecab_new(5, args)\r
+                       ud = ','.join(user_dics)\r
+                       argc, args = 5, (c_char_p * 5)('mecab', '-d', dic.encode('utf-8'), '-u', ud.encode('utf-8'))\r
+               mecab = libmc.mecab_new(argc, args)\r
                if logwrite_:\r
                        if not mecab: logwrite_('mecab_new failed.')\r
                        s = libmc.mecab_strerror(mecab).strip()\r