2 # -*- coding: utf-8 -*-
\r
3 # Japanese text processor test module
\r
4 # by Takuya Nishimoto
\r
6 from __future__ import unicode_literals
\r
12 print s.encode('cp932', 'ignore')
\r
16 def __print_dummy(s):
\r
20 def Mecab_get_reading(mf, CODE_=CODE):
\r
23 for pos in xrange(0, mf.size):
\r
24 ar = Mecab_getFeature(mf, pos, CODE_=CODE_).split(',')
\r
27 rd = ar[9].replace('\u3000', ' ')
\r
32 braille += ar[12] + r"/"
\r
34 braille += rd + r"/"
\r
35 return (reading, braille.rstrip(r" /"))
\r
37 def get_reading(msg):
\r
38 s = Mecab_text2mecab(msg)
\r
39 mf = MecabFeatures()
\r
40 Mecab_analysis(s, mf)
\r
41 Mecab_correctFeatures(mf)
\r
42 Mecab_print(mf, __print_dummy)
\r
43 reading = Mecab_get_reading(mf)
\r
47 # tasks: 要素2は音声合成の読み、(もしあれば)要素3は点訳用のカナ表記
\r
48 # 点訳の表記と分かち書きは、規則で処理できないものを
\r
49 # Mecab 辞書の第13フィールドに追加している。
\r
50 # 要素3のスラッシュは形態素の区切り、スペースは形態素内のマスアケ
\r
52 # some examples from nvdajp-jtalk-dic:
\r
53 # http://nvdajp-jtalk-dic.heroku.com/items/
\r
55 ['あ⣿あ∫あ♪', 'アイチニーサンヨンゴーロクナナハチノテンアセキブンキゴーアオンプ'],
\r
56 ['鈹噯呃瘂蹻脘鑱涿癃', 'ヒアイアクアキョーカンザンタクリュー'],
\r
57 ['十五絡脈病証', 'ジューゴカラマミャクヤマイアカシ'],
\r
58 ['マーク。まーく。', 'マーク。マーク。'],
\r
62 ['impaired', 'インペアド'],
\r
63 ['failed', 'フェイルド'],
\r
65 ['nullsoft', 'ヌルソフト'],
\r
66 ['speech api', 'スピーチ エーピーアイ'],
\r
70 ['youtube', 'ユーチューブ'],
\r
75 ['japanese', 'ジャパニーズ'],
\r
76 ['favorites', 'フェイバリッツ'],
\r
77 ['documents', 'ドキュメンツ'],
\r
78 ['settings', 'セッティングズ'],
\r
80 #['onegai', 'オネーガイー'],
\r
81 ['redistributable', 'リディストリビュータブル'],
\r
93 ['最上行', 'サイジョーギョー'],
\r
97 ['50音順', 'ゴジューオンジュン'],
\r
100 ['表計算', 'ヒョーケイサン'],
\r
109 ['親オブジェクト', 'オヤオブジェクト'],
\r
117 ['前景色', 'ゼンケイショク'],
\r
118 ['梅雨前線', 'バイウゼンセン', 'バイウ ゼンセン'],
\r
119 ['八ッ場ダム', 'ヤンバダム'],
\r
120 ['1都5県', 'イットゴケン'],
\r
121 ['1都5県', 'イットゴケン'],
\r
122 ['1都6県', 'イットロッケン'],
\r
123 ['1都6県', 'イットロッケン'],
\r
124 ['孫正義', 'ソンマサヨシ', 'ソン マサヨシ'],
\r
125 ['きゃりーぱみゅぱみゅ', 'キャリーパミュパミュ'],
\r
126 ['いひ', 'イヒ'], # http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=30919
\r
128 ['1月', 'イチガツ', '1ガツ'], # NVDA点字表示の誤り No.18
\r
129 ['為おおせる', 'シオオセル'], # 点訳のてびき第3版 第2章 その1 1 5 No.63
\r
130 ['凡そ', 'オオヨソ'], # 点訳のてびき第3版 第2章 その1 1 5 No.67
\r
131 ['無花果', 'イチジク'], # 点訳のてびき第3版 第2章 その1 1 6 No.3
\r
132 ['砂利道', 'ジャリミチ'], # 点訳のてびき第3版 第2章 その1 1 6 No.10
\r
133 ['少しずつ', 'スコシズツ'], # 点訳のてびき第3版 第2章 その1 1 6 No.20
\r
134 ['鼓', 'ツヅミ'], # 点訳のてびき第3版 第2章 その1 1 6 No.32
\r
135 ['葛籠', 'ツヅラ'], # 地名? 点訳のてびき第3版 第2章 その1 1 6 No.33
\r
136 ['紅提灯', 'ベニヂョーチン'], # 点訳のてびき第3版 第2章 その1 1 6 No.39
\r
137 ['まづ', 'マズ'], # 点訳のてびき第3版 第2章 その1 1 7 No.1
\r
138 ['一つづつ', 'ヒトツズツ'], # 点訳のてびき第3版 第2章 その1 1 7 No.2
\r
139 ['大きう', 'オオキュー'], # 点訳のてびき第3版 第2章 その1 1 7 No.5
\r
140 ['うれしう', 'ウレシュー'], # 点訳のてびき第3版 第2章 その1 1 7 No.6
\r
141 ['もみぢ', 'モミジ'], # 点訳のてびき第3版 第2章 その1 1 7 No.7
\r
142 ['みづうみ', 'ミズウミ'], # 点訳のてびき第3版 第2章 その1 1 7 No.8
\r
143 ['ヴァイオリン', 'バイオリン' , 'ヴァイオリン'], # 点訳のてびき第3版 第2章 その1 2 1 No.4
\r
144 ['ヴィタミン', 'ビタミン', 'ヴィタミン'], # 点訳のてびき第3版 第2章 その1 2 1 No.6
\r
145 ['ラヂオ', 'ラジオ'], # 点訳のてびき第3版 第2章 その1 2 1 No.22
\r
146 ['ヂャケット', 'ジャケット'], # 点訳のてびき第3版 第2章 その1 2 1 No.23
\r
147 ['ウヰスキー', 'ウイスキー'], # 点訳のてびき第3版 第2章 その1 2 1 No.25
\r
148 ['スヰフト', 'スイフト'], # 点訳のてびき第3版 第2章 その1 2 1 No.26
\r
149 ['ヱルテル', 'ウェルテル'], # 点訳のてびき第3版 第2章 その1 2 1 No.27
\r
150 ['ヲルポール', 'ウォルポール'], # 点訳のてびき第3版 第2章 その1 2 1 No.28
\r
151 ['ヘリコプタア', 'ヘリコプター'], # 点訳のてびき第3版 第2章 その1 2 1 No.29
\r
152 ['ちゅうりっぷ', 'チューリップ'], # 点訳のてびき第3版 第2章 その1 2 1 No.30
\r
153 ['おおきに', 'オーキニ', 'オオキニ', ], # 点訳のてびき第3版 第2章 その1 2 3 No.4
\r
154 ['おみやぁさん', 'オミャアサン', ], # 点訳のてびき第3版 第2章 その1 2 3 No.6
\r
155 ['先生ぇさまぁ', 'センセエサマア', ], # 点訳のてびき第3版 第2章 その1 2 3 No.7
\r
156 ['おとゥ', 'オトー', ], # 点訳のてびき第3版 第2章 その1 2 4 No.1
\r
157 ['おかァ', 'オカア', ], # 点訳のてびき第3版 第2章 その1 2 4 No.1
\r
158 ['クヮルテット', 'クァルテット', ], # 点訳のてびき第3版 第2章 その1 2 4 No.5
\r
159 ['ヂェスチャー', 'ジェスチャー', ], # 点訳のてびき第3版 第2章 その1 2 4 No.6
\r
160 ['スェーター', 'スエーター', ], # 点訳のてびき第3版 第2章 その1 2 4 No.7
\r
161 ['ヒァーッ', 'ヒャーッ', ], # 点訳のてびき第3版 第2章 その1 2 4 No.8
\r
162 ['大阪', 'オーサカ', 'オオサカ'], # 点訳のてびき第3版 第2章 その1 2 5 No.1
\r
163 ['遠野', 'トーノ', 'トオノ' ], # 点訳のてびき第3版 第2章 その1 2 5 No.2
\r
164 ['東井', 'トーイ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.3
\r
165 ['青梅', 'オーメ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.10
\r
166 ['透', 'トール', 'トオル', ], # 点訳のてびき第3版 第2章 その1 2 5 No.11
\r
167 ['みさを', 'ミサオ', 'ミサヲ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.13
\r
168 ['かほる', 'カオル', 'カホル', ], # 点訳のてびき第3版 第2章 その1 2 5 No.14
\r
169 ['さをり', 'サオリ', 'サヲリ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.19
\r
170 ['みやこをどり', 'ミヤコオドリ', 'ミヤコ オドリ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.24
\r
171 ['をりがみ', 'オリガミ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.25
\r
172 ['八幡平', 'ハチマンタイ', ], # ヤワタダイラ
\r
173 ['山ん中', 'ヤマンナカ', ], # 点訳のてびき第3版 第3章 その1 2 No.14
\r
174 ['そういうわけ', 'ソーユウワケ', 'ソー イウ/ワケ', ], # 点訳のてびき第3版 第3章 その1 3 No.51
\r
175 ['そういう', 'ソーユウ', 'ソー イウ', ], # 点訳のてびき第3版 第3章 その1 5 No.2
\r
176 ['どうして', 'ドーシテ', 'ドー シテ', ], # 点訳のてびき第3版 第3章 その1 5 No.5
\r
178 ['システムキャレット', None, 'システム/キャレット'],
\r
179 ['フィードバック', None, 'フィード バック'],
\r
180 ['インターフェース', None, 'インター フェース'],
\r
181 ['オペレーティングシステム', None, 'オペレーティング システム'],
\r
182 ['トーキングインストーラー', None, 'トーキングインストーラー'],
\r
183 ['アイスクリーム', None, 'アイス クリーム'],
\r
184 ['日本点字図書館', None, 'ニッポン テンジ トショカン'],
\r
186 ['通り', None, 'トオリ'],
\r
187 ['狼', None, 'オオカミ'],
\r
188 ['通る', None, 'トオル'],
\r
189 ['多い', None, 'オオイ'],
\r
190 ['多く', None, 'オオク'],
\r
191 ['大晦日', None, 'オオミソカ'],
\r
192 ['手作り', None, 'テヅクリ'],
\r
193 ['南半球', None, 'ミナミ ハンキュー'],
\r
194 ['アメリカ合衆国', None, 'アメリカ ガッシューコク'],
\r
195 ['第一人者', None, 'ダイ1ニンシャ'],
\r
196 ['一流', None, '1リュー'],
\r
197 ['一月', None, '1ガツ'],
\r
198 ['二月', None, '2ガツ'],
\r
199 ['四方', None, '4ホー'],
\r
200 ['六法全書', None, '6ポー ゼンショ'],
\r
201 ['百人一首', None, '100ニン 1シュ'],
\r
202 ['ヱビスビール', None, 'エビス ビール'],
\r
203 ['日本コロムビア', None, 'ニッポン コロムビア'],
\r
204 ['ビタミンE', None, 'ビタミン E'],
\r
205 ['劇団四季', None, 'ゲキダン 4キ'],
\r
206 ['四季', None, '4キ'],
\r
207 ['四半期', None, '4ハンキ'],
\r
208 ['四角形', None, '4カクケイ'],
\r
209 ['四条', None, '4ジョー'],
\r
210 ['二男', None, '2ナン'],
\r
211 ['十数', None, 'ジュー/スー'], # 十,名詞,数
\r
212 ['一輪車', None, '1リンシャ'],
\r
213 ['三塁打', None, '3ルイダ'],
\r
214 ['一汁一菜', None, '1ジュー 1サイ'],
\r
215 ['五臓六腑', None, '5ゾー 6プ'],
\r
216 ['二・二六事件', None, '2⠼26 ジケン'],
\r
217 ['一段', None, '1ダン'],
\r
218 ['七転び八起き', None, 'ナナコロビ ヤオキ'],
\r
219 ['十重二十重', None, 'トエ ハタエ'],
\r
220 ['3ラン', None, '3ラン'],
\r
221 ['さんりんしゃ', None, '3リンシャ'],
\r
222 ['いちばん', None, '1バン'],
\r
223 ['X線', None, 'Xセン'],
\r
225 #['好かんやつ', 'スカンヤツ', 'スカン ヤツ', ], #点訳のてびき第3版 第3章 その1 2 No.16
\r
226 #['嘘みたいな話', 'ウソミタイナハナシ', 'ウソミタイナ ハナシ', ], # 点訳のてびき第3版 第3章 その1 2 No.17
\r
227 #['行っていらっしゃい', 'イッテイラッシャイ', 'イッテ イラッシャイ', ], # 点訳のてびき第3版 第3章 その1 4 No.77
\r
228 #['ごめんください', 'ゴメンクダサイ', 'ゴメン クダサイ', ], # 点訳のてびき第3版 第3章 その1 4 No.84
\r
229 #['おはようございます', 'オハヨーゴザイマス', 'オハヨー ゴザイマス', ], # 点訳のてびき第3版 第3章 その1 4 No.86
\r
232 ['相対する', 'アイタイスル'],
\r
233 ['相対的', 'ソータイテキ'], # regression test
\r
234 ['相たずさえて', 'アイタズサエテ'],
\r
236 ['同病相憐れむ', 'ドービョーアイアワレム', 'ドービョー/アイアワレム'],
\r
237 ['木立の間から見える', 'コダチノアイダカラミエル'],
\r
238 ['開いた口がふさがらぬ', 'アイタクチガフサガラヌ'],
\r
239 ['相無く涙ぐみ足り', 'アイナクナミダグミタリ'],
\r
240 ['お生憎様', 'オアイニクサマ'],
\r
241 ['開かずの間', 'アカズノマ'],
\r
243 ['山田県主', 'ヤマダノアガタヌシ'],
\r
245 ['上がり降り', 'アガリオリ'],
\r
246 ['河原町四条上ル', 'カワラマチシジョーアガル'],
\r
249 ['阿Q正伝', 'アキューセイデン'],
\r
251 ['明くる朝', 'アクルアサ', 'アクル アサ'],
\r
252 ['明くる年', 'アクルトシ', 'アクル トシ'],
\r
253 ['明の星', 'アケノホシ', 'アケノ ホシ'],
\r
254 ['麻布十番', 'アザブジューバン', 'アザブ ジューバン'],
\r
255 ['男漁り', 'オトコアサリ', 'オトコ アサリ'],
\r
256 ['古本漁り', 'フルホンアサリ', 'フルホン アサリ'],
\r
257 ['足の甲', 'アシノコー', 'アシノ コー'],
\r
258 ['日の足が伸びる', 'ヒノアシガノビル', 'ヒノアシ/ガ/ノビル'],
\r
259 {'text':'醤油味', 'braille':'ショーユ アジ'},
\r
260 {'text':'砂糖醤油', 'speech':'サトージョウユ'}, # regression test
\r
263 #{'text':'足手纏い', 'braille':'アシデ マトイ'},
\r
264 #{'text':'手荷物預かり所', 'braille':'テニモツ アズカリジョ'},
\r
265 #{'text':'額に汗して', 'braille':'ヒタイニ アセ シテ'},
\r
266 #{'text':'認め遊ばす', 'braille':'シタタメアソバス'},
\r
267 {'text':'源朝臣頼政', 'braille':'ミナモトノ アソン ヨリマサ'},
\r
268 {'text':'東漢直駒', 'braille':'ヤマトノ アヤノ アタイノ コマ'},
\r
269 #{'text':'徒し男', 'braille':'アダシ オトコ'},
\r
270 #{'text':'徒し世', 'braille':'アダシヨ'},
\r
271 #{'text':'新し物好き', 'braille':'アタラシモノズキ'},
\r
272 #{'text':'暖かご飯', 'braille':'アッタカ ゴハン'},
\r
273 #{'text':'城跡', 'braille':'シロアト'},
\r
274 #{'text':'兄妹', 'braille':'アニ イモート'},
\r
275 {'text':'兄貴風を吹かす', 'input':'アニキカゼヲ フカス', 'braille':'アニキカゼ/ヲ/フカス'},
\r
276 #{'text':'秀兄イ', 'braille':'ヒデ アニイ'},
\r
279 if __name__ == '__main__':
\r
280 JT_DIR = os.path.normpath(os.path.join(os.getcwdu(), '..', '..', 'source', 'synthDrivers', 'jtalk'))
\r
282 Mecab_initialize(__print, JT_DIR)
\r
284 if isinstance(i, dict):
\r
287 item = [ i['text'], i['speech'], i['braille'] ]
\r
289 s = i['braille'].replace(' ', '').replace('/', '')
\r
290 item = [ i['text'], s, i['braille'] ]
\r
293 item = [ i['text'], i['speech'], i['input'] ]
\r
295 s = i['input'].replace(' ', '').replace('/', '')
\r
296 item = [ i['text'], s, i['input'] ]
\r
298 item = [ i['text'], i['speech'] ]
\r
302 result = get_reading(item[0])
\r
303 if item[1] is not None and result[0] != item[1]:
\r
307 __print('input: ' + item[0])
\r
308 __print('reading expected: ' + item[1])
\r
309 __print('reading result: ' + result[0])
\r
310 if len(item) > 2 and result[1] != item[2]:
\r
314 __print('input: ' + item[0])
\r
315 __print('braille expected: ' + item[2])
\r
316 __print('braille result: ' + result[1])
\r