- 1. 【割合を可視化】plotlyで動的な可視化をする【python,pie,sunburst,sanky,treemap,fannele,】
- 2. ubuntu,python,cursesでのにゃんこスイーパー
- 3. 標準誤差に誤差伝搬式を適用する
- 4. Pythonでの制約充足問題の第一歩
- 5. 言語処理100本ノック(2020): 49
- 6. 言語処理100本ノック(2020): 48
- 7. 言語処理100本ノック(2020): 47
- 8. 言語処理100本ノック(2020): 46
- 9. 言語処理100本ノック(2020): 45
- 10. 言語処理100本ノック(2020): 44
- 11. 言語処理100本ノック(2020): 43
- 12. 言語処理100本ノック(2020): 42
- 13. 言語処理100本ノック(2020): 41
- 14. 言語処理100本ノック(2020): 40
- 15. 言語処理100本ノック(2020): 39
- 16. 言語処理100本ノック(2020): 38
- 17. 言語処理100本ノック(2020): 37
- 18. 言語処理100本ノック(2020): 36
- 19. 言語処理100本ノック(2020): 35
- 20. 言語処理100本ノック(2020): 34
【割合を可視化】plotlyで動的な可視化をする【python,pie,sunburst,sanky,treemap,fannele,】
![tr.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/d8fbf224-15b0-ba6d-3be0-361d1aff7ad9.gif)
python==3.8
plotly==4.10.0#pie(円,ドーナッツ)
##基本の円
もはや円グラフについての説明は必要ないだろう
“`python
import plotly.express as px
df = px.data.tips()
fig = px.pie(df, values=’tip’, names=’day’,
title=’pie plot with PX’)
fig.show()
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/75620d1e-a7ac-6752-4a14-27b9e693219d.png)
##graph_objec
ubuntu,python,cursesでのにゃんこスイーパー
私の記事のminesweeper Qiita:[Python+Cursesで、MineSweeperを制作]
をちょっと変えて、ニャンコスイーパーにしました。
オリジナルのニャンコスイーパーを知らないので、オリジナルとは違うかも知れません。
ゲーム画面の機雷とマークを、猫のキャラクタに変えただけです。
Ubuntuのターミナルで動きます。
ファイルに、`chmod +x nyankosweeper.py`として、実行権を付けて動かして下さい。`$./nyankosweeper.py [number of cats]`として、動かします。
[number of cats]は、省略できます。省略すると、にゃんこの数は61個となります。スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題な
標準誤差に誤差伝搬式を適用する
# 標準誤差に誤差伝搬の式を適用
誤差伝搬式と呼ばれるものがあります。下記に誤差伝搬の式の説明を記載します。
尚、COV(a,b)は共分散なのでa,bの誤差が独立ならばゼロになります。“`math
y(a,b)とするとyの誤差σ_{y}は,aの誤差σ_{a}及びbの誤差σ_{b}を使用して下記となる.“`
“`math
σ_{y}^2 = (\frac{∂y}{∂a})^2 σ_{a}^2 + (\frac{∂y}{∂b})^2 σ_{b}^2+ 2COV(a,b)\frac{∂y}{∂a}\frac{∂y}{∂b}
“`今回は標準誤差に誤差伝搬の式を適用できるか考えてみました。
## 標準誤差とは?
そもそも標準誤差とは何か、統計学の教科書的な説明を下記に書きます。ある標本データから、母分布のパラメータを推定するとします。
(例として、母分布が正規分布であれば、パラメータは平均と標準偏差です。)
ここでさらに、パラメータ推定時に導出される標準誤差を使って、信頼区間というものも考えます。ちなみに標準誤差の導出方法に関して詳細は割愛しますが、
最尤法
Pythonでの制約充足問題の第一歩
# TL;DR
– 制約充足問題とはどんなものなのかの基本的な定義などを学びます。
– 実際にごくごくシンプルな問題をPythonでコードを書いて解いてみます。# 制約充足問題とは
英語だとconstraint satisfaction problem。頭文字を取ってCSPなどとも表記されます。
与えられたいくつかの変数と制約で、その変数が選択できる範囲の中で制約を回避できる条件を見つけるという問題です。
主に以下の3つの要素から成り立っています。
– variables : 与えられた変数・要素
– domains : 各変数が取れる選択肢の範囲
– constraints : 与えられた制約たとえば、ごく簡単なCSPの例としてAさんとBさんとCさんという3人のMTGを設定したいとします。
Aさんは11時~16時、Bさんは12時から15時、Cさんは14時から18時の時間がスケジュールが空いている状態です。
また、MTGではAさんが偉い立場で、MTGにはAさんは必ず出席しないといけないとします。Aさんが参加していればBさんとCさんは個別に1人ずつMTGに参加しても
言語処理100本ノック(2020): 49
“`py
“””
## 49. 名詞間の係り受けパスの抽出[Permalink](https://nlp100.github.io/ja/ch05.html#49-名詞間の係り受けパスの抽出)文中のすべての名詞句のペアを結ぶ最短係り受けパスを抽出せよ.ただし,名詞句ペアの文節番号がiiとjj(i
`“で連結して表現する
– 文節iiとjjに含まれる名詞句はそれぞれ,XとYに置換するまた,係り受けパスの形状は,以下の2通りが考えられる.
– 文節iiから構文木の根に至る経路上に文節jjが存在する場合: 文節iiから文節jjのパスを表示
– 上記以外で,文節iiと文節jjから構文木の根に至る経路上で共通の文節kkで交わる場合: 文節iiから文節kkに至る直前のパスと文節jjから文節kkに至る直前までのパス,文節kkの内容を”` | `“で連結して表示「ジョン・マッカーシーはAIに関する最初の会議で人工知能
言語処理100本ノック(2020): 48
“`py
“””
## 48. 名詞から根へのパスの抽出[Permalink](https://nlp100.github.io/ja/ch05.html#48-名詞から根へのパスの抽出)文中のすべての名詞を含む文節に対し,その文節から構文木の根に至るパスを抽出せよ. ただし,構文木上のパスは以下の仕様を満たすものとする.
– 各文節は(表層形の)形態素列で表現する
– パスの開始文節から終了文節に至るまで,各文節の表現を”` -> `“で連結する「ジョン・マッカーシーはAIに関する最初の会議で人工知能という用語を作り出した。」という例文を考える. CaboChaを係り受け解析に用いた場合,次のような出力が得られると思われる.
ジョンマッカーシーは -> 作り出した
AIに関する -> 最初の -> 会議で -> 作り出した
最初の -> 会議で -> 作り出した
会議で -> 作り出した
人工知能という -> 用語を -> 作り出した
用語を -> 作り出したKNPを係り受け解析に用いた場合,次のような出力が得られる
言語処理100本ノック(2020): 47
“`py
“””
## 47. 機能動詞構文のマイニング[Permalink](https://nlp100.github.io/ja/ch05.html#47-機能動詞構文のマイニング)動詞のヲ格にサ変接続名詞が入っている場合のみに着目したい.46のプログラムを以下の仕様を満たすように改変せよ.
– 「サ変接続名詞+を(助詞)」で構成される文節が動詞に係る場合のみを対象とする
– 述語は「サ変接続名詞+を+動詞の基本形」とし,文節中に複数の動詞があるときは,最左の動詞を用いる
– 述語に係る助詞(文節)が複数あるときは,すべての助詞をスペース区切りで辞書順に並べる
– 述語に係る文節が複数ある場合は,すべての項をスペース区切りで並べる(助詞の並び順と揃えよ)例えば「また、自らの経験を元に学習を行う強化学習という手法もある。」という文から,以下の出力が得られるはずである.
学習を行う に を 元に 経験を
“””
from collections import defaultdict
from typing import Listdef read_fil
言語処理100本ノック(2020): 46
“`py
“””
## 46. 動詞の格フレーム情報の抽出[Permalink](https://nlp100.github.io/ja/ch05.html#46-動詞の格フレーム情報の抽出)45のプログラムを改変し,述語と格パターンに続けて項(述語に係っている文節そのもの)をタブ区切り形式で出力せよ.45の仕様に加えて,以下の仕様を満たすようにせよ.
– 項は述語に係っている文節の単語列とする(末尾の助詞を取り除く必要はない)
– 述語に係る文節が複数あるときは,助詞と同一の基準・順序でスペース区切りで並べる「吾輩はここで始めて人間というものを見た」という例文(neko.txt.cabochaの8文目)を考える. この文は「始める」と「見る」の2つの動詞を含み,「始める」に係る文節は「ここで」,「見る」に係る文節は「吾輩は」と「ものを」と解析された場合は,次のような出力になるはずである.
始める で ここで
見る は を 吾輩は ものを“””
from collections import defaultdict
from
言語処理100本ノック(2020): 45
“`py
“””
## 45. 動詞の格パターンの抽出[Permalink](https://nlp100.github.io/ja/ch05.html#45-動詞の格パターンの抽出)今回用いている文章をコーパスと見なし,日本語の述語が取りうる格を調査したい. 動詞を述語,動詞に係っている文節の助詞を格と考え,述語と格をタブ区切り形式で出力せよ. ただし,出力は以下の仕様を満たすようにせよ.
– 動詞を含む文節において,最左の動詞の基本形を述語とする
– 述語に係る助詞を格とする
– 述語に係る助詞(文節)が複数あるときは,すべての助詞をスペース区切りで辞書順に並べる「吾輩はここで始めて人間というものを見た」という例文(neko.txt.cabochaの8文目)を考える. この文は「始める」と「見る」の2つの動詞を含み,「始める」に係る文節は「ここで」,「見る」に係る文節は「吾輩は」と「ものを」と解析された場合は,次のような出力になるはずである.
始める で
見る は をこのプログラムの出力をファイルに保存し,以下の事項をUNIXコマンド
言語処理100本ノック(2020): 44
“`py
“””
## 44. 係り受け木の可視化[Permalink](https://nlp100.github.io/ja/ch05.html#44-係り受け木の可視化)与えられた文の係り受け木を有向グラフとして可視化せよ.可視化には,[Graphviz](http://www.graphviz.org/)等を用いるとよい.
“””
from collections import defaultdict
from typing import List, Tupleimport pydot
def read_file(fpath: str) -> List[List[str]]:
“””Get clear format of parsed sentences.Args:
fpath (str): File path.Returns:
List[List[str]]: List of sentences, and each sentence contains a word list.
言語処理100本ノック(2020): 43
“`py
“””
43. 名詞を含む文節が動詞を含む文節に係るものを抽出
名詞を含む文節が,動詞を含む文節に係るとき,これらをタブ区切り形式で抽出せよ.ただし,句読点などの記号は出力しないようにせよ.
“””
from collections import defaultdict
from typing import Listdef read_file(fpath: str) -> List[List[str]]:
“””Get clear format of parsed sentences.Args:
fpath (str): File path.Returns:
List[List[str]]: List of sentences, and each sentence contains a word list.
e.g. result[1]:
[‘* 0 2D 0/0 -0.764522’,
言語処理100本ノック(2020): 42
“`py
“””
42. 係り元と係り先の文節の表示
係り元の文節と係り先の文節のテキストをタブ区切り形式ですべて抽出せよ.ただし,句読点などの記号は出力しないようにせよ.
“””
from collections import defaultdict
from typing import Listdef read_file(fpath: str) -> List[List[str]]:
“””Get clear format of parsed sentences.Args:
fpath (str): File path.Returns:
List[List[str]]: List of sentences, and each sentence contains a word list.
e.g. result[1]:
[‘* 0 2D 0/0 -0.764522’,
言語処理100本ノック(2020): 41
“`py
“””
41. 係り受け解析結果の読み込み(文節・係り受け)
40に加えて,文節を表すクラスChunkを実装せよ.このクラスは形態素(Morphオブジェクト)のリスト(morphs),係り先文節インデックス番号(dst),係り元文節インデックス番号のリスト(srcs)をメンバ変数に持つこととする.さらに,入力テキストのCaboChaの解析結果を読み込み,1文をChunkオブジェクトのリストとして表現し,8文目の文節の文字列と係り先を表示せよ.第5章の残りの問題では,ここで作ったプログラムを活用せよ.
“””
from collections import defaultdict
from typing import Listdef read_file(fpath: str) -> List[List[str]]:
“””Get clear format of parsed sentences.Args:
fpath (str): File path.Returns:
List[List[str]]: Li
言語処理100本ノック(2020): 40
## `ans40.py`
“`py
“””
40. 係り受け解析結果の読み込み(形態素)
形態素を表すクラスMorphを実装せよ.このクラスは表層形(surface),findall(pos1)をメンバ変数に持つこととする.
さらに,CaboChaの解析結果(neko.txt.cabocha)を読み込み,各文をMorphオブジェクトのリストとして表現し,3文目の形態素列を表示せよ.ans40_cabocha.pyでneko.txt.cabochaを生成する。
ans40.shで生成した例はneko.txt.cabocha2。比較をすれば、neko.txt.cabochaの方が綺麗。ans40.pyの実装は直接neko.txt.cabochaを読み込んでいるから、スピードが早い。
ans40_2.pyの実装は解析時間がかかる。おすすめしない。
“””
from typing import Listclass Morph:
def __init__(self, data):
self.surface = data[“surface”]
言語処理100本ノック(2020): 39
“`py
“””
37. 「猫」と共起頻度の高い上位10語
「猫」とよく共起する(共起頻度が高い)10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.sentence_list:
[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘
言語処理100本ノック(2020): 38
“`py
“””
37. 「猫」と共起頻度の高い上位10語
「猫」とよく共起する(共起頻度が高い)10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.sentence_list:
[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘
言語処理100本ノック(2020): 37
“`py
“””
37. 「猫」と共起頻度の高い上位10語
「猫」とよく共起する(共起頻度が高い)10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.sentence_list:
[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘
言語処理100本ノック(2020): 36
“`py
“””
36. 頻度上位10語
出現頻度が高い10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.data:
[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘猫’, ‘pos’: ‘名詞’, ‘pos1’: ‘一般’},
言語処理100本ノック(2020): 35
“`py
“””
35. 単語の出現頻度
文章中に出現する単語とその出現頻度を求め,出現頻度の高い順に並べよ.[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘猫’, ‘pos’: ‘名詞’, ‘pos1’: ‘一般’},
{‘surfa
言語処理100本ノック(2020): 34
“`py
“””
33. 「AのB」Permalink
2つの名詞が「の」で連結されている名詞句を抽出せよ[[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘一’, ‘base’: ‘一’, ‘pos’: ‘名詞’, ‘pos1’: ‘数’},
{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’}],
[{‘surface’: ”, ‘base’: ‘*’, ‘pos’: ‘BOS/EOS’, ‘pos1’: ‘*’},
{‘surface’: ‘吾輩’, ‘base’: ‘吾輩’, ‘pos’: ‘名詞’, ‘pos1’: ‘代名詞’},
{‘surface’: ‘は’, ‘base’: ‘は’, ‘pos’: ‘助詞’, ‘pos1’: ‘係助詞’},
{‘surface’: ‘猫’, ‘base’: ‘猫’, ‘pos’: ‘名詞’, ‘pos1’: ‘一般’},
{‘surface