シニョーリア広場8

【ビジネスマン必読書『君主論』全文を統計解析してみました】第5回:外国語マニアの腕が鳴る工程!素材データをクレンジングしていきましょう!

※第4回と第5回では、今回のデータ分析に使用したソフト、使用したロウデータの収集方法の詳細を説明しています。分析の細かい手法に興味がなく早く結果を知りたい方は一足飛びに第6回に進んでいただいて構いません
※また本記事は2019年6月18日時点での情報となります。使用ソフトのバージョンやリンク先存在確認はあくまで執筆時点での最新情報となりますのでご了承ください

前回の記事で、イタリア語原版の『君主論』を、序章+26個の章=27ファイルのテキストファイルに分割してローカル端末に保存するところまでやってみました。

そして、この段階でテキストマイニングをかけても、以下のように一般動詞(英語でいうbe動詞やhave)や代名詞や助動詞にまみれて、見たいデータが埋もれている状態になることを確認しました。

ここからは、語学の好きな人にはたまらなく面白い(語学の嫌いな人にはたまらなく苦痛な)テキストデータのクレンジングという気の長い工程に入っていきます

まずはストップワードを定義しましょう!

最初に、問題となっている「essere」とか「avere」とかいった、「頻度が高くて当たり前」な単語を除外するところから始めましょう。このような語をストップワードといいます。たとえば日本語のストップワードは以下のようなものが考えられます。

これ
それ
あれ
この
その
あの
ここ
そこ
あそこ
こちら






から
まで
より

どの


それで
しかし


これのイタリア語版を自分で作っていけばいいのですが、さすがにそれはしんどいので、以下のようなサイトからもらっちゃいましょう!

https://www.ranks.nl/stopwords/italian

このサイトに載っている「イタリア語のストップワード」を改行リストとしてテキストファイルで保存し、任意のファイル名で保存をしておいてください。この事例では[ignore_stopwords_it.txt]としておきます。

※ちなみに外国語をテキストマイニングするにあたっては、このようなストップワードのリストを見ているだけでもかなり勉強になります!イタリア語ができる方は、どうして上図キャプチャの諸語がストップワードなのか、いろいろ見てみると面白いです!

保存したストップワードのファイルをKH corderから参照させる

続いて、KH Corderのプロジェクトに戻り、

【前処理】→【語の取捨選択】と進みます。

右側の「使用しない語の指定」下の「ファイルから読み込み」欄にチェックを入れて、参照から、先ほど作った[ignore_stopwords_it.txt]を読ませてください。

いったんこの状態で、ふたたび【前処理の実行】を行い、【抽出語リスト】に進みます。

だいぶよくなりましたが、コンマとか、ピリオドとか、イタリア語代名詞のsiやらquellやらがまだ残っていますね。

あとは抽出語リストを繰り返し出してみては、「次回から混じってほしくない」ワードを自分で拾い出して、先ほどの[ignore_stopwords_it.txt]ファイルに付け足していく、という地味な作業に入ります。ここでがんばった分、後日に別のイタリア語テキストを処理する時にも使える自分なりの「ストップワード辞書」ができることになるので、がんばってみましょう!外国語の勉強にもかなりなります!

今度は強制抽出語のリストを作成します

先ほどの工程を経るにしたがって、自分が「ほしい」品詞やキーワードだけが精度高く抽出できるようになってきたかと思います。ですが、先ほどの抽出語にはもう一つ、問題があります。

たとえば「チェーザレ・ボルジア」は、まとめてひとつの人名として抽出してほしいはずですが、普通に抽出すると「Cesare」と「Borigia」の2つに分解されて出てきてしまいます。

このような場合、「この単語の連なりの場合は、1語とみなしてほしい」というリストを自分で作って、KH Coderに読み込ませます。これを強制抽出語リストといいます。

細かい手順は割愛しますが、一例として、今回の分析のために私が用意した強制抽出語リストを以下に公開します。実際は、何度も何度も分析を試行錯誤しながら、このリストを少しずつ作り上げていく気の長い工程となります。つまり以下も私のかなりの苦心惨憺の結果です!

MAGNIFICO LORENZO
PIERO DE' MEDICI
Francesco Sforza
Ferrando Re di Spagna
Duca di Ferrara
Papa Iulio
Luigi XII
Lodovico
Antioco
Filippo
Carlo VIII
Papa Alessandro
Cardinale Roano
Cesare Borgia
Duca Valentino
Alessandro Magno
Dario
Pirro
Moisè
Ciro
Romulo
Teseo
Girolamo Savonarola
Ierone
Ramiro d’Orco
S. Pietro ad Vincula
Giovanni Colonna
S. Giorgio
Ascanio
Epaminonda
Giovanna di Napoli
Giovanni Acuto
Paolo Orsini
Paulo Vitelli
Paolo Vitelli
Agatocle
Amilcare Cartaginese
Oliverotto da Fermo
Vitellozzo Vitelli
Giovanni Fogliani
Nabide
Gracchi
Giorgio Scali
Papa Sisto IV
Papa Leone
Alberigo da Como Romagnuolo
Bartolommeo da Bergamo
Ruberto da S. Severino
il Conte di Pitigliano
Carmignuola
Giovanni VI Cantacuzeno
David
Saul
Golia
Carlo VII
Luigi XI
Filopemene
Scipione
Ciro
Gaio Giulio Cesare
Achille
Senofonte
Virgilio
Didone
Annibale
Fabio Massimo
AnnibaleBentivogli
GiovanniBentivogli
Marco
Pertinace
AlessandroSevero
Commodo
Pertinace
Didio Giuliano
Severo
Antonino
Caracalla
Eliogabalo
Macrino
Pandolfo Petrucci
Guid’Ubaldo
Conte Girolamo
Contessa di Furlì
Bernabò di Milano
Antonio da Venafro
Pre’ Luca
Massimiliano Imperatore
FilippoV Macedone
Tito Quinzio
Federico I di Napoli
Petrarca

これを[forcewords_principe_it.txt]とでもつけて保存し、今度は左側、強制抽出する語の指定」欄の「ファイルから読み込み」にチェックを入れて、このファイルを参照させてください。

まだやることは残っています!今度はもとデータのクレンジング

この段階で、また抽出語リストを出力してみましょう!

すると、以下のような人名リストを得ることができます。

だいぶ、今回の目的である、「『君主論』を登場人物名をキーワードに分析する」という方針に沿った抽出結果が得られるようになってきました。ですが、この結果にもまだ弱点があります。

たとえば、トップにきている「Duca Valentino(バレンティノ公)」。これはチェーザレ・ボルジアの別名ですから、これはチェーザレ・ボルジアと同じカウントに含んでほしい。

他にも、チェーザレ・ボルジアのお父さんであるアレサンデル6世と、古代マケドニアの英雄であるアレクサンドロス大王、およびローマ皇帝のアレクサンデルが、マキャベリの原文では三人とも「Alessandro」と呼ばれているという致命的問題もありますね!!

お父さんのAlessandroは「Papa Alessandro」(教皇のAlessandro)、マケドニアの英雄Alessandroは「Alessandro Magno」(大王のAlessandro)、ローマ皇帝のAlessandroは「AlessandroSevero」(フルネームの「アレクサンドロ・セヴェーロ」)、に表記をわけて出力してほしい。

そこで、もとのテキストデータを複製して、

・Duca ValentinoはすべてCesare Borgiaに置換する
・Alessandroという人名は、ひとつひとつ文脈を確認して、「Papa Alessandro」「Alessandro Magno」「AlessandroSevero」と、置換していく

という息の長い処理をかけていきます。この作業は『機械にはできないので、自分で文脈を見ながら一つ一つ手で直していきます。

ヨシ、いい感じになってきましたね!

他にも「フランス王」と呼ばれている中に「ルイ7世」と「シャルル8世」が混在していたり、いろいろと厄介な障害があってキリがないので、以下の方針まで手動補正をかけ、残りは無視、としました。

・固有名詞はすべて拾い、紛らわしい人名はフルネームや「教皇の○○」「フランス王の○○」など役職付にして見分けられるよう修正

・「フランス王」とか「スペイン王」とか「バレンティノ公」といった役職名で呼ばれている場合も、広義の固有名詞とみなし、上記の表記に寄せる

・「彼」とか「あの男」とかいう場合は、具体的人名への言及ではないとみなし、カウントしない

・同じ理由で、「あの頃の教皇は」とか「今の時代のフランス王ときたら」といった言い方をされている場合も、具体的な人名とは別とみなし、カウントしない(残念ながら、判断はかなり主観的になってしまいましたが)

このルールで辞書を再定義するだけで1日くらいかかったので、これで勘弁していただくとして(!)、、、

ようやく、君主論に登場する「人物たち」の総覧が出来上がりました!

結果は次回の記事で公開します!

子供の時の私を夜な夜な悩ませてくれた、、、しかし、今は大事な「自分の精神世界の仲間達」となった、夢日記の登場キャラクター達と一緒に、日々、文章の腕、イラストの腕を磨いていきます!ちょっと特異な気質を持ってるらしい私の人生経験が、誰かの人生の励みや参考になれば嬉しいです!