Google Ngram viewerの使いかた①
前書き
前回,Google Ngram Viewerについて説明しようとしたが,どちらかというと複数語からなる形容詞句についての説明になってしまった。そこで今回は,ちゃんと使い方について紹介する。というか,チュートリアルをかいつまんで翻訳する。なので,英語自信ニキは自分で読んでみてほしい。
Wildcard search
まず,文字列の指定にはワイルドカード「*」が使える。この文脈でのワイルドカードの意味とは,「任意の文字列」という意味である。言葉で説明しようとすると案外難しかったので,いくつか説明を引用する。
ワイルドカード文字はテキスト値の中の不明な文字を表し、類似したデータを持つ複数の項目を検索する場合に便利です。 また、指定したパターン マッチに基づいてデータを取得する場合もワイルドカードを利用できます。
ワイルドカード文字の例
ワイルドカードとは、一部不明な文字の代わりに利用する代替文字。
関数の引数内や、オートフィルタであいまい検索をするときに使います。
文字列の検索や置き換え時、フィルタの抽出時に便利です。(中略)
「*」(半角アスタリスク)」は、どんな文字にもどんな文字数にもなれる便利文字です。
ワイルドカード(あいまい検索) 「*」(半角アスタリスク)
これはMicrosoft AccessやExcelでの説明だが,用途については同様である。
さて,言葉だけでは分かりづらいと思うので,実例をお見せしよう。例えば,Windowsのパソコンの人気度を調べたい場合に,「Windows *」と調べることができる。
このことから,近年では「この期間に発行された書籍の中で」Windows7について言及されたことが一番多いことや,その後はWindows Serverにとって代わられたことなどが分かる。
また,右側の候補のどれかにカーソルを合わせたうえで右クリックすると,それぞれの候補の足し合わせが表示される。
このことから,Windowsについて言及される割合が減ってきているということも読み取れる。
また,ワイルドカード検索には次のような制約もある。
- 一つのNgramにつき一つのワイルドカードしか使用できない(×「it is * of *」)
- 上位10個を選択している都合上,時間の範囲を変えると順番や候補が入れ替わる場合がある
また,これから紹介する別の方法と組み合わせられるのも強み。
Inflection search
Inflectionとは語形変化のこと。したがって,Inflection searchはある単語が持つ複数の品詞で検索することである。
An inflection is the modification of a word to represent various grammatical categories such as aspect, case, gender, mood, number, person, tense and voice.
(語形変化とは,アスペクト,格,性別,ムード,数,人称,時制,声調など、さまざまな文法的カテゴリーを表すために単語を変化させることである。)
Inflection search,()内は筆者翻訳
これも実例を見てみよう。「Train approach_INF」と検索するとどうなるだろうか。
面白いことに,Trainにapproachが付く際に,「approach」と「approaches」の両方が見られ,その二つを比べた際に「approach」の方が多いということである。Trainは可算名詞であるためTrainが主語であれば「approaches」になるような気がするが,いったいなぜなのだろうか。おそらく冠詞を付けずにTrainから始めているため,新聞記事の見出しなどがカウントされているのだろう。
実際,「A train approach_INF」で検索してみると,
となり,「A train approach」という用法は現れないことが分かる。
ちなみに,Wildcard Searchと同様に,候補にカーソルを合わせて右クリックするとグラフを足し合わせたものが見れる。
また,Wildcard Searchと同様の制約もある。
- 一つのNgramにつき一つのワイルドカードしか使用できない(×「it is * of *」)(再掲)
- 上位10個を選択している都合上,時間の範囲を変えると順番や候補が入れ替わる場合がある(再掲)
- ワイルドカードと同時に使うことはできない(×「Train approach_INF *」〇「Train approach_INF, Train approach *」)
Case insensitive search
Ngram Viewerの検索は,基本的には完全一致で検索する。しかし,例えば大文字小文字に関する表記ゆれなどについて調べたい場合は,大文字小文字に関係なく可能なパターンについて調べるべきである。これが2~3程度であれば「,」で区切ってそれぞれを検索することも可能だろうが,パターン数がわからない場合などにはCase insensitive searchが役に立つだろう。
使い方は簡単で,検索窓の下にあるCase-insensitiveをアクティブ(水色)にすればよい。
では,実際に使ってみよう。「united states of america」はどこを大文字にすべきだろうか。アメリカは国名だから頭文字は大文字だろう。では他は?
最も多く使われているのがすべての頭文字のみを大文字にする「United States of America」であることがわかる。また,そのほかの表記はほとんど使われていないが,すべて大文字の「UNITED STATES OF AMERICA」が唯一無視できない程度には表れている。これはおそらく書籍のタイトルなど,限定された用法なのだろう。
ちなみにこれは載せないが,今までと同様に右クリックで時間ごとの総和が見れる。
Part-of-speech Tags
ある単語を考えた時に,同じスペルで動詞と名詞どちらの使われ方もされる単語がある(例:tackleは"tackle the problem"という動詞での用法と"fishing tackle"という名詞での用法がある)。これらを区別したい場合,tagをつけることで区別できる。
例えば,「google」という単語は名詞だけでなく「googleで検索する」という意味で動詞として使われることがある。
これを見ると,googleという言葉が世に出てから(Googleが法人格を取得したのは1998年9月4日)まず名詞として使われ始め,それから約5年ほど遅れて動詞として使われだしたことがわかる。実際,Wikipediaにはこんな記述もある。
「Google」という言葉が日常的な語として浸透したことを受け、2006年に『メリアム=ウェブスター大学辞典』ならびに『オックスフォード英語辞典』は「Google」という動詞を収録した[48][49]。大衆文化における動詞「Google」の最初の使用例は、TVドラマシリーズ『バフィー ~恋する十字架~』 の2002年のエピソード内で見られた[50]。
Wikipedia「Google」
この記述は確かにNgram Viewerの結果と矛盾しない。
このように,品詞などを固定して検索できる機能だが,名詞や動詞だけでなく他の品詞などに対応するtagが存在する。
_NOUN_ | noun, 名詞 | これらのタグは単独(_PRON_)でもほかの単語に付け加える形(She_PRON)でも両方使える。 |
_VERB_ | verb, 動詞 | |
_ADJ_ | adjective, 形容詞 | |
_ADV_ | adverb, 副詞 | |
_PRON_ | pronoun, 代名詞 | |
_DET_ | determiner or article, 限定詞または冠詞 | |
_ADP_ | an ad-position: either a preposition or a postposition,前置詞や後置詞 | |
_NUM_ | numeral, 数詞 | |
_CONJ_ | conjunction, 接続詞 | |
_PRT_ | partcle, 不変化詞 | |
_ROOT_ | root of the parse tree, | これらのタグは単独でのみ利用できる |
_START_ | start of a sentence, 文頭 | |
_END_ | end of a sentence, 文末 |
例えば,「it sounds」の後に形容詞を続けて「それは~だね」のような表現があるが,tagを使うことでどれくらい使われているかを見ることができる。
ただ,正直これだとあまり情報がない。ところが,ワイルドカードと組み合わせることで,どのような形容詞が使われているかを調べることができる。
これにより,驚きを表す「crazy」や共感を表す「nice」がよくつかわれていることがわかる。また,どちらかというと驚きなどを表現するのによく使われ,「stupid」や「ridiculous」,「weird」などのマイナス表現の方が使われがちだということもわかる。
一方で,単に「it sounds *」のようにワイルドカードを使った場合はどうなるか。
この結果から,単にワイルドカードをつけるだけだとsoundsの後に副詞による強調がある表現も検索に引っかかってしまうため,欲しい結果が得られないことがわかる。
また,tag自身もワイルドカードで指定することができる。最初の方の例と同様に,「google」という語がどのように使われているかを調べてみる。
このことから,「google」という単語は形容詞としてもよくつかわれていることがわかる。これはおそらくgoogleのサービス名が「google ~」のような命名をされているためだろう。実際,
のように,googleのサービス名が多くhitし,これらの累積グラフが
となり,出現割合がほぼ等しいことから,形容詞的用法はサービス名によるものであるといえる。
また,tag同士は組み合わせることもできる。例えば,「boiled」は動詞の過去形としても「boiled egg」のような修飾語としても使える。したがって,単に「boil_INF」にした場合,動詞だけの結果が出るとは限らない。これを見るためには「boil_INF, boil_INF_VERB, boil_INF_ADJ」で検索すればよい。
左が検索結果,右が右クリックで検索結果を累積グラフにしたものである。ほぼboil_INF = boil_VERB_INF + boil_ADJ_INFになっており,boil_INFの検索結果には動詞と形容詞的用法のどちらも含まれていることがわかる。したがって厳密に品詞を区別して検索したい場合にはtagの組み合わせが有効になるだろう。
単にパターンだけでなく,関係性に注目して検索したい場合には「=>」オペレーターが使える。これも例を使ってみてみよう。「learning」と一緒に使われる単語は何なのだろうか。ここではワイルドカードやtagを併用して,「learning=>*_NOUN」で検索してみる。上から読んでいる人はわかるだろうが,一応意味を書いておくと「learningと一緒に使われている(=>),何でもいいけど(*)名詞のやつ(_NOUN)」である。
まず,learningとともに使われている単語は「language」で,語学学習が30年間重要視され続けていることが分かる。また,「student」も比較的よく使われている単語であることも分かる。興味深いのは「machine」で,機械学習が流行っていることを受けて近年の使用頻度が急上昇していることが見られる。
次に,「_ROOT_」について説明したいのだが,正直良い使い方が思いつかない。一応以下に原文と訳を載せる。
Every parsed sentence has a _ROOT_. Unlike other tags, _ROOT_ doesn't stand for a particular word or position in the sentence. It's the root of the parse tree constructed by analyzing the syntax; you can think of it as a placeholder for what the main verb of the sentence is modifying.
解析されたすべての文には_ROOT_があります。他のタグとは異なり,_ROOT_は特定の単語や文中の位置を表すものではなく,構文を解析して構築された解析ツリーのルートです。文の主動詞が何を修飾しているかを示すプレースホルダーと考えることができます。
_ROOT_,()内は筆者翻訳
結局,文の主動詞に使われている頻度を調べられるだけっぽい?もう少し使い方が分かったら追記するかも。
後書き
とりあえず書きだしてみたら,思ったより多い分量や自由度で長くかかってしまったので2分割することにした。
次回は後半を書こうと思うが,また2週間かかるかも?