
「教養としての」本を調べてみた
本のタイトルには流行というか,定番モノがあって,その一つが「教養としての」だと思う。私の学生時代でも『教養としての言語学』なんてのがあったりした。
ちなみにこの本を高校1年生に全部読ませる授業なんてのもあって,そんなことできるの?ちょっと驚いた。もっともいわゆる進学校での実践だからそこは考える必要あるのだけれど。
さて,「教養としての」の後ろにどんな言葉が来るのかをちょっと調べてみた。以下,手順も書いていて長くなったので目次も出しておこう。
国会図書館サーチで検索&ダウンロード
国立国会図書館サーチを使い,タイトルに「教養としての」を含む本を検索したところ,688件ヒットした。
この段階でNDC分類は出せるので大まかな傾向は掴めるのだけどもうちょっと細かく見てみたい。
右下に「書誌情報を一括出力」があるので一括ダウンロードする。
ゴミ取り
ファイルをエクセル等で開けて見てみると,実は「教養としての」をタイトルに含まないものが入っている。おそらく目次などに入っていると思われるが,今回は面倒なのであらためてタイトルに「教養として」が含まれるもののみに絞り込んだ。この時点で571件。
この中には新版や重複があるので,並べ替えをしてcountif関数を使いつつ目視で大雑把にチェックして処理した。いくつか除外したものを示そう。


この時点で433件になった。
ここにはすでにNDCの分類番号が付いているし,件名標目という本の内容を大雑把に示したキーワードもあるので,それを見ればいいのだが,もうちょっと大づかみにしたかったのでタイトルをあらためて分類することにした。
使ったのはNDC Predictor。タイトルを入れるとNDC9版を自動で推測してくれる。
ただし,タイトルそのままだと「教養としての」が邪魔をしてしまうケースがある。例えば『世界のビジネスエリートを唸らせる教養としての書道』というタイトルはそのまま検索すると「倫理学.道徳--人生訓.教訓」に分類されるが,「書道」だけにすれば「728/書.書道」とより適切そうなものになる。
そこで「教養としての」の前後にタブを入れてあらためてスプレッドシートに読み込ませKWIC検索した状態にし,前のものを除外(ただし『政治學通論 : 教養としての』のように後ろが空白となるケースは個別に前から情報を補う)した。副産物としてこの作業によってさらに重複が見つかったので,419件まで減った。
集計
この第1位のラベルを出して多いものを把握したい。というわけでPythonのプログラムをよんさまに作ってもらった。
import requests
import pandas as pd
# ファイルからタイトルを読み込む
def read_titles_from_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
titles = file.read().splitlines()
return titles
# APIを使用してNDCを予測する関数
def predict_ndc(title):
url = "https://lab.ndl.go.jp/ndc/api/predict"
response = requests.post(url, data={'bib': title})
if response.status_code == 200:
return response.json()
else:
return None
# ファイルパスを指定
file_path = "book教養.txt" # ここにファイルのパスを指定してください
titles = read_titles_from_file(file_path)
# 各タイトルについて関数を使用して分類し、結果を保存
results = []
for title in titles:
prediction = predict_ndc(title)
if prediction:
# 簡単のため、最上位の予測のみを使用
top_prediction = prediction[0]
results.append({
'Title': title,
'NDC Value': top_prediction['value'],
'NDC Label': top_prediction['label'],
'Confidence Score': top_prediction['score']
})
else:
results.append({
'Title': title,
'NDC Value': None,
'NDC Label': None,
'Confidence Score': None
})
# 結果をDataFrameに変換
df = pd.DataFrame(results)
# CSVに保存
csv_path = "NDC_Classification_Results.csv"
df.to_csv(csv_path, index=False)
print(f"結果は {csv_path} に保存されました")
結果のCSVも提供しておこう。
8冊以上あるのが次の9つだった。
情報科学 15冊
スポーツ.体育 15冊
日本史 12冊
数学 10冊
地理.地誌.紀行--日本 9冊
倫理学.道徳--人生訓.教訓 8冊
経済学.経済思想 8冊
金融.銀行.信託 8冊
食品工業 8冊
「日本史」や「数学」は高校まで勉強しても覚えてないケースが多いという意味でコンプレックスを刺激するし,金融や経済関係はビジネスとの結びつきでなんとなく分かる気がするが,「スポーツ.体育」だけはちょっと意外だった。あまり理論面で学ぶことがないから教養扱いさせたかったのだろうか。
ワードクラウドも作ってみた
そこで以前作ったワードクラウドのスクリプトを使ってみたところ,思ったよりもこちらは反映されず,むしろ歴史関係が目立っていた。おそらく少数冊にだけ登場した本に多く現れたのだろう。つまりNDC分類としては多岐にわたるため冊数には反映されないが,いろんな人がいろんな「歴史関係」の教養を説く本を書いている半面,「体育関係」はわりと同じ分類にされるようなものを書いていると言えるかもしれない。ちなみに出力禁止語の設定も書いておく。網羅的ではないが十分な程度だろうとは思う。
stopwords={"が","の","を","と","から","ため","も","で","に","ビジネス","して","知識","学","入門","基礎","講義","論","a","the","and","as","Liberal","Arts","Introduction to","of"}

ちなみにここまで書いて学術的な用語で教養じゃなきゃなんなんだろう?という疑問も湧いてきたが,それは蓋をしておいとく。