本文へ移動

Hikidashi引き出し

和暦と漢数字の相互変換、活用した語の辞書形、漢字への読みの割り当て、貼り付けた文からの単語の抽出、文の難しさ。日本語のテキストを扱う小さな道具を集めた引き出しです。

「引き出し」という名前は、道具が一つずつしまってあり、必要なときに取り出して使える、という意味です。 名前について(英語)

目次

アップグレード

アップグレードと、ほかのライブラリーからの移行

バージョンの間で変わること、そしてIntlの和暦、wanakana、kuromojiとの比較。

バージョン間のアップグレード

Hikidashiはセマンティック バージョニングに従っています。これまでのリリースはすべて1.xなので、移行の作業はありません。どの1.xのリリースも、ほかの1.xと置き換えられます。

**2.0になる変更。**関数の名前、引数、返す値の形の変更。これまで値を返していた入力にnullを返すようになる変更と、その逆。受け付けない入力の変更。エントリーポイントの削除。こうした変更が必要になったら、このページに節を設け、変更点と、代わりに書くコードを一つずつ載せます。

**2.0にならない変更。**新しい関数やエントリーポイントの追加、これまで受け付けなかった入力を正しく読めるようにすること(新しい元号、新しい活用)、間違っていた答えの修正。すべてのリリースは変更履歴にあります。

最新の1.xを入れるには:

npm install @johnmorrisdotca/hikidashi@1

Intl.DateTimeFormatの和暦から移る場合

JavaScriptでも、元号の年を書くことはすでにできます。和暦を指定したIntl.DateTimeFormatでDateを書式化できます。

import { eraOnDate, formatEraYearJapanese } from "@johnmorrisdotca/hikidashi/wareki";

const day = new Date(2019, 4, 1);
console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese", { era: "long", year: "numeric" }).format(day));    // 令和元年
console.log(formatEraYearJapanese(eraOnDate(day)!, { gannen: true }));                                       // 令和元年
令和元年
令和元年

Hikidashiが加えるのは、逆向きの変換と、日付のない年の扱いです。parseEraYearは「令和6年」や「Heisei 3」を西暦の年に変えますが、Intlにはこれができません。eraYearsOfは日付のない年にも答えを返し、改元の年には両方の元号を返します。そして答えは文字列ではなく、元号、その中の年、読み、日付を持ったデータです。またIntlは明治より前にもさかのぼります(Node 24では1850年は嘉永3年)が、Hikidashiはさかのぼりません。分かっている日付を書式化するだけなら、Intlで足ります。

wanakanaから移る場合

wanakanaは、ひらがな、カタカナ、ローマ字を互いに変換し、かなと漢字を見分けます。HikidashiのhiraganaToKatakanaとkatakanaToHiraganaがするのはそのうち最初の部分だけで、一文字ずつの変換です。読みの割り当てに必要だったのはそれだけで、表を持たない数行の関数です。ローマ字、IMEのような入力、漢字かどうかの判定が必要ならwanakanaを使い続けてください。二つは並べて使えます。

kuromojiなどの形態素解析器から移る場合

kuromojiやその仲間は、一緒にダウンロードする辞書(Hikidashiの引き出しが数キロバイトなのに対して、メガバイト単位)を使って文を単語に分け、それぞれの辞書形、品詞、読みを返します。文中のすべての単語に情報を付けたいなら、そちらが適しています。

Hikidashiは、すでにデータベースに辞書があって、大きなダウンロードを避けたい場合のための小さな道具です。dictionaryFormsは活用した一語をその候補に戻し、extractFromTextは手元の辞書が認めた単語を見つけます。助詞に品詞を付けたり、単語の読みを返したり、辞書にない部分を単語に分けたりはしません。貼り付けた文を自分の単語リストと照らし合わせるだけの学習ツールならHikidashiで足り、すべての単語に注釈を付ける読書支援ツールには形態素解析器が必要です。

ソースを見るGitHub で編集@johnmorrisdotca/hikidashi 1.1.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。