- 1. RとPythonでデータのハッシュ化
- 2. PyAudio のサンプル
- 3. PyCharm Community Edition with Anaconda plugin 2020.1.2 x64が動かなくなった…
- 4. pythonでソーマキューブを解いてみた
- 5. Pythonのif文
- 6. Python の assert 文
- 7. 倍賭け法(マーチンゲール法)で儲かるか中学生とPythonで確かめた
- 8. 【割合を可視化】plotlyで動的な可視化をする【python,pie,sunburst,sanky,treemap,fannele,】
- 9. ubuntu,python,cursesでのにゃんこスイーパー
- 10. 標準誤差に誤差伝搬式を適用する
- 11. Pythonでの制約充足問題の第一歩
- 12. 言語処理100本ノック(2020): 49
- 13. 言語処理100本ノック(2020): 48
- 14. 言語処理100本ノック(2020): 47
- 15. 言語処理100本ノック(2020): 46
- 16. 言語処理100本ノック(2020): 45
- 17. 言語処理100本ノック(2020): 44
- 18. 言語処理100本ノック(2020): 43
- 19. 言語処理100本ノック(2020): 42
- 20. 言語処理100本ノック(2020): 41
RとPythonでデータのハッシュ化
この前仕事で匿名化を頼まれかなり苦労した。
そもそもデータをもらう時点で匿名化されていることがほとんどで匿名化されていないデータをもらうことがほとんどなかった。実際調べてみるとハッシュ化する方法はあるが、データフレーム形式を想定している情報は少なかった。
機密データなのでオフライン環境でやらないといけないかもしれないため、ライブラリは事前にインストールされている想定である。今回は次回のために反省点も踏まえてコードをまとめていきたい。
# Rでのやり方
ハッシュ化のライブラリはfastdigestを使う。
指定するのはインポートするcsvとハッシュ化したい列名だけ。
対話形式で一つ一つ確認して作業することができる。“`r:hashing.R
# ライブラリインストール
install.packages(“fastdigest”)
# ライブラリインポート
library(“fastdigest”)# fastdigestを使ってハッシュ化の自作関数を作る
hash_algo <- function(data){ x <- paste("abc" ,data)
PyAudio のサンプル
PyAudio のサンプルです。
録音
“`py:record.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# record.py
#
# Oct/02/2020
# ——————————————————————
import sys
import pyaudio
import wave# ——————————————————————
sys.stderr.write(“*** 開始 ***\n”)
#
CHUNK = 1024
FORMAT = pyaudio.paInt16 # int16型
CHANNELS = 2 # ステレオ
RATE = 44100 # 441.kHz
RECORD_SECONDS = 5 # 5秒録音
WAVE_OUTPUT_FILENAME = sys
PyCharm Community Edition with Anaconda plugin 2020.1.2 x64が動かなくなった…
ある日、Python書くかぁとPycharmを開くと
“`
java.lang.VerifyError: Expecting a stack map frame~~~~
“`とまぁ、なんかよくわからんErrorを吐き出しやがりました、
Pycharm先生。とりあえず以下で検索をかける。
“`
Pycharm java.lang.VerifyError: Expecting a stack map frame
“`
すると以下の記事がヒットしました。`https://insilico-notebook.com/pycharm-reinstall-error/`
どうやら「pleiades-win」が悪さをしている様子。
上記のディレクトリを開き、再度セットアップすることに。
すると無事にPyCharm先生が戻ってきてくれました。
~~先生って、中には不機嫌になって職員室に引きこもるタイプいますよね…?~~
今回はこれでうまく行ったため、次回同じようなことが起きても大丈夫なようにここにメモします。
使用環境が多少違ったりする場合があるため、
同じ現象
pythonでソーマキューブを解いてみた
## もくじ
1. はじめに
2. ソーマキューブとは
3. 過去の話
4. 工夫した点 処理速度向上のために
5. 苦労した点 成功しているか判定するために
6. アルゴリズムとソースコードについて
7. 最後に## はじめに
pythonでソーマキューブを解いてみました。
結果、480通りの立方体の作成パターンを解くことができました。
たかがパズルされどパズル、実装する段階でいろいろな事を学ぶことができました。
その時のノウハウを記事に残しておきます。
この記事が誰かのお役に立てば幸いです。[ソースコードはこちら](https://gitlab.com/RyutaKaii/somacube)
## ソーマキューブとは
ソーマキューブとは7つの立体パズルを組み合わせて立方体を作る立体パズル。
詳細は下記を参照してください。[ソーマキューブ](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%9E%E3%82%AD%E3%83%A5%E3%83%BC%E3%83%96)
立方体以外にも様々な立体図形を
Pythonのif文
### Pythonのif文の例文について
ifの使い方をパターン別に書いてみました。
複数の関数を用いた例も参考にしました。
条件式の構成で、必要な知識不足を載せています。
### 発生している問題・エラー
“`pythonfor n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n,’equals’,x,’*’,n//x)
break
else:
print(n,’is a prime number’)
“`
また、数値を指定して条件でのコードが以下の通りです。### ifと数値の指定パターン
“`python
x = 25 //数値を指定する
if x < 0: print('negative') elif x ==0: print('zero') elif x ==10: print('ten') elif x ==50: print('fifty') elif x
Python の assert 文
“`assert 条件式, “表示したいエラー文”“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513365/e7d69253-92b6-2d99-5e45-b99d19febc37.png)
#参考リンク
– https://docs.python.org/ja/3/reference/simple_stmts.html#assert
倍賭け法(マーチンゲール法)で儲かるか中学生とPythonで確かめた
# はじめに
数学が好きな息子がどっかで倍賭け法を知ったらしく、おもしろそうに説明してきた。
マーチンゲール法というやり方で、[Wikipediaによると](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%83%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)
>最も古典的かつ有名な手法で、カジノ必勝法として永らく愛されてきた。倍賭け法とも言われる。
まず1単位賭け、負ければその倍の2単位、さらに負ければそのさらに倍の4単位、と賭けていき、一度でも勝てばただちに1単位に戻す、という手法である。試行回数に関係なく、勝った時には1単位を得ることになる。
多くの場合には少額の勝ちであるが、負ける時は大敗する。負けが連続するとたちまちパンク、もしくはテーブルリミットと呼ばれる賭けの上限に達してしまう。とのことで、うまくは行かないということは知っていた。
とはいえ実際どのような負け方をするのか試したことはなかったので、実際やってみることにした。中
【割合を可視化】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