日本語処理
日本語処理とは、広義の日本語をコンピュータによって処理する技術をいう。
自然言語処理は一般に AI の一分野とされるが、こと日本語に関しては「過去千年以上のテキストの蓄積がある」「『漢字かな交じり文』という独特の表記体系を採用している」「語順によらず、助詞によって文法格を指定する」「死語ではなく、一億人以上のネイティブの使用者がおり、しかも英語のように他の文化圏では広く使われることがない地域語である」といった特殊事情があるため、他言語の処理とは難易度が格段に高い。そのため、日本語処理はブラックアート(黒魔術)と呼ばれることもある。三十年前と比較すると、マイクロプロセッサの性能は十億倍ほどに向上しているにもかかわらず、「かな漢字変換」の変換精度はむしろ下がっている。
概要[編集]
一般に自然言語処理は「形態素解析」「構文解析」「意味解析」の三つの段階に分けられる。ところが、日本語の場合は「(相手が)未知のことを伝えれば足りる」[1]ので、とにかく省略が多い。欧米の言語のように、頻繁に語頭に主語が現れる(省略される場合は、「私があなたに言っている」という命令形くらいである)わけではない。「月が綺麗ですね」は「私は月を綺麗と感じますが、あなたはどのように感じますか」となるだろうが、「私はあなたを愛する(I love You!)」は「それで?(So what?)」みたいな話になりかねない。「月が綺麗ですね」「…… えぇ、本当に。」みたいな風情をコンピュータに "理解" させようとすると、もっと総合的な手法が必要になってくる。ただし深層学習によっても薄っぺらな応答しかできない。Chat GPU もその程度のレベルでしかない。
したがって、日本語の形態素解析と日本語の構文解析と意味解析は、段階的・個別的には論じがたい。
計量言語学が日本語学の分野であまり取りあげられないのは、日本語処理(より正確には、そのうちの形態素解析)技術があまり知られていないことがある。
- 日本語の不規則活用動詞は「サ行変格活用動詞」の「する」と「カ変」の「来る」だけだと長年されているが、実は「行く/征く/逝く」と「言う/云う/謂う」は 「指標音が -i 音なのに、なぜ -u 音と同じ活用
という意味では不規則活用動詞と謂えなくもないし、
- 「乞う/請う」「問う」は なぜか文語文法のハ行音末尾動詞の活用と同じ
- 「呉れる」の命令形が「くれろ」ではなく「くれ」(連用形現在)になるのは「たまえ」が省略されたもの
とかいうことに気づかないのは、国文法研究者が手軽に使えるようなパソコン環境が普及していないからである。
- 「一」は漢語の頭につくと「イチ」で、和語では「ひと」
- 「大」は漢語の頭につくと「ダイ」で、和語では「おお」
などといった俗説があるが、「ひと波瀾」「ひと騒動」「ひと悶着」、「おお地震」「おお騒動」といった例外にも気づかない。こうした不規則な例は使用頻度が高く小数でも頻出するため、パソコンで淘(よな)げてリストアップしてすべて IME の辞書に登録しておけば、
- かな漢字変換システムの変換精度の向上
- 自働ルビ振り
などによく効く。MicroSoft はこのあたりのノウハウを持っていないので、IME が使いにくい。
日本語処理に向いたプログラミング言語[編集]
とりあえず Java があるが、長所もあれば短所もある。 長所としては、
- 動的なメモリ管理を行なっているため、メモリリークや巡回参照などのトラブルのリスクが小さい。
- UNICODE が原則なので、文字コードによる苦労がない。
- 文字処理向きなクラスやメソッドが、存外豊富に揃っている。
がある。java.lang.Caracter クラスの
- isDefined(char ch)
- isDigit(char ch)
- isIdentifierIgnorablle(char ch)
- isISOControl(char ch)
- isJavaIdentifierPart(char ch)
- isJavaIdentifierStart(char ch)
- isLetter(char ch)
- isLetterOndigit(char ch)
- isLowerCase(char ch)
- isMirrord(char ch)
- isSpaceChar(char ch)
- isTitlCase(char ch)
- isUnicodeIdentifierPart(char ch)
- isUnicodeIdentifierStart(char ch)
- isUpperCase(char ch)
- isWhiteSpace(char ch)
なんかは日本語処理とはなんの関係もなさそうだが、各種のデータファイルを管理するためのツール開発を行うときは便利である。 扱うデータをチェックする際は、
- Characer.UnicodeBlock KATAKANA
- Characer.UnicodeBlock HIRAGANA
- Characer.UnicodeBlock CJK_UNIFIED_ODEPGAPHS
- Characer.UnicodeBlock CJK_UNIFIED_ODEPGAPHS_EXTENTION_A
- Characer.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION
- Characer.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS
などに入っているかをチェックし、「長尾の方法」などを使って大雑把に文節で切ってから処理をすると辞書蒐集が楽である。長尾の方法は、「ひらがなからそれ以外に変わるところで切ると、だいたい文節らしきものが切出せる」という経験則である。辞書作成の順番は
- 形容詞
- 動詞
を切出してから活用形で分類し、しかるのちその辞書を使って名詞を切出すついでにカタカナ語を切出し(ここで「ダブる」「サボる」「ダサい」などが出てくる)、その残り滓からその他の品詞を抜き出して ちまちま分類してゆくのが効率的(とはいっても半年とか一年とか かかるのだが)である[2]。
対して短所といえるのは、
- 大きなデータを扱おうとすると、「コンパクトな環境でも動かせる」ことが裏目に出る。
- ポインタがなく「参照」を使うため、ネットワーク型のデータを扱おうとすると、C プログラマが悩む。
である。しかたなくellispという言語処理系を開発したが、JVM のうえで ellisp の VM が動き、さらにその上で ellisp のコードが動くという「屋上屋を重ねる」ことになり、C プログラマーには「いかにも遅そうだなぁ ……」という気分が抜けない。
脚注[編集]
関連項目[編集]
参考文献[編集]
- 岩渕悦太郎『文語文法 三訂版』、秀英出版、一九五三年三月二十五日初版発行/一九六六年三月二十五日三訂版発行
- 鈴木康之著/佐伯梅友監修『日本語文法の基礎』、三省堂、1977、ISBN4-385-34681-X
- 大野晋『日本語の文法を考える』、岩波書店、1978、岩波新書(黄版)53、ISBN4-00-420053-9
- 坂井秀寿『日本語の文法と論理』、勁草書房、1979
- 寺村秀夫『日本語のシンタクスと意味II』、くろしお出版、1984、ISBN4-87424-003-8
- 佐伯 梅友・森野 宗明・小松 英雄編著『例解古語辞典』第二版、三省堂、1989、ISBN4-385-13316-6
- 斎藤純男『日本語音声学入門』、三省堂、1997、ISBN4-385-34586-4
- 佐伯 梅友・森野 宗明・小松 英雄編著『例解古語辞典』第二版、三省堂、1989、ISBN4-385-13316-6
- 岩淵 匡(いわぶち・ただす)・桜井 光昭・武部 良明・森田 良行 編『日本文法用語辞典』、三省堂、1989、ISBN4-385-13585-1
- 『中学校 国語2』、学校図書株式会社、平成四年二月二十九日文部省検定済