豊満な脳みそ←わがままブレーン

ただただ、暗号文をつくりたいがため・・・・・・ 専用の復号プログラムとパスナンバーが9つあれば読めるブログ。さもなければ、ある程度正確に暗号化の仕組みを理解したうえで、総当たり(brute attack)で最大約6,631,300,125,000,000通りの試行が解読に必要です。

100本ノック 第57問目

Linguistics 7th editionが今年の6月に出されたが、異常な高値で出回ってる・・・

母校の図書館に入ったから、当面は6th edition持ってればいいんだけどね。フンフン

 

言語処理100本ノック 2015 の57問目

 

57. 係り受け解析

Stanford Core NLP係り受け解析の結果(collapsed-dependencies)を有向グラフとして可視化せよ.可視化には,係り受け木をDOT言語に変換し,Graphvizを用いるとよい.また,Pythonから有向グラフを直接的に可視化するには,pydotを使うとよい.

 

答:

Stanford CoreNLPの出力ファイル(XML)のツリー構造がまだ掴みきれていないため、階層を降りていくステップを明示した慎重なコードになっている。

f:id:DWJEqxs2G0:20170921175400p:plain

 

出力の例を挙げておくと:

f:id:DWJEqxs2G0:20170921175827p:plain

 

f:id:DWJEqxs2G0:20170921175907p:plain

 

f:id:DWJEqxs2G0:20170921175930p:plain

 

100本ノック 第53問目

言語処理100本ノック 2015 の49問目を終えて、これで半分まできた。一休みに英語の構文解析係り受け解析のソフトはないかとあれこれ調べ、いくつか試してみてこりゃ面白いと唸っていた。そのまま興味の矛先が100本ノックに戻り、50問目以降はどうなっていると開いてみればあらステキ!50〜59問目が英語の構文解析の問題になっている!自然な思考・関心の流れに沿って問題が進むよう設計されているのは流石。

 

第53問目は以下に参照するサイトで勉強しながら行った。

 

問:

Stanford Core NLPを用い,入力テキストの解析結果をXML形式で得よ.
また,このXMLファイルを読み込み,入力テキストを1行1単語の形式で出力せよ.

 

答:

前提1 Stanford Core NLPをパソコンに入れる。

前提2 nlp.txtを言語処理100本ノック 2015 のサイトから落としておく。

前提3 正直これは弱い前提だが、50〜52問目を解いておく。

1.以下のURLを参照する
https://stanfordnlp.github.io/CoreNLP/cmdline.html

2.ここのQuick Startにあるコマンドラインを加工して以下を作る:
java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file nlp.txt

3.stanford coreNLPのあるディレクトリ(/usr/local/lib/stanford-corenlp-full-2013-06-20)に移動する。
nlp.txtもこのディレクトリに移動させる。

4.上記のコマンドラインを入力して実行する。すると、当該のディレクトリにnlp.txt.xmlファイルを得る。

5.4のファイルを「100本ノック」のフォルダに移動させたりさせなかったりした上で、
以下のスクリプトを実行する。
(参照URL: https://docs.python.jp/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser)

 

f:id:DWJEqxs2G0:20170918231124p:plain

 

(実行結果の一部)

f:id:DWJEqxs2G0:20170918231236p:plain

 

 

100本ノックの第49問目はこんな風にやれば良い。

 

用意するもの:

1. 文中の係り受け関係を表す句の位置 (int) のペア[有向グラフ]の集合 (要は順序対の集合--リストにしておこう)

2. (文中の) 句の位置 (int) と句の表層形 (str) をペアにした要素の集合 (同上) ← ここは辞書型でもいいし、他と比べたらなくてもいい。

3. (文中の) 名詞句の位置 (int) を網羅したリスト

4. 3の各数字 (int) を2つ組にした要素のリスト (このリストの長さは、nC2 = n × (n - 1) / 2  (ただし、nは3のリストの長さ) にならなければならない)

 

これらを用意したら、設問の要求に応えるだけの材料がひとまず揃ったことになるので、その先は設問が指定している仕様に合わせて文字列を作るだけ。なので、ちょっと体力を使えば良いからもう簡単。

 

ということでこんな感じ。きっともっといい仕組みで答えられるだろうけど、ひとまず一直線に考えた結果だ。(まだきっとどこかに瑕疵がある。)

 

f:id:DWJEqxs2G0:20170913182519p:plain

 

 

以下が実行例。

 

f:id:DWJEqxs2G0:20170913182854p:plain

まともな結果を出さないcabochaの出力は省いてあるので、問題文で言っている「8文目」が5文目に現れることになる。

 

別の実行例。

 

 

 

f:id:DWJEqxs2G0:20170913183020p:plain

さらに別の実行例。

f:id:DWJEqxs2G0:20170913183048p:plain

手元で行なっているプログラム関連の作業がブログ更新可能なペースを上回り過ぎており、書きたいことを収め切れないので、その一部を、しかもあらすじだけ。

 

・100本ノックで、格支配のデータを列挙する設問45は、せっかく品詞分類1があるのだから、係助詞を弾いて格助詞だけ取り出すようプログラムを書いてみた。

 

f:id:DWJEqxs2G0:20170911124817p:plain

 

graphvizモジュールの導入(設問44)は思わぬ副産物としてここ数ヶ月の悩みを解決。具体的なことはプログラミングの外の話なので伏せよう。これ、まさに革命だ。Pythonを学び始めて1年弱。それはスクリプト言語を学び始めてから1年弱ということも意味する。それ以来、プログラムを自作して効率化したり実現したりした作業が多数あり、毎日のように生活や仕事や研究でそれらを回している。快適である。それを置いても、graphvizモジュールの導入で得た効果は絶大だ。

青空文庫からウェブスクレイピングで取り出した文章をコーパスにして分析するAozora_analyzer.pyをアップデート。以下はcabochaで分析させた係り受け関係をgraphvizで可視化した例。『羅生門』から。

 

f:id:DWJEqxs2G0:20170911123303p:plain

 

f:id:DWJEqxs2G0:20170911123323p:plain

JKIIPJPPJGPPIILKJHHIEFIILJPLFEHPIILFGIILJPIILKJIIPILGOKKJHIKIOIILLFIILHGIILKJGLGEEIILKJHGGEJHILLPJ9q9n8ILHJHILKJHEFOIKLKIOIILGJHILHGFIJPKFJKKJGK56Lt;HFGIILKJHIP

 

1002 10 17 16 23 51 23 30 42
2017年9月6日19時42分

 

 

f:id:DWJEqxs2G0:20170906205226p:plain

 

 

 

f:id:DWJEqxs2G0:20170906205247p:plain

 

 

 

f:id:DWJEqxs2G0:20170906205301p:plain

 

 

 

f:id:DWJEqxs2G0:20170906205314p:plain

 

f:id:DWJEqxs2G0:20170905174957p:plain

 

wYYwWwYYecwYYdZWXwbeWaWdwYYXWYwYYeYcZXYWwYZXYwYYdawYZXawYYbYWWWcwdaXYWwYYedwYYdYwYYcaWdacdwYZYZSz]Z0caXYWwYYbXwYYbZWXwbeweXaXwYYwwwYXewwYYdYwYZXdwYZYWZdYaXwYYbcwYYcawYZXaWaWdwXccdZeXeZXWWWWbewwXXWbeeWwYYeYwYZWWwYZXcwYYeZwYYwWwYYadwYZXewYYdZebdZXXccdZeadZXWWWWbWXXcwWbeeWwYYwwwYXewXYwYWwYYdcwYZWZwYYcaeWwYWwYYbwXXacXwYYcdwYZYWWabwawYYeXwYYwWwYYdZwYYadwYYdWwYXdewYZYawYYadeadXWwYYwWwYYecwYYdYbXeXWwYYdZaeZWXwYYedWcbdWwYYedwaebXwYYedwddXWwYXdeWwYYdWaZdWeccXWwYXewwYYdYwYYbwXbXWWwYYeXWcZwdwYYedwddbXwYZXbXcdewwYYadWWWWYwYYedwXWWXWZabcwYYeawYYbYZbcXWwYYdYwYYeewYYedwYZWdwYYabcWwWZwYZXcYwcXWwYYeaWWdwdwYZXbXebXWwYZwwXeXeWwwwcdwYXewwYYdYaabXWwYYewbcbXWWWQRw%6dYcXcddewYZwdWWwWYwYYedWXWcXwYYbYwYYcawYYddwYYabwYXewXWbXWwYYdcXWwZWwYYcdebaXWXbXXbdeaXWWWeedXZXadwYXewXbaXWwYYbwXYdbXWeedXWXwXdwYYeecWeXXwYYedwadwXWZabcwYYeWWWwWYwYYedXebYXwWZXWwYYdZWWebbwYYedwccbXwYYedwXabXwYYedwYYdWwYYeYcWZXWwYZXYZYZXWwYXewwYYdZwYYcWwwZXWwYXdeYwZXWwYYcWwdYXWZwYXW

 

2103 23 18 2 15 44 35 22 9
2017年9月5日17時53分

 

 

こんな夢を見た。

20X X年、日本国にAI官僚が出現してしばらく経った。情報処理能力と判断力において、AI官僚に勝てる人間はいない。いつものように「欧米に倣って」の制度改革だったが、実に合理的な判断だった。国家運営のコストが大幅に減り、官僚に絡む汚職も激減した。生身の官僚たちはAIの判断を遂行する手足と化している。

今や東京大学を頂点とした受験の仕組みも不要に見える。大学に求められていることが大きく変化したのだ。最近では大学の根本的な改革が検討されている。子供を受験競争から解放するのだ。これからの日本人がAIの存在と肩を並べて生きるには、現行の教育システムは冗長な部分があまりにも多いのではないか。AIアーティストの方が人間よりも優れた芸術作品を作る時代である。人間の創造性が問い直され、働く意義が問い直され、終わらない議論が続いている。

もっとも、これは予想できたことだが、教育界からだけでなく産業界からも、巨大な反発が起きている。たとえば、そうなってしまうと進学塾の存在意義も根底から見直されることになる。しかし、これはAI政治家たちが真剣に推し進めているオプションなのだ。