cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

zipangu v0.3.0をCRANにリリースしました

日本人が扱う住所や年号、漢数字のデータ操作を楽にするRパッケージ {zipangu}の最新バージョン v0.3.0をCRANにリリースしました。前回のリリースに引き続き、多くの方が開発に協力してくださいました。ありがとうございます。この記事では新たに追加された機能や改善された点について紹介します。

新バージョンの{zipangu}は次のコマンドを実行することでインストールされます。

install.packages("zipangu")

library(zipangu)
rlang::is_installed("zipangu", version = "0.3.0")

それでは新機能の紹介に入ります。

新機能

str_jnormalize()による文字列正規化

以前から日本語文字列の正規化の関数としてstr_jconv()があり、全角文字列と半角文字列の変換が可能でしたが、今回追加されたstr_jnormalize()により、文字列正規化の機能が強化されました。

str_jnormalize()は解析前に行うことが望ましい文字列の正規化処理として定義されているneologdの処理内容を実現するものです。例をあげると「1回以上連続する長音記号は1回に置換」などがあります。対象の文字列を引数に与えて実行します。

str_jnormalize("スーーーパーマン")

## [1] "スーパーマン"

日本語文字列の前処理としてルールを統一し、一元的に実行できるようになっているので便利だと思います。 こちらの関数は@paithiov909さんの貢献により実装されました。ありがとうございます。

平仮名と片仮名のベクトルを生成

Rに定数として用意されているLETTERSを使ったことがある人は多いと思います。これはアルファベットを格納した文字列のオブジェクトです。今回、日本語ユーザのlettersとして新たにkana()を用意しました。こちらはlettersとは異なり関数として機能しますが、歴史的仮名遣を含めた平仮名と片仮名を出力します。

kana("hira")

##  [1] "あ" "い" "う" "え" "お" "か" "き" "く" "け" "こ" "さ" "し" "す" "せ" "そ"
## [16] "た" "ち" "つ" "て" "と" "な" "に" "ぬ" "ね" "の" "は" "ひ" "ふ" "へ" "ほ"
## [31] "ま" "み" "む" "め" "も" "や" "ゆ" "よ" "ら" "り" "る" "れ" "ろ" "わ" "を"
## [46] "ん"

kana("kata")

##  [1] "ア" "イ" "ウ" "エ" "オ" "カ" "キ" "ク" "ケ" "コ" "サ" "シ" "ス" "セ" "ソ"
## [16] "タ" "チ" "ツ" "テ" "ト" "ナ" "ニ" "ヌ" "ネ" "ノ" "ハ" "ヒ" "フ" "ヘ" "ホ"
## [31] "マ" "ミ" "ム" "メ" "モ" "ヤ" "ユ" "ヨ" "ラ" "リ" "ル" "レ" "ロ" "ワ" "ヲ"
## [46] "ン"

kana()は第一引数typeによって出力する文字列の種類を指定します。ここではhirahiraganaが平仮名、kataおよびkatakanaが片仮名の指定となります。

デフォルトでは五十音図の清音「あ」から「ん」が出力されますが、「が」や「だ」などの濁音、「ぱ」「ぽ」といった半濁音、「ぁ」などの捨て仮名(小書き)、さらに歴史的仮名遣で使われる「ゐ」や「ゑ」を含める、またはこれらに限定するおオプションを用意しました。

# 濁音を含めて出力
kana("hiragana", dakuon = TRUE)

##  [1] "あ" "い" "う" "え" "お" "か" "が" "き" "ぎ" "く" "ぐ" "け" "げ" "こ" "ご"
## [16] "さ" "ざ" "し" "じ" "す" "ず" "せ" "ぜ" "そ" "ぞ" "た" "だ" "ち" "ぢ" "つ"
## [31] "づ" "て" "で" "と" "ど" "な" "に" "ぬ" "ね" "の" "は" "ば" "ひ" "び" "ふ"
## [46] "ぶ" "へ" "べ" "ほ" "ぼ" "ま" "み" "む" "め" "も" "や" "ゆ" "よ" "ら" "り"
## [61] "る" "れ" "ろ" "わ" "を" "ん" "ゔ"

# 半濁音のみの出力
kana("hiragana", handakuon = TRUE, core = FALSE)

## [1] "ぱ" "ぴ" "ぷ" "ぺ" "ぽ"

# 歴史的仮名遣
kana("kata", historical = TRUE)

##  [1] "ア" "イ" "ウ" "エ" "オ" "カ" "キ" "ク" "ケ" "コ" "サ" "シ" "ス" "セ" "ソ"
## [16] "タ" "チ" "ツ" "テ" "ト" "ナ" "ニ" "ヌ" "ネ" "ノ" "ハ" "ヒ" "フ" "ヘ" "ホ"
## [31] "マ" "ミ" "ム" "メ" "モ" "ヤ" "ユ" "ヨ" "ラ" "リ" "ル" "レ" "ロ" "ワ" "ヰ"
## [46] "ヱ" "ヲ" "ン"

type引数を指定せずに、関数名で平仮名片仮名の指定が可能なhiragana()katakana()もあります。

hiragana()

##  [1] "あ" "い" "う" "え" "お" "か" "き" "く" "け" "こ" "さ" "し" "す" "せ" "そ"
## [16] "た" "ち" "つ" "て" "と" "な" "に" "ぬ" "ね" "の" "は" "ひ" "ふ" "へ" "ほ"
## [31] "ま" "み" "む" "め" "も" "や" "ゆ" "よ" "ら" "り" "る" "れ" "ろ" "わ" "を"
## [46] "ん"

katakana()

##  [1] "ア" "イ" "ウ" "エ" "オ" "カ" "キ" "ク" "ケ" "コ" "サ" "シ" "ス" "セ" "ソ"
## [16] "タ" "チ" "ツ" "テ" "ト" "ナ" "ニ" "ヌ" "ネ" "ノ" "ハ" "ヒ" "フ" "ヘ" "ホ"
## [31] "マ" "ミ" "ム" "メ" "モ" "ヤ" "ユ" "ヨ" "ラ" "リ" "ル" "レ" "ロ" "ワ" "ヲ"
## [46] "ン"

ダミーデータを作る時など、いちいち文字を入力する必要がなくなるので便利です。

都道府県名の正規化

都道府県名の表記揺れ、例えば「東京」や「茨城」といった都道府県名の最後の県などの表記がないものと「徳島県」といった最後の表記が含まれるものが混在する場合に「東京都」や「茨城県」に修正する処理を実現する関数をharmonize_prefecture_name()として用意しました。末尾の「県」を追加するだけでなく、反対に「県」の除外もオプションで指定可能です。

harmonize_prefecture_name(c("東京", "北海道", "沖縄"), to = "long")

## [1] "東京都" "北海道" "沖縄県"

harmonize_prefecture_name(c("東京都", "北海道", "沖縄県"), to = "short")

## [1] "東京"   "北海道" "沖縄"

改善

祝日評価のための関数についての変更が多くありました。既存のバージョンで挙動がおかしかった問題も解決されました。以下、要点です。

  • 祝日表示の関数 jholiday_spec() をメモ化によって処理速度を高速化 (#38)
  • is_jholiday()でNAを含む入力値を与えた時にエラーとなるのを解決 (#41)

おわりに

今回のバージョンも多くの方の協力により機能追加・修正を行うことができました。ありがとうございます! zipanguでは引き続き、新機能の提案や問題点の報告、使用感についてのご意見を募集しています。 気になる点がありましたら気兼ねなくTwitterGitHub等でコメントください。

Enjoy!