- 1. 言語処理100本ノック-48:名詞から根へのパスの抽出
- 2. XML
- 3. hbase
- 4. SegNetにスキップ構造を組み込んで性能比較(CaDIS: a Cataract Dataset)
- 5. 言語処理100本ノック-47:機能動詞構文のマイニング
- 6. JupyterをREST APIで操作して、Pythonコードの抜き出し&保存する
- 7. Pythonで文字列の連結を複数行で記述する方法
- 8. ゲーデルのβ関数を SymPy とかで計算してみる
- 9. pip install hogehogeで” ERROR: Command errored out with exit status 1:”と出た時の解決策メモ
- 10. 【自然言語処理】転職中(or 直前)のエンジニアに会いたい
- 11. Androidの通知をゆっくりに喋ってもらう
- 12. Python 画像を分割し横に並べる
- 13. pythonで主成分分析(PCA)と独立成分分析(ICA)
- 14. 学習記録(1日目)
- 15. Colaboratory上で「word2vecの学習」と「Tensorboardによる可視化」
- 16. O(V^2)でもダイクストラより速い?閉路があるグラフに幅優先探索
- 17. pipがSSL関係で止まったらpython自体を入れ直すのが良い
- 18. ポジティブシンキングを自然に身につけるためのIoTデバイスを作りました
- 19. 「True + True は 2」から「pythonはすべてがオブジェクト」まで
- 20. AtCoder 日立製作所 社会システム事業部 プログラミングコンテスト2020 参戦記
言語処理100本ノック-48:名詞から根へのパスの抽出
[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第5章: 係り受け解析」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch5)の[48本目「名詞から根へのパスの抽出」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec48)記録です。
前回ノックと比べて少しシンプルになりました。あまり条件がなく係り先を続けて出力しているだけだからです。# 参考リンク
|リンク|備考|
|:–|:–|
|[048.名詞から根へのパスの抽出.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/05.%E4%BF%82%E3%82%8A%E5%8F%97%E3%81%91%E8%A7%A3%E6%9E%90/048.%E5%90%8D%E8%A9%9E%E3%81%8B%E3%82%89%E6%A0%B9%E3%81%B8%E3%81%AE%E3%83%91%E3%82%B9%E3%8
XML
“`py
import xml.etree.ElementTree as ETroot = ET.Element(‘root’)
tree = ET.ElementTree(element=root)employee = ET.SubElement(root, ‘employee’)
employ = ET.SubElement(employee, ‘employ’)
employ_id = ET.SubElement(employ, ‘id’)
employ_id.text = ‘111’
employ_id = ET.SubElement(employ, ‘name’)
employ_id.text = ‘Mike’employ = ET.SubElement(employee, ‘employ’)
employ_id = ET.SubElement(employ, ‘id’)
employ_id.text = ‘222’
employ_id = ET.SubElement(employ, ‘name’)
employ_id.text = ‘Nancy’#xml
hbase
“`
brew install hase
“`“`
start-hbase.sh
“`
#外部からのアクセスを許可するためのプロセスを立ち上げる“`
hbase thrift start
“`“`py
#pip install happybase
import happybaseconnection = happybase.Connection(‘localhost’)
connection.open()connection.create_table(b’sns’,{‘blog’: dict()})
table = connection.table(b’sns’)
table.put(
b’user1′,{
b’blog:bitcoin’: b’user1 about bitcoin’,
b’blog:soccer’: b’user1 about soccer’
}
)table.put(
b’user2′,{
b’blog:soccer’:b’user2 about soc
SegNetにスキップ構造を組み込んで性能比較(CaDIS: a Cataract Dataset)
# 1. はじめに
本記事では[前回](https://qiita.com/burokoron/items/c730e607607c925c6fd1)行ったCaDIS: a Cataract Dataset[^1]を対象として、SegNet[^2]を用いてセマンティックセグメンテーションした記事の続編です。今回は[前回](https://qiita.com/burokoron/items/c730e607607c925c6fd1)のネットワークにスキップ構造を組み込んだU-Net[^3]性能比較を行います。[すべてのコード](https://github.com/burokoron/StaDeep/tree/master/U-Net)
# 2. 環境
– PCスペック
– CPU: Intel Core i9-9900K
– RAM: 16GB
– GPU: NVIDIA GeForce GTX 1080 Ti
– ライブラリ
– Python: 3.7.4
– numpy: 1.16.5
– matplotlib: 3.1.1
– opencv:
言語処理100本ノック-47:機能動詞構文のマイニング
[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第5章: 係り受け解析」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch5)の[47本目「機能動詞構文のマイニング」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec47)記録です。
前回ノックに加え、抽出対象がさらに複雑な条件になります。問題文を理解するだけで少し時間がかかりますし、当然解くにも時間がかかります。# 参考リンク
|リンク|備考|
|:–|:–|
|[047.機能動詞構文のマイニング.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/05.%E4%BF%82%E3%82%8A%E5%8F%97%E3%81%91%E8%A7%A3%E6%9E%90/047.%E6%A9%9F%E8%83%BD%E5%8B%95%E8%A9%9E%E6%A7%8B%E6%96%87%E3%81%AE%E3%83%9
JupyterをREST APIで操作して、Pythonコードの抜き出し&保存する
jupyter notebookのPythonコードを別マシンで実行したかったので、jupyterのAPIを用いて抜き出し&保存することにした。
## 環境
* Jupyter (docker image)
jupyter/scipy-notebook:19db0c85c56d## Jupyterトークンを調べる
外部からjupyterを操作するためにトークンが必要なため、まずはトークンを調べる。最初にjupyter起動する際に入力している(はず?)だが、大抵は忘れてしまっていると思うので、jupyterコンテナを探す→ログ表示→トークン確認の順で確認する。
* jupyterコンテナを探す
下記例ではIDが`022298a2039a`、コンテナ名が`jupyter`となっている。“`shell
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
Pythonで文字列の連結を複数行で記述する方法
Pythonで文字列の連結を複数行で記述する方法を確認したところ何パターンかあったので、利用可能な「良いパターン」と実行エラーとなる「駄目なパターン」を整理してみました。
## 良いパターン
– ` \[改行]`の後に文字列
“`py
url = ‘abcde’ \
‘12345678’
“`– ` + \[改行]`の後に文字列
“`pyl
url = ‘abcde’ + \
‘12345678’
“`– ` + \[改行]`の後にメソッド
“`py
url = ‘abcde’ + \
str(12345678)
“`– ` + \[改行]`の後に文字列 `+` メソッド
“`py
url = ‘abcde’ + \
‘1234’ + str(5678)
“`## 駄目なパターン
– ` \[改行]`の後にメソッド
“`py
url = ‘abcde’ \
str(12345678)
“`実行がSyntaxErrorとなる。
“`
{
“errorMessage”: “Syntax error in module ‘hog
ゲーデルのβ関数を SymPy とかで計算してみる
β関数 (ゲーデルのβ関数のほう) を SymPy で計算してみます。
その際に、できるだけ結果のゲーデル数が小さくなるように工夫してみます。なお、本記事は著者の NumPy 配列の練習を兼ねているので、無理やりおしゃれベクトル計算しているところがあります。
# 参考文献
– 林晋, 八杉満利子 訳・解説「ゲーデル 不完全性定理」岩波文庫 (青 944-1), 2006.
– (原典) K. Gödel. プリンキピア・マテマティカおよび関連した体系の形式的に決定不能な命題について I, Monatshefte für Mathematik und Physik (38), pp. 173-198, 1931.
– 前原昭二「数学基礎論入門」基礎数学シリーズ26, 朝倉書店, 2000.
– Wikipedia “Gödel numbering for sequences” https://en.wikipedia.org/wiki/G%C3%B6del_numbering_for_sequences
– Wikipedia「中国の剰余定理」 https://ja.wik
pip install hogehogeで” ERROR: Command errored out with exit status 1:”と出た時の解決策メモ
Python初心者です。
Pythonの開発環境構築時に “`pip install“` コマンドのエラーでつかえたので、
解決策をメモとして残します。## 起こったこと
– テキストファイルにインストールしたいライブラリを列挙し、ローカル環境でpip installをしようとした(下記リンク(1)参照)ところ、wordcloudというライブラリのインストーリング中に以下のエラーが出力された。
“`
C:\Python\Python38 >> pip install -r requirements.txt
>>
(中略)
ERROR: Command errored out with exit status 1:
(中略)
ERROR: Command errored out with exit status 1: ‘c:\python\python38\python.exe’ -u -c ‘import sys, setuptools, tokenize;
sys.argv[0] = ‘”‘”‘C:\\Users\\わたし\\AppData\\Local\
【自然言語処理】転職中(or 直前)のエンジニアに会いたい
# 閑話
最近弊社はエンジニア大募集時期な事もあり、TwitterやQiita経由でお声がけすることが多いです。
その多くが偶然タイムラインで発見からなので、もっと効率よく声をかけたい!
と思い、Twitter検索ボックスで `Java 転職`(←安直)を入力すると、**ノイズ**(転職サービスや関連のブログ)が多く、なかなか欲しいTweetを見つけられない。
そんな感じでモヤモヤしながら画面スクロールをしまくっているとふと、
> **「これ、なんで Python がやってないんだっけ?」**
となり、自然言語処理で解決することを発起しました。
# 本題
スクレイピング & 自然言語処理を0からやるのも面白そうですが、今回は目的達成のために APIを使用する事にしました!
## まずはTwitter API
Twitter APIには色々プランがあるのですが今回はPremiumプランを使用しました!
(写真真ん中のプラン)[Macrodroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid&hl=ja)というAndroidアプリとRaspberry piを使って、スマホの通知をゆっくりボイスが喋ってくれるシステムを作ってみました。
# 概要
MacrodroidはAndroidでタスク自動化ができるアプリです。
Androidでの何らかのイベントをトリガーに様々なアクションを自動で実行できます。これとラズパイに立てた簡易webサーバーとを連携させ、通知が来たらその内容をwebサーバーに送り[AquesTalkPi](https://www.a-quest.com/products/aquestalkpi.html)で音声を出力します。
# 環境
– Android10
– Raspberry pi 3b (Raspbian stretch)
– dockerインストール済み
– 3.5mmイヤホンジャックスピーカー# ラズパイ側の設定
ラズパイを使っていると、SDカードを交換して環境を作り直す
Python 画像を分割し横に並べる
## 背景
数独アプリを作成しています。
その途中のプロセスで何となく、画像を分割して、横に並べてみたいなっておもい、ググりながら作成しました。
誰かの参考になると幸いです。##サンプルコード
“`Python:split_img_and_layout_Horizontally.py
import numpy as np
import cv2# 入力画像を読み込み
img = cv2.imread(“sudoku_wiki.png”)
#wiki https://en.wikipedia.org/wiki/Sudoku#分割サイズを定義
vertical_split = 9
horizonal_split = 9#リサイズを指定
size = (vertical_split * 200, horizonal_split * 200)
img = cv2.resize(img, size)#リストの初期化
split_img = []#縦と横に分割
[split_img.extend(np.hsplit(img, horizonal_split)) for
pythonで主成分分析(PCA)と独立成分分析(ICA)
#はじめに
研究で脳波(EEG)や脳磁図(MEG)データの解析をおこなう際、PCAやICAを用いて脳活動の成分を分解し、次元削減した結果を特徴量に解析をおこなうことになりました。
数学的な背景は正直よくわからないけど、とりあえず実装ベースで時系列データのPCAとICAについて備忘録としてまとめました。
*後々数学的な背景も追加できればと思います。#主成分分析(PCA)と独立成分分析(ICA)
##PCAとは
[Wikipedia](https://ja.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90 “Wikipedia”) より、
*主成分分析(しゅせいぶんぶんせき、英: principal component analysis; PCA)は、相関のある多数の変数から相関のない少数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析の一手法。データの次元を削減するために用いられる。
主成分を与える変換は、第一主成分の分散を最大化し、続く主成分はそれまでに決定した主成分と直交するとい
学習記録(1日目)
# 今日からプログラミングの学習内容を記録していきます
学習内容を記録しようと思った理由は以下の3つです。
1. アウトプットを意識することによって日々のプログラミング学習を効率よくするため
2. 過去に学習した内容を自分で見返せるようにするため
3. 日毎に記録することによって学習を継続的に行うため# 学習内容
* Qittaの記事の書き方
* Pythonの基礎
* Pythonによる簡単なスクレイピング## Qittaの記事の書き方
GitHubである程度経験のあるMarkdown記法だったので復習程度に記法を確認しました。
今回は最初の記事なので、できるだけ多くの記法を活用して記述しました。## Pythonの基礎
Pythonの初心者でありながら、いきなりスクレイピングを始めるのはどうかと思いました。が、大学で二年間プログラミングを学んでいて変数がどうの、関数がどうの、分岐が・・・などと一から勉強すると煩わしくて続かなかったので、スクレイピングと機械学習をおかずにPythonの文法も同時に学習していくことにしました。以下、非常に基礎的な
Colaboratory上で「word2vecの学習」と「Tensorboardによる可視化」
## はじめに
この記事では、Colaboratoryでword2vecの学習とTensorboardによる可視化を行ないます。– TensorBoardの出力結果は**インターネット上で公開**されてしまうので、オープンデータのみ使用するようしてください
– (公開せずにTensorBoardのPROJECTORを実装する方法をご存知の方がいらっしゃましたら教えてください)
– word2vecとTensorboardの説明は、行わないので別途学習してください
– [Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力](https://deepage.net/bigdata/machine_learning/2016/09/02/word2vec_power_of_word_vector.html)
– [あらゆるデータを可視化するTensorBoard徹底入門](あらゆるデータを可視化するTensorBoard徹底入門)## 使用データ/行うこと
word2vecの学習には、著作権が切れたためにフリーで公開されている[青空文庫](aozo
O(V^2)でもダイクストラより速い?閉路があるグラフに幅優先探索
## AtCoderで見つけた高速な解答
https://atcoder.jp/contests/soundhound2018-summer-qual/tasks/soundhound2018_summer_qual_d
このAtCoderの過去問を解いた際、ダイクストラ法を使いACはできたが、Python (PyPy) だとどうしても実行時間制限 (2000ms) ギリギリになってしまう。
過去の提出を探したところ、1000ms超えが多い中、789msという高速な解答を見つけた。https://atcoder.jp/contests/soundhound2018-summer-qual/submissions/7721902
木に対する幅優先探索による最短経路計算のようなことをしているが、グラフが木でなく閉路がある場合、時間計算量は $O(V^2)$ であるように見える (木であるなら $O(V) = O(E)$ ) 。
しかし実際には高速で答えが出ている。
計算量の推定が間違っている可能性も考え、以下の3つの方法を比較してみた。– dijkstra0 :
pipがSSL関係で止まったらpython自体を入れ直すのが良い
#brewが原因ではない
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
これを見てぐぐるとBrew を入れ直せば良いという記事が出てきますが、僕の環境では治りませんでした。
さいわいpyenvを使っていたので別のバージョンのpythonを使ったところ無事にpipが動く様になりました。よくわからんけどまあ。。
ポジティブシンキングを自然に身につけるためのIoTデバイスを作りました
突然ですが、ポジティブシンキングって知っていますか?
>積極思考(せっきょくしこう、英: positive thinking ポジティブ・シンキング)は、なんでも前向きに物事を考えればそれは実現し、人生はうまくいく、という考え方[1]、物事の良い面を見ようと努め、ポジティブな姿勢を保ち、「思考そのもの」を変えることで現実を変えることを目指す思考法である。ポジティブな思考はポジティブな現実を、ネガティブな思考はネガティブな現実をもたらすとされる。(Wikipediaより)
どんなに仕事が辛くても、どんなに嫌なことがあっても、ポジティブシンキングで物事は上手くいくのかもしれません。
私も今日からポジティブシンキングで社会の荒波を超えていこうと思います。でもせっかくポジティブシンキングするのなら、**仲間**が欲しいですよね?
ポジティブシンキングが1つできるたび、**一緒に喜んでくれる仲間が欲しいですよね?**
作りました。
## ポジティブな発言をすると一緒に喜んでくれるIoTデバイス
ポジティブなフレーズを受け取ると振動板付きモータが
「True + True は 2」から「pythonはすべてがオブジェクト」まで
# はじめに
プログラミング初心者です。
普段何気なく使っているpythonのbool型のTrueは、なぜint型の1という値を持てるのか、
そしてそこから派生して、クラスオブジェクト、インスタンスオブジェクト、そしてよく耳にする「pythonはすべてがオブジェクト」という言葉について言及しています。
# 対象
本記事の読者はプログラミング初心者から中級者の少し手前ぐらいの方を想定しています。
# 前提
・Python 3.8.0
# bool型のオブジェクト
タイトルにも書きましたが、 True + True は2となります。
(数学と違うので、True + True = 2 はエラーとなります。)“`
>>> True + True
2>>> True + True = 2 # エラーになる
File ““, line 1
SyntaxError: can’t assign to operator>>> True + True == 2
True
“`
なぜこのような結果になるか
AtCoder 日立製作所 社会システム事業部 プログラミングコンテスト2020 参戦記
# AtCoder 日立製作所 社会システム事業部 プログラミングコンテスト2020 参戦記
## hitachi2020A – Hitachi String
3分で突破. どう書くのが楽か戸惑ったけど、長さが10までなので、ありえる解答総当りが一番速いかとこうなった.
“`python
S = input()for i in range(1, 6):
if S == ‘hi’ * i:
print(‘Yes’)
exit()
print(‘No’)
“`## hitachi2020B – Nice Shopping
8分で突破. B問題だから総当たりでいいかと思ったら、制限を見るに無理. ちょっと考えたけど、割引券が無ければ最小金額は min(a) + min(b) に決まってるので、後は割引券だけ総当りすればいいやとこうなった.
“`python
A, B, M = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(in