/include/jtalk/mecabRunner.py
Python | 242 lines | 235 code | 3 blank | 4 comment | 0 complexity | 4aed2de8fdd7a9e9888f93920527963a MD5 | raw file
- # mecabRunner.py
- # -*- coding: utf-8 -*-
- # Japanese text processor test module
- # by Takuya Nishimoto
-
- from __future__ import unicode_literals
- import os
- import sys
- from mecab import *
-
- def __print(s):
- print s.encode('cp932', 'ignore')
-
- buffer = ''
-
- def __print_dummy(s):
- global buffer
- buffer += s + '\n'
-
- def Mecab_get_reading(mf, CODE_=CODE):
- reading = ''
- braille = ''
- for pos in xrange(0, mf.size):
- ar = Mecab_getFeature(mf, pos, CODE_=CODE_).split(',')
- rd = ''
- if len(ar) > 9:
- rd = ar[9].replace('\u3000', ' ')
- elif ar[0] != 'ー':
- rd = ar[0]
- reading += rd
- if len(ar) > 12:
- braille += ar[12] + r" "
- else:
- braille += rd + r"/"
- return (reading, braille.rstrip(r" /"))
-
- def get_reading(msg):
- s = Mecab_text2mecab(msg)
- mf = MecabFeatures()
- Mecab_analysis(s, mf)
- Mecab_correctFeatures(mf)
- Mecab_print(mf, __print_dummy)
- reading = Mecab_get_reading(mf)
- mf = None
- return reading
-
- # tasks: 要素2は音声合成の読み、(もしあれば)要素3は点訳用のカナ表記
- # 点訳の表記と分かち書きは、規則で処理できないものを
- # Mecab 辞書の第13フィールドに追加している。
-
- # some examples from nvdajp-jtalk-dic:
- # http://nvdajp-jtalk-dic.heroku.com/items/
- tasks = [
- ['あ⣿あ∫あ♪', 'アイチニーサンヨンゴーロクナナハチノテンアセキブンキゴーアオンプ'],
- ['鈹噯呃瘂蹻脘鑱涿癃', 'ヒアイアクアキョーカンザンタクリュー'],
- ['十五絡脈病証', 'ジューゴカラマミャクヤマイアカシ'],
- ['マーク。まーく。', 'マーク。マーク。'],
- ['1 2', 'イチ ニ'],
- ['manage', 'マネイジ'],
- ['choose', 'チュウズ'],
- ['impaired', 'インペアド'],
- ['failed', 'フェイルド'],
- ['mixi', 'ミクシー'],
- ['nullsoft', 'ヌルソフト'],
- ['speech api', 'スピーチ エーピーアイ'],
- ['use', 'ユース'],
- ['echo', 'エコウ'],
- ['you', 'ユー'],
- ['youtube', 'ユーチューブ'],
- ['files', 'ファイルズ'],
- ['docs', 'ドックス'],
- ['labs', 'ラブス'],
- ['行', 'ギョー'],
- ['一行', 'イチギョー'],
- ['1行', 'イチギョー'],
- ['1行下', 'イチギョーシタ'],
- ['1行上', 'イチギョーウエ'],
- ['2行', 'ニギョー'],
- ['3行', 'サンギョー'],
- ['現在行', 'ゲンザイギョー'],
- ['最上行', 'サイジョーギョー'],
- ['1行下', 'イチギョーシタ'],
- ['1行上', 'イチギョーウエ'],
- ['誤判定', 'ゴハンテイ'],
- ['50音順', 'ゴジューオンジュン'],
- ['税', 'ゼイ'],
- ['三毛猫', 'ミケネコ'],
- ['表計算', 'ヒョーケイサン'],
- ['小文字', 'コモジ'],
- ['大文字', 'オーモジ'],
- ['拡張子', 'カクチョーシ'],
- ['世界中', 'セカイジュー'],
- ['孫正義', 'ソンマサヨシ'],
- ['2分前', 'ニフンマエ'],
- ['2分前', 'ニフンマエ'],
- ['障がい', 'ショーガイ'],
- ['親オブジェクト', 'オヤオブジェクト'],
- ['z', 'ゼット'],
- ['規', 'タダシ'],
- ['全', 'ゼン'],
- ['007', 'ゼロゼロナナ'],
- ['上矢印', 'ウエヤジルシ'],
- ['下矢印', 'シタヤジルシ'],
- ['大見出し', 'オオミダシ'],
- ['前景色', 'ゼンケイショク'],
- ['梅雨前線', 'バイウゼンセン', 'バイウ ゼンセン'],
- ['八ッ場ダム', 'ヤンバダム'],
- ['1都5県', 'イットゴケン'],
- ['1都5県', 'イットゴケン'],
- ['1都6県', 'イットロッケン'],
- ['1都6県', 'イットロッケン'],
- ['孫正義', 'ソンマサヨシ', 'ソン マサヨシ'],
- ['きゃりーぱみゅぱみゅ', 'キャリーパミュパミュ'],
- ['いひ', 'イヒ'], # http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=30919
- ['金', 'キン' ],
- ['1月', 'イチガツ', '1ガツ'], # NVDA点字表示の誤り No.18
- ['為おおせる', 'シオオセル'], # 点訳のてびき第3版 第2章 その1 1 5 No.63
- ['凡そ', 'オオヨソ'], # 点訳のてびき第3版 第2章 その1 1 5 No.67
- ['無花果', 'イチジク'], # 点訳のてびき第3版 第2章 その1 1 6 No.3
- ['砂利道', 'ジャリミチ'], # 点訳のてびき第3版 第2章 その1 1 6 No.10
- ['少しずつ', 'スコシズツ'], # 点訳のてびき第3版 第2章 その1 1 6 No.20
- ['鼓', 'ツヅミ'], # 点訳のてびき第3版 第2章 その1 1 6 No.32
- ['葛籠', 'ツヅラ'], # 地名? 点訳のてびき第3版 第2章 その1 1 6 No.33
- ['紅提灯', 'ベニヂョーチン'], # 点訳のてびき第3版 第2章 その1 1 6 No.39
- ['まづ', 'マズ'], # 点訳のてびき第3版 第2章 その1 1 7 No.1
- ['一つづつ', 'ヒトツズツ'], # 点訳のてびき第3版 第2章 その1 1 7 No.2
- ['大きう', 'オオキュー'], # 点訳のてびき第3版 第2章 その1 1 7 No.5
- ['うれしう', 'ウレシュー'], # 点訳のてびき第3版 第2章 その1 1 7 No.6
- ['もみぢ', 'モミジ'], # 点訳のてびき第3版 第2章 その1 1 7 No.7
- ['みづうみ', 'ミズウミ'], # 点訳のてびき第3版 第2章 その1 1 7 No.8
- ['ヴァイオリン', 'バイオリン' , 'ヴァイオリン'], # 点訳のてびき第3版 第2章 その1 2 1 No.4
- ['ヴィタミン', 'ビタミン', 'ヴィタミン'], # 点訳のてびき第3版 第2章 その1 2 1 No.6
- ['ラヂオ', 'ラジオ'], # 点訳のてびき第3版 第2章 その1 2 1 No.22
- ['ヂャケット', 'ジャケット'], # 点訳のてびき第3版 第2章 その1 2 1 No.23
- ['ウヰスキー', 'ウイスキー'], # 点訳のてびき第3版 第2章 その1 2 1 No.25
- ['スヰフト', 'スイフト'], # 点訳のてびき第3版 第2章 その1 2 1 No.26
- ['ヱルテル', 'ウェルテル'], # 点訳のてびき第3版 第2章 その1 2 1 No.27
- ['ヲルポール', 'ウォルポール'], # 点訳のてびき第3版 第2章 その1 2 1 No.28
- ['ヘリコプタア', 'ヘリコプター'], # 点訳のてびき第3版 第2章 その1 2 1 No.29
- ['ちゅうりっぷ', 'チューリップ'], # 点訳のてびき第3版 第2章 その1 2 1 No.30
- ['おおきに', 'オーキニ', 'オオキニ', ], # 点訳のてびき第3版 第2章 その1 2 3 No.4
- ['おみやぁさん', 'オミャアサン', ], # 点訳のてびき第3版 第2章 その1 2 3 No.6
- ['先生ぇさまぁ', 'センセエサマア', ], # 点訳のてびき第3版 第2章 その1 2 3 No.7
- ['おとゥ', 'オトー', ], # 点訳のてびき第3版 第2章 その1 2 4 No.1
- ['おかァ', 'オカア', ], # 点訳のてびき第3版 第2章 その1 2 4 No.1
- ['クヮルテット', 'クァルテット', ], # 点訳のてびき第3版 第2章 その1 2 4 No.5
- ['ヂェスチャー', 'ジェスチャー', ], # 点訳のてびき第3版 第2章 その1 2 4 No.6
- ['スェーター', 'スエーター', ], # 点訳のてびき第3版 第2章 その1 2 4 No.7
- ['ヒァーッ', 'ヒャーッ', ], # 点訳のてびき第3版 第2章 その1 2 4 No.8
- ['大阪', 'オーサカ', 'オオサカ'], # 点訳のてびき第3版 第2章 その1 2 5 No.1
- ['遠野', 'トーノ', 'トオノ' ], # 点訳のてびき第3版 第2章 その1 2 5 No.2
- ['東井', 'トーイ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.3
- ['青梅', 'オーメ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.10
- ['透', 'トール', 'トオル', ], # 点訳のてびき第3版 第2章 その1 2 5 No.11
- ['みさを', 'ミサオ', 'ミサヲ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.13
- ['かほる', 'カオル', 'カホル', ], # 点訳のてびき第3版 第2章 その1 2 5 No.14
- ['さをり', 'サオリ', 'サヲリ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.19
- ['みやこをどり', 'ミヤコオドリ', 'ミヤコ オドリ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.24
- ['をりがみ', 'オリガミ', ], # 点訳のてびき第3版 第2章 その1 2 5 No.25
- ['八幡平', 'ハチマンタイ', ], # ヤワタダイラ
- ['山ん中', 'ヤマンナカ', ], # 点訳のてびき第3版 第3章 その1 2 No.14
- ['そういうわけ', 'ソーユウワケ', 'ソー イウ ワケ', ], # 点訳のてびき第3版 第3章 その1 3 No.51
- ['そういう', 'ソーユウ', 'ソー イウ', ], # 点訳のてびき第3版 第3章 その1 5 No.2
- ['どうして', 'ドーシテ', 'ドー シテ', ], # 点訳のてびき第3版 第3章 その1 5 No.5
-
- ['システムキャレット', None, 'システム/キャレット'],
- ['フィードバック', None, 'フィード バック'],
- ['インターフェース', None, 'インター フェース'],
- ['オペレーティングシステム', None, 'オペレーティング システム'],
- ['トーキングインストーラー', None, 'トーキングインストーラー'],
- ['アイスクリーム', None, 'アイス クリーム'],
- ['日本点字図書館', None, 'ニッポン テンジ トショカン'],
-
- ['通り', None, 'トオリ'],
- ['狼', None, 'オオカミ'],
- ['通る', None, 'トオル'],
- ['多い', None, 'オオイ'],
- ['多く', None, 'オオク'],
- ['大晦日', None, 'オオミソカ'],
- ['手作り', None, 'テヅクリ'],
- ['南半球', None, 'ミナミ ハンキュー'],
- ['アメリカ合衆国', None, 'アメリカ ガッシューコク'],
- ['第一人者', None, 'ダイ1ニンシャ'],
- ['一流', None, '1リュー'],
- ['一月', None, '1ガツ'],
- ['二月', None, '2ガツ'],
- ['四方', None, '4ホー'],
- ['六法全書', None, '6ポー ゼンショ'],
- ['百人一首', None, '100ニン 1シュ'],
- ['ヱビスビール', None, 'エビス ビール'],
- ['日本コロムビア', None, 'ニッポン コロムビア'],
- ['ビタミンE', None, 'ビタミン E'],
- ['劇団四季', None, 'ゲキダン 4キ'],
- ['四季', None, '4キ'],
- ['四半期', None, '4ハンキ'],
- ['四角形', None, '4カクケイ'],
- ['四条', None, '4ジョー'],
- ['二男', None, '2ナン'],
- ['十数', None, 'ジュー/スー'], # 十,名詞,数
- ['一輪車', None, '1リンシャ'],
- ['三塁打', None, '3ルイダ'],
- ['一汁一菜', None, '1ジュー 1サイ'],
- ['五臓六腑', None, '5ゾー 6プ'],
- ['二・二六事件', None, '2⠼26 ジケン'],
- ['一段', None, '1ダン'],
- ['七転び八起き', None, 'ナナコロビ ヤオキ'],
- ['十重二十重', None, 'トエ ハタエ'],
- ['3ラン', None, '3ラン'],
- ['さんりんしゃ', None, '3リンシャ'],
- ['いちばん', None, '1バン'],
- ['X線', None, 'Xセン'],
-
- #['好かんやつ', 'スカンヤツ', 'スカン ヤツ', ], #点訳のてびき第3版 第3章 その1 2 No.16
- #['嘘みたいな話', 'ウソミタイナハナシ', 'ウソミタイナ ハナシ', ], # 点訳のてびき第3版 第3章 その1 2 No.17
- #['行っていらっしゃい', 'イッテイラッシャイ', 'イッテ イラッシャイ', ], # 点訳のてびき第3版 第3章 その1 4 No.77
- #['ごめんください', 'ゴメンクダサイ', 'ゴメン クダサイ', ], # 点訳のてびき第3版 第3章 その1 4 No.84
- #['おはようございます', 'オハヨーゴザイマス', 'オハヨー ゴザイマス', ], # 点訳のてびき第3版 第3章 その1 4 No.86
- ]
-
- if __name__ == '__main__':
- JT_DIR = os.path.normpath(os.path.join(os.getcwdu(), '..', '..', 'source', 'synthDrivers', 'jtalk'))
- print JT_DIR
- Mecab_initialize(__print, JT_DIR)
- for item in tasks:
- buffer = ''
- result = get_reading(item[0])
- if item[1] is not None and result[0] != item[1]:
- __print('')
- __print('')
- __print(buffer)
- __print('input: ' + item[0])
- __print('reading expected: ' + item[1])
- __print('reading result: ' + result[0])
- if len(item) > 2 and result[1] != item[2]:
- __print('')
- __print('')
- __print(buffer)
- __print('input: ' + item[0])
- __print('braille expected: ' + item[2])
- __print('braille result: ' + result[1])
-
-