限りなき知の探訪

45年間、『知の探訪』を続けてきた。いま座っている『人類四千年の特等席』からの見晴らしをつづる。

軟財就計:(第5回目)『私のソフトウェア道具箱(その 5)』

2022-03-13 15:55:59 | 日記
前回

前回、私が自作した検索プログラムの xge を紹介したが、プログラマーの中には「検索が 2行、あるいは 3行にまたがる以外は、普通の grep と対して変わらないのでは?」と思われた方も多いであろう。しかし、うろ覚えの中国の故事成句を検索したい時、次のような状況を考えれば、xge の威力が理解できるであろう。漢文の原文は、 Web上には、例えば Wikisource では、豊富にアップロードされているので、まず、これらを漢文をダウンロードしよう。

例えば、論語は次のサイトから全文がダウンロードできる。(ただし、旧字体)
https://zh.wikisource.org/wiki/論語/

冒頭の有名な句は次の通り。
 子曰:「學而時習之,不亦説乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」

たとえば「子いわく、学んで時にこれを習う、また、たのしからずや…」という文句を頼りにこの文章をウェブ上に存在する、漢文検索システム、例えば台湾の「寒泉」、で検索するとしよう。


この文を見つけたい時には、次のような単語でヒットすることを期待するであろう。
 「子 学 時 習」(旧字体では、「子 學 時 習」)
残念ながら、寒泉ではこのような入力ではヒットしない。この句を見つけるには、完全な文字列、しかも旧字体で「學而時習之」を入れないといけない(最低限の文字列は、「學而時」)。字体の問題は簡単に解決できるので、さておいても、問題は、日本人が漢文を覚える時は、書き下し文を訓読みで覚えるので「而」のような字は抜け落ちてしまったり、同音異義語が正しく入力できないことだ。さらに都合の悪いことに、漢文では日本語と動詞と名詞の順序が逆転するので、正しい順序で入力することはさらに難しくなる。例えば、徒然草の第238段に出てくる「紫の、朱奪ふことを悪(にく)む」という文句を検索しようとすると
 「紫 朱 奪 悪」
という検索語を入れるであろうが、原文では「悪紫之奪朱也」と順序がかなり違う。つまり、日本語で漢文を覚えている限り、台湾の寒泉のような検索システムは使いこなすことが非常に困難であるということだ。

ところが、私の自作の xge では、訓読みで覚えている順序の検索語でも、順不同の検索をするので、確実にヒットする。更に、新漢字の入力を内部的に旧漢字に変換して検索するので、わざわざ自分で旧漢字に変換する必要はない。

一方、もし語順通りの文章を見つけたい時はどうするか?それは、別の自作プログラム mgrep を使う。 grep で扱える正規表現のような汎用性はないものの、入力の順序通りの文句を検索できる。この時、入力文字列の頭と尾(head, tail)の間の文字数を指定できるようなオプションもある。文字数を指定することで、思い出したい文句の候補を大幅に絞ることができる。それは、Google検索を使っているとわかるが、複数の文句を入れて検索すると、ヒットした文章のなかには、複数の検索語が全く別の場所に出てくるケースが多々ある。確かに、検索自体は正しいのだが、それは自分の意図しなかったような文章であることが多い。

さて、通常の grep では、検索行が画面に出力されるが、肝心の検索語がどこにあるか分かりにくい。それに対して、 Google検索では、太字で表示されるので検索語が文章のどこにあるかが一目で分かる。このような目的を達成するために extwd (Extract Word) という自作プログラムがある。これは、xge や mgrep の出力ファイルと入力として、不要な文字列は削除して、指定文字から以降の文字列だけを表示する。このように、いろいろなプログラムを組合わせることで、非常に効率よく文章検索することができる。

ところで、私は現在までに、本を8冊出版し、その多くに漢文が登場するが、それはここで紹介した各種の検索ソフト(xge、mgrep、extwd)のお陰である。文章そのものは、上で述べたように中国サイトでは溢れるばかりに見つかるし、 Google検索では、Web上すべてのファイルを対象として検索できるが、いかんせん、それだけでは私の目的とする個所はなかなか発見できない。従来、中国文学や中国歴史の研究者はいわゆる『工具書』とよばれる、辞書類や索引類を頼りに検索していたが、それらはかならずしも網羅的ではないし、たとえ見つかったとしても一部である。私のように、原文をダウンロードして検索すると、以前連載していた 想溢筆翔『資治通鑑に見られる現代用語』のように、語句の使用頻度の統計を算出することもできる。つくづく、現代の文系の研究者にとってプログラミングができることの必要性を強く感じる次第だ。

【参照ブログ】
想溢筆翔:(第315回目)『資治通鑑に見られる現代用語(その158)』

続く。。。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする