OSDN Git Service

updated jtalk dictionary
[nvdajp/nvdajpmiscdep.git] / include / jtalk / mecabRunner.py
index f359062..2d0a6ad 100644 (file)
@@ -9,7 +9,7 @@ import sys
 from mecab import *\r
 \r
 def __print(s):\r
-       print s.encode('cp932', 'ignore')\r
+       print s.encode('utf-8', 'ignore')\r
 \r
 buffer = ''\r
 \r
@@ -29,7 +29,7 @@ def Mecab_get_reading(mf, CODE_=CODE):
                        rd = ar[0]\r
                reading += rd\r
                if len(ar) > 12:\r
-                       braille += ar[12] + r" "\r
+                       braille += ar[12] + r"/"\r
                else:\r
                        braille += rd + r"/"\r
        return (reading, braille.rstrip(r" /"))\r
@@ -47,6 +47,7 @@ def get_reading(msg):
 # tasks: 要素2は音声合成の読み、(もしあれば)要素3は点訳用のカナ表記\r
 # 点訳の表記と分かち書きは、規則で処理できないものを\r
 # Mecab 辞書の第13フィールドに追加している。\r
+# 要素3のスラッシュは形態素の区切り、スペースは形態素内のマスアケ\r
 \r
 # some examples from nvdajp-jtalk-dic:\r
 # http://nvdajp-jtalk-dic.heroku.com/items/\r
@@ -70,8 +71,22 @@ tasks = [
        ['files', 'ファイルズ'],\r
        ['docs', 'ドックス'],\r
        ['labs', 'ラブス'],\r
+       ['japan', 'ジャパン'],\r
+       ['japanese', 'ジャパニーズ'],\r
+       ['favorites', 'フェイバリッツ'],\r
+       ['documents', 'ドキュメンツ'],\r
+       ['settings', 'セッティングズ'],\r
+       ['one', 'ワン'],\r
+       #['onegai', 'オネーガイー'],\r
+       ['redistributable', 'リディストリビュータブル'],\r
+       ['app', 'アップ'],\r
+       ['types', 'タイプス'],\r
+       ['mouse', 'マウス'],\r
+       ['page', 'ページ'],\r
+\r
        ['行',  'ギョー'],\r
-       ['一行', 'イチギョー'],\r
+       #['一行', 'イチギョー'],\r
+       ['1行', 'イチギョー'],\r
        ['1行', 'イチギョー'],\r
        ['1行下', 'イチギョーシタ'],\r
        ['1行上', 'イチギョーウエ'],\r
@@ -159,7 +174,7 @@ tasks = [
        ['をりがみ', 'オリガミ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.25\r
        ['八幡平', 'ハチマンタイ', ], # ヤワタダイラ\r
        ['山ん中', 'ヤマンナカ', ], # 点訳のてびき第3版 第3章 その1 2 No.14\r
-       ['そういうわけ', 'ソーユウワケ', 'ソー イウ ワケ', ], # 点訳のてびき第3版 第3章 その1 3 No.51\r
+       ['そういうわけ', 'ソーユウワケ', 'ソー イウ/ワケ', ], # 点訳のてびき第3版 第3章 その1 3 No.51\r
        ['そういう', 'ソーユウ', 'ソー イウ', ], # 点訳のてびき第3版 第3章 その1 5 No.2\r
        ['どうして', 'ドーシテ', 'ドー シテ', ], # 点訳のてびき第3版 第3章 その1 5 No.5\r
 \r
@@ -210,18 +225,149 @@ tasks = [
        ['いちばん', None, '1バン'],\r
        ['X線', None, 'Xセン'],\r
 \r
+       {'text':'カムイト゚ラノ', 'speech':'カムイトラノ'}, # U+ff9f\r
+       {'text':'カムイト゚ラノ', 'speech':'カムイトラノ'}, # U+309a\r
+       {'text':'カムイト゜ラノ', 'speech':'カムイトラノ'}, # U+309c\r
+\r
+       {'text':'触読', 'braille':'ショクドク'},\r
+       {'text':'触読式時計', 'braille':'ショクドクシキ トケイ'},\r
+       {'text':'触手話', 'braille':'ショクシュワ'},\r
+       {'text':'触読手話', 'braille':'ショクドク/シュワ'},\r
+       {'text':'盲ろう', 'braille':'モーロー'},\r
+\r
+       {'text':'泉質', 'braille':'センシツ'},\r
+       {'text':'硫酸塩', 'braille':'リューサンエン'},\r
+       {'text':'硫酸塩泉', 'braille':'リューサンエンセン'},\r
+       {'text':'塩化物泉', 'braille':'エンカブッセン'},\r
+       {'text':'泉温', 'braille':'センオン'},\r
+       {'text':'冷鉱泉', 'braille':'レイコーセン'},\r
+       {'text':'微温泉', 'braille':'ビオンセン'},\r
+       {'text':'療養泉', 'braille':'リョーヨーセン'},\r
+       {'text':'低張性', 'braille':'テイチョーセイ'},\r
+       {'text':'等張性', 'braille':'トーチョーセイ'},\r
+       {'text':'高張性', 'braille':'コーチョーセイ'},\r
+       {'text':'酸性泉', 'braille':'サンセイセン'},\r
+       {'text':'放射能泉', 'braille':'ホーシャノーセン'},\r
+\r
+       {'text':'次章', 'braille':'ジショー'},\r
+       {'text':'お土産を有難うございます', 'braille':'オ/ミヤゲ/ヲ/アリガトー/ゴザイ/マス'},\r
+\r
        #['好かんやつ', 'スカンヤツ', 'スカン ヤツ', ], #点訳のてびき第3版 第3章 その1 2 No.16\r
        #['嘘みたいな話', 'ウソミタイナハナシ', 'ウソミタイナ ハナシ', ], # 点訳のてびき第3版 第3章 その1 2 No.17\r
        #['行っていらっしゃい', 'イッテイラッシャイ', 'イッテ イラッシャイ', ], # 点訳のてびき第3版 第3章 その1 4 No.77\r
        #['ごめんください', 'ゴメンクダサイ', 'ゴメン クダサイ', ], # 点訳のてびき第3版 第3章 その1 4 No.84\r
        #['おはようございます', 'オハヨーゴザイマス', 'オハヨー ゴザイマス', ], # 点訳のてびき第3版 第3章 その1 4 No.86\r
+\r
+       # 点字表記辞典「あ」(1)\r
+       ['相対する', 'アイタイスル'],\r
+       ['相対的', 'ソータイテキ'], # regression test\r
+       ['相たずさえて', 'アイタズサエテ'],\r
+       ['相整う', 'アイトトノウ'],\r
+       ['同病相憐れむ', 'ドービョーアイアワレム', 'ドービョー/アイアワレム'],\r
+       ['木立の間から見える', 'コダチノアイダカラミエル'],\r
+       ['開いた口がふさがらぬ', 'アイタクチガフサガラヌ'],\r
+       ['相無く涙ぐみ足り', 'アイナクナミダグミタリ'],\r
+       ['お生憎様', 'オアイニクサマ'],\r
+       ['開かずの間', 'アカズノマ'],\r
+       ['不開の間', 'アカズノマ'],\r
+       ['山田県主', 'ヤマダノアガタヌシ'],\r
+       ['暁闇', 'アカツキヤミ'],\r
+       ['上がり降り', 'アガリオリ'],\r
+       ['河原町四条上ル', 'カワラマチシジョーアガル'],\r
+       ['秋津国', 'アキツクニ'],\r
+       ['現つ神', 'アキツカミ'],\r
+       ['阿Q正伝', 'アキューセイデン'],\r
+       ['悪源太', 'アクゲンタ'],\r
+       ['明くる朝', 'アクルアサ', 'アクル アサ'],\r
+       ['明くる年', 'アクルトシ', 'アクル トシ'],\r
+       ['明の星', 'アケノホシ', 'アケノ ホシ'],\r
+       ['麻布十番', 'アザブジューバン', 'アザブ ジューバン'],\r
+       ['男漁り', 'オトコアサリ', 'オトコ アサリ'],\r
+       ['古本漁り', 'フルホンアサリ', 'フルホン アサリ'],\r
+       ['足の甲', 'アシノコー', 'アシノ コー'],\r
+       ['日の足が伸びる', 'ヒノアシガノビル', 'ヒノアシ/ガ/ノビル'],\r
+       {'text':'醤油味', 'braille':'ショーユ アジ'},\r
+       {'text':'砂糖醤油', 'speech':'サトージョウユ'}, # regression test\r
+\r
+       # 点字表記辞典「あ」(2)\r
+       #{'text':'足手纏い', 'braille':'アシデ マトイ'},\r
+       #{'text':'手荷物預かり所', 'braille':'テニモツ アズカリジョ'},\r
+       #{'text':'額に汗して', 'braille':'ヒタイニ アセ シテ'},\r
+       #{'text':'認め遊ばす', 'braille':'シタタメアソバス'},\r
+       {'text':'源朝臣頼政', 'braille':'ミナモトノ アソン ヨリマサ'},\r
+       {'text':'東漢直駒', 'braille':'ヤマトノ アヤノ アタイノ コマ'},\r
+       #{'text':'徒し男', 'braille':'アダシ オトコ'},\r
+       #{'text':'徒し世', 'braille':'アダシヨ'},\r
+       #{'text':'新し物好き', 'braille':'アタラシモノズキ'},\r
+       #{'text':'暖かご飯', 'braille':'アッタカ ゴハン'},\r
+       #{'text':'城跡', 'braille':'シロアト'},\r
+       #{'text':'兄妹', 'braille':'アニ イモート'},\r
+       {'text':'兄貴風を吹かす', 'input':'アニキカゼヲ フカス', 'braille':'アニキカゼ/ヲ/フカス'},\r
+       #{'text':'秀兄イ', 'braille':'ヒデ アニイ'},\r
+\r
+       {'text':'一日から十日', 'braille':'イチ/ニチ/カラ/ジュー/ニチ'},\r
+       {'text':'1日から10日', 'braille':'イチ/ニチ/カラ/イチ/ゼロ/ニチ'},\r
+       {'text':'一日から一〇日', 'braille':'イチ/ニチ/カラ/イチ/レイ/ニチ'},\r
+       {'text':'名speech集', 'speech':'メイスピーチシュー', 'braille':'メイspeechシュー'},\r
+       {'text':'一人当り10個ずつ', 'braille':'ヒトリアタリ/イチ/ゼロ/コ/ズツ'},\r
+       {'text':'04月', 'speech':'ゼロシガツ', 'braille':'ゼロ/4ガツ'},\r
+\r
+       # 2013-08-25\r
+\r
+       {'text':'usage', 'speech':'ユーセイジ'},\r
+       {'text':'june', 'speech':'ジューン'},\r
+       {'text':'foundation', 'speech':'ファウンデイション'},\r
+       {'text':'everyone', 'speech':'エブリワン'},\r
+       {'text':'allowed', 'speech':'アラウド'},\r
+       {'text':'designed', 'speech':'デザインド'},\r
+       {'text':'take', 'speech':'テイク'},\r
+       {'text':'share', 'speech':'シェアー'},\r
+       {'text':'change', 'speech':'チェインジ'},\r
+       {'text':'guarantee', 'speech':'ギャランティー'},\r
+       {'text':'preamble', 'speech':'プリアムブル'},\r
+       {'text':'make', 'speech':'メイク'},\r
+       {'text':'sure', 'speech':'シュア'},\r
+       {'text':'users', 'speech':'ユーザーズ'},\r
+       {'text':'some', 'speech':'サム'},\r
+       #{'text':'★~<QUIZ>~~~~~~~~~~~~~~~', 'speech':'★~<QUIZ>~~~~~~~~~~~~~~~', 'braille':'★/~/</QUIZ/>/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~'},\r
+\r
+       {'text':'更衣室', 'braille':'コーイシツ'},\r
+       {'text':'盗撮', 'braille':'トーサツ'},\r
+       #{'text':'北の風晴れ所により一時雨', 'braille':'キタノ/カゼ/ハレ/トコロニ ヨリ/イチジ/アメ'},\r
+       {'text':'晴れ所により一時雨', 'braille':'ハレ/トコロニ ヨリ/イチジ/アメ'},\r
+       {'text':'山西', 'braille':'ヤマニシ'},\r
+       {'text':'久代', 'braille':'ヒサヨ'},\r
+\r
+       {'text':'編集人', 'braille':'ヘンシューニン'},\r
+       {'text':'発行人', 'braille':'ハッコーニン'},\r
+       {'text':'受取人', 'braille':'ウケトリニン'},\r
+       {'text':'配達人', 'braille':'ハイタツニン'},\r
+       {'text':'管理人', 'braille':'カンリニン'},\r
+       {'text':'下請人', 'braille':'シタウケニン'},\r
 ]\r
 \r
 if __name__ == '__main__':\r
        JT_DIR = os.path.normpath(os.path.join(os.getcwdu(), '..', '..', 'source', 'synthDrivers', 'jtalk'))\r
        print JT_DIR\r
        Mecab_initialize(__print, JT_DIR)\r
-       for item in tasks:\r
+       for i in tasks:\r
+               if isinstance(i, dict):\r
+                       if 'braille' in i:\r
+                               if 'speech' in i:\r
+                                       item = [ i['text'], i['speech'], i['braille'] ]\r
+                               else:\r
+                                       s = i['braille'].replace(' ', '').replace('/', '')\r
+                                       item = [ i['text'], s, i['braille'] ]\r
+                       elif 'input' in i:\r
+                               if 'speech' in i:\r
+                                       item = [ i['text'], i['speech'], i['input'] ]\r
+                               else:\r
+                                       s = i['input'].replace(' ', '').replace('/', '')\r
+                                       item = [ i['text'], s, i['input'] ]\r
+                       else:\r
+                               item = [ i['text'], i['speech'] ]\r
+               else:\r
+                       item = i\r
                buffer = ''\r
                result = get_reading(item[0])\r
                if item[1] is not None and result[0] != item[1]:\r