名前
Lingua::JA::Moji - 総合日本文字変換「文字ュール」
概要
日本の文字の総合変換
use Lingua::JA::Moji qw/kana2romaji romaji2kana/;
use utf8;
my $romaji = kana2romaji ('あいうえお');
# $romaji is now 'aiueo'.
my $kana = romaji2kana ($romaji);
# $kana is now 'アイウエオ'.
説明
本モジュールはあらゆる日本の文字変換を目的とします。
全てのfunctionはユニコードを前提とします。全ての入出力はutf-8でやる。
ローマ字変換
かな ⇄ ローマ字
kana2romaji
仮名をローマ字に.
use Lingua::JA::Moji 'kana2romaji';
$romaji = kana2romaji ("うれしいこども");
# $romaji = 'uresîkodomo'
仮名をローマ字に変換。
オプションは関数の2番目の引数でハシュリファレンスとして入ります。
use utf8;
$romaji = kana2romaji ("しんぶん", {style => "hepburn"});
# $romaji = "shimbun"
可能なオプションは
- style
-
ローマ字の種類。
- undef
-
ディフォルトは日本式(「つづり」が「tuduri」, 「少女」が「syôzyo」)。
- passport
-
パスポート式(「伊藤」が「itoh」)
- kunrei
-
訓令式(少学校4年で習うローマ字法)
- hepburn
-
ヘボン式(「つづり」が「tsuzuri」, 「少女」が「shōjo」)。 これを選べば、下記のuse_mが真になり、ve_typeがmacronになります。
- common
-
「ジェット」が「jetto」になります。「ウェ」が「we」になります。
- use_m
-
真なら「しんぶん」が「shimbun」 偽なら「ぐんま」が「gunma」
- ve_type
-
長い母音はどの様に表現する。
- undef
-
曲折アクセント(ô)を使う。
- macron
-
マクロン(ō)を使う。
- passport
-
「アー」、「イー」、「ウー」、「エー」が「a」, 「i」, 「u」, 「e」になり、「オー」が「oh」になる。
- none
-
「アー」、「イー」、「ウー」、「エー」ガ「a」, 「i」, 「u」, 「e」, 「o」になる。
- wapuro
-
「アー」、「イー」、「ウー」、「エー」ガ「a-」, 「i-」, 「u-」, 「e-」, 「o-」になる。「おう」が「ou」など、仮名の長音を仮名で代表するよう、ロー マ字入力のようなことです。
- wapuro
-
ワープロローマ字。長音符を使わない。「少女」が「shoujo」など。
- wo
-
kana2romaji ("ちりぬるを", { wo => 1 });
"wo"が真なら、「を」が"wo"になります。そうでもない場合は"o"になります。
romaji2kana
ローマ字を仮名に.
use Lingua::JA::Moji 'romaji2kana';
$kana = romaji2kana ('yamaguti');
# $kana = 'ヤマグチ'
ローマ字をカタカナに変換する。ローマ字はできるだけ幅広く受け入れる。 ローマ字をひらがなに変換したいときは"romaji2hiragana"をお使いください。
ローマ字変換のオプションは関数の2番目の引数でハシュリファレンスとして入る。
$kana = romaji2kana ($romaji, {wapuro => 1});
長音「ou」を「オー」ではなく、「オウ」にしたいときはwapuroを真にする wapuro => 1
。
$kana = romaji2kana ($romaji, {ime => 1});
ime => 1
オプションでIMEのような変換ができます。たとえば、"gumma"が「グッマ」、"onnna"が「オンナ」となります。パスポートローマ字 ("Ohshimizu") は無効となります。
romaji2hiragana
ローマ字をひらがなに.
use Lingua::JA::Moji 'romaji2hiragana';
$hiragana = romaji2hiragana ('babubo');
# $hiragana = 'ばぶぼ'
ローマ字をひらがなに変関する。オプションは"romaji2kana"と同じ。wapuroオプション もオンにしたら、「ou」が「おー」ではなく、「おう」になる。
romaji_styles
use Lingua::JA::Moji 'romaji_styles';
my @styles = romaji_styles ();
# Returns a true value
romaji_styles ("hepburn");
# Returns the undefined value
romaji_styles ("frogs");
引数があれば、その引数をローマ字方法として認めるなら真、認めないなら偽。
引数がなければ、すべてのローマ字方法をハシュリファレンスの列として戻す。
is_voiced
use Lingua::JA::Moji 'is_voiced';
if (is_voiced ('が')) {
print "が is voiced.\n";
}
仮名かローマ字は濁音(゛)、半濁音(゜)がついていれば、真、ついていなければ偽(undef)。
is_romaji
use Lingua::JA::Moji 'is_romaji';
# The following line returns "undef"
is_romaji ("abcdefg");
# The following line returns a defined value
is_romaji ('loyehye');
# The following line returns a defined value
is_romaji ("atarimae");
アルファベットの列はローマ字に見えるなら真、見えないなら偽。
is_romaji_strict
use Lingua::JA::Moji 'is_romaji_strict';
# The following line returns "undef"
is_romaji_strict ("abcdefg");
# The following line returns "undef"
is_romaji_strict ('loyehye');
# The following line returns a defined value
is_romaji_strict ("atarimae");
アルファベットの列はローマ字に見えるなら真、見えないなら偽。"is_romaji"より厳しく、コンピューター入力に見えるかどうかではなく、本当に「日本語」かどうか確認する。
normalize_romaji
use Lingua::JA::Moji 'normalize_romaji';
$normalized = normalize_romaji ('tsumuji');
normalize_romaji
はかなやローマ字で書いた言葉を比べるため、かなやローマ字の言葉を決まったローマ字の書き方になおします。この「決まった」ローマ字は本モジュール限定のもので、あくまでも違ったかなや違ったローマ字法で書いた言葉を比べるためだけのものに過ぎませんので、正式なローマ字法と間違わないように。
仮名
仮名を仮名に変換すること。
hira2kata
ひらがなをカタカナに.
use Lingua::JA::Moji 'hira2kata';
$katakana = hira2kata ('ひらがな');
# $katakana = 'ヒラガナ'
平仮名をかたかなに変換します。長音符は変わりません。(「オー」は「おう」になりません。)
kata2hira
カタカナをひらがなに.
use Lingua::JA::Moji 'kata2hira';
$hiragana = kata2hira ('カキクケコ');
# $hiragana = 'かきくけこ'
かたかなを平仮名に変換します。長音符は変換しません。
kana2katakana
仮名をカタカナに.
use Lingua::JA::Moji 'kana2katakana';
全角かたかな、ひらがな、半角かたかな、丸かたかななどあらゆる「仮名」を全角かたかなに変換する。
kana_to_large
use Lingua::JA::Moji 'kana_to_large';
$large = kana_to_large ('ぁあぃい');
# $large = 'ああいい'
「ぁ」など小さい仮名を「あ」に変換する。
nigori_first
use Lingua::JA::Moji 'nigori_first';
my @list = (qw/カン スウ ハツ オオ/);
nigori_first (\@list);
# Now @list = (qw/カン スウ ハツ オオ ガン ズウ バツ パツ/);
一番最初のかなに濁点又は半濁点をつける.
InHankakuKatakana
use Lingua::JA::Moji 'InHankakuKatakana';
use utf8;
if ('ア' =~ /\p{InHankakuKatakana}/) {
print "ア is half-width katakana\n";
}
InHankakuKatakana
は正規表現に使う半角カタカナにマッチする。
kana2hw
仮名を半角カタカナに.
use Lingua::JA::Moji 'kana2hw';
$half_width = kana2hw ('あいウカキぎょう。');
# $half_width = 'アイウカキギョウ。'
あらゆる仮名文字を半角カタカナに変換する。かたかなのみを変換する場合は"katakana2hw"を使ってください。
hw2katakana
半角カタカナをカタカナに.
use Lingua::JA::Moji 'hw2katakana';
$full_width = hw2katakana ('アイウカキギョウ。');
# $full_width = 'アイウカキギョウ。'
半角カタカナを全角カタカナに変換する。
katakana2hw
カタカナを半角カタカナに.
use Lingua::JA::Moji 'katakana2hw';
$hw = katakana2hw ("あいうえおアイウエオ");
# $hw = 'あいうえおアイウエオ'
全角かたかなを半角かたかなに変換し、ひらがなをそのままにする。"kana2hw"も参照。
is_kana
use Lingua::JA::Moji 'is_kana';
入力が仮名のみの場合、真、入力が仮名なでない文字を含む場合、偽(undef)。
is_hiragana
use Lingua::JA::Moji 'is_hiragana';
入力が平仮名のみの場合、真、入力が平仮名なでない文字を含む場合、偽(undef)。「ー」があれば偽になる。
kana_order
use Lingua::JA::Moji 'kana_order';
$kana_order = kana_order ();
仮名の(適当な)順番を返す。
katakana2syllable
use Lingua::JA::Moji 'katakana2syllable';
$syllables = katakana2syllable ('ソーシャルブックマークサービス');
カタカナをシラブルにわける。たとえば、「ソーシャル」 は'ソ', 'ー', 'シ', 'ャ', 'ル'という意味のない文字ではなく、日本語の 「原子」の'ソー', 'シャ', 'ル'になる。
InKana
use Lingua::JA::Moji 'InKana';
$is_kana = ('あいうえお' =~ /^\p{InKana}+$/);
# $is_kana = '1'
正規表現に使うカタカナとひらがなにマッチする。
詳しくいうと以下の正規表現
qr/\p{Katakana}|\p{InKatakana}|\p{InHiragana}|ー|゙|゚>/
と殆どおなじ効果ですが、\p{Katakana}
がマッチする未使用のコードポイントはマッチしません。「・」もマッチしません。
square2katakana
use Lingua::JA::Moji 'square2katakana';
$kata = square2katakana ('㌆');
# $kata = 'ウォン'
「㌆」を「ウォン」にするなど。
katakana2square
use Lingua::JA::Moji 'katakana2square';
$sq = katakana2square ('アイウエオウォン');
# $sq = 'アイウエオ㌆'
可能なかぎり、「ウォン」を「㌆」にするなど。
全角英数字
全角英数字の変換・認識。
InWideAscii
use Lingua::JA::Moji 'InWideAscii';
use utf8;
if ('A' =~ /\p{InWideAscii}/) {
print "A is wide ascii\n";
}
正規表現に使う全角英数字にマッチする。
wide2ascii
全角英数字を半角英数字に.
use Lingua::JA::Moji 'wide2ascii';
$ascii = wide2ascii ('abCE019');
# $ascii = 'abCE019'
全角英数字を半角英数字(ASCII)に変換する。
ascii2wide
半角英数字を全角英数字に.
use Lingua::JA::Moji 'ascii2wide';
$wide = ascii2wide ('abCE019');
# $wide = 'abCE019'
半角英数字(ASCII)を全角英数字に変換する。
その他の文字
kana2morse
仮名を和文モールス符号に.
use Lingua::JA::Moji 'kana2morse';
$morse = kana2morse ('しょっちゅう');
# $morse = '--.-. -- .--. ..-. -..-- ..-'
かなをモースコードに変換する。日本語のモースコードは「っ」など小さいかなを表現できないので、仮名をモースコードにして、モースコードからまた仮名にする場合は「しょっちゅう」が「シヨツチユウ」になる。
morse2kana
和文モールス符号を仮名に.
use Lingua::JA::Moji 'morse2kana';
$kana = morse2kana ('--.-. -- .--. ..-. -..-- ..-');
# $kana = 'シヨツチユウ'
モースコードをかなに変換する。モースコードは分かち書きが必要だ。
欠点
テストが不十分。
kana2braille
仮名を点字に.
use Lingua::JA::Moji 'kana2braille';
仮名を点字に変換する。
欠点
きちんとしたテストがない。日本語を点字に変換することはわたちがきが必要だがこの関数はそれをしないので、不十分な変換機能だ。
braille2kana
点字を仮名に.
use Lingua::JA::Moji 'braille2kana';
点字をカタカナに変換。
kana2circled
仮名を丸付けカタカナに.
use Lingua::JA::Moji 'kana2circled';
$circled = kana2circled ('あいうえお');
# $circled = '㋐㋑㋒㋓㋔'
仮名を丸付けかたかなに変換する。丸付け「ン」がないので、ンはそのままとなる。 丸付け片假名はユニコード32D0〜32FEにある。
circled2kana
丸付けカタカナを仮名に.
use Lingua::JA::Moji 'circled2kana';
$kana = circled2kana ('㋐㋑㋒㋓㋔');
# $kana = 'アイウエオ'
丸がついているかたかなを全角かたかなに変換する。
漢字
new2old_kanji
親字体を旧字体に.
use Lingua::JA::Moji 'new2old_kanji';
$old = new2old_kanji ('三国 連太郎');
# $old = '三國 連太郎'
親字体を旧字体に変換する
欠点
新旧字体の情報は適当なものだ。「弁」は旧字体が三つなので、変換不可能。
old2new_kanji
旧字体を親字体に.
use Lingua::JA::Moji 'old2new_kanji';
$new = old2new_kanji ('櫻井');
# $new = '桜井'
旧字体を親字体に変換する
circled2kanji
use Lingua::JA::Moji 'circled2kanji';
$kanji = circled2kanji ('㊯');
# $kanji = '協'
丸付け漢字を普通の漢字に変換する。
kanji2circled
use Lingua::JA::Moji 'kanji2circled';
$kanji = kanji2circled ('協嬉');
# $kanji = '㊯嬉'
漢字を丸付け漢字に変換する。
bracketed2kanji
use Lingua::JA::Moji 'bracketed2kanji';
$kanji = bracketed2kanji ('㈱');
# $kanji = '株'
括弧漢字を普通の漢字に変換する。
kanji2bracketed
use Lingua::JA::Moji 'kanji2bracketed';
$kanji = kanji2bracketed ('株');
# $kanji = '㈱'
普通の漢字を括弧漢字をに変換する。
日本語のキリル文字表記
実験的に仮名とキリル文字の変換をする。キリル文字に詳しい方の確認がない。
kana2cyrillic
仮名をキリル文字に.
use Lingua::JA::Moji 'kana2cyrillic';
$cyril = kana2cyrillic ('シンブン');
# $cyril = 'симбун'
cyrillic2katakana
キリル文字をカタカナに.
use Lingua::JA::Moji 'cyrillic2katakana';
$kana = cyrillic2katakana ('симбун');
# $kana = 'シンブン'
ハングル
kana2hangul
use Lingua::JA::Moji 'kana2hangul';
$hangul = kana2hangul ('すごわざ');
# $hangul = '스고와자'
欠点
http://kajiritate-no-hangul.com/kana.htmlを使ってみましたがただしいかどうか証明がありません。
参考資料
CPANの本モジュール意外のものは次にあります
ローマ字かな変換
- Data::Validate::Japanese
-
This contains four validators for kanji and kana,
is_hiragana
, corresponding to "is_hiragana" in this module, and three more,is_kanji
,is_katakana
, andis_h_katakana
, for half-width katakana. - Lingua::JA::Kana
-
This contains convertors for hiragana, half width and full width katakana, and romaji. As of version 0.07 [Aug 06, 2012], the romaji conversion is less complete than this module.
- Lingua::JA::Romanize::Japanese
-
Romanization of Japanese. The module also includes romanization of kanji via the kakasi kanji to romaji convertor, and other functions.
- Lingua::JA::Romaji::Valid
-
Validate romanized Japanese. This module does the same thing as "is_romaji" in Lingua::JA::Moji.
- Lingua::JA::Hepburn::Passport
-
Passport romanization, which means converting long vowels into "OH". This corresponds to "kana2romaji" in the current module using the
passport => 1
option, for example$romaji = kana2romaji ("かとう", {style => 'hepburn', passport => 1});
- Lingua::JA::Fold
-
Full/half width conversion, collation of Japanese text.
- Lingua::JA::Romaji
-
Romaji to kana/kana to romaji conversion.
- Lingua::JA::Regular::Unicode
-
This includes hiragana to katakana, full width / half width, and wide ascii conversion. The strange name is due to its being an extension of Lingua::JA::Regular using Unicode-encoded strings.
- Lingua::JA::NormalizeText
-
A huge collection of normalization functions for Japanese text. If Lingua::JA::Moji does not have it, Lingua::JA::NormalizeText may do.
- Lingua::KO::Munja
-
This is similar to the present module for Korean.
漢字かな変換
- Lingua::JA::Romanize::MeCab
-
Romanization of Japanese language with MeCab
- Text::MeCab
- Lingua::JA::Romanize::Japanese
-
Romanization of Japanese language via kakasi.
本
幣モジュールは冨田尚樹氏の「Perl CPANモジュールガイド」に説明しています。 (ISBN 978-4862671080 WEB+DB PRESS plus, 2011年4月出版)
EXPORT
This module exports its functions only on request. To export all the functions in the module,
use Lingua::JA::Moji ':all';
著者
Ben Bullock, <bkb@cpan.org>
COPYRIGHT & LICENSE
Copyright 2008-2014 Ben Bullock, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
ACKNOWLEDGEMENTS
Thanks to Naoki Tomita, David Steinbrunner, and Neil Bowers for fixes.