{Python}flickrAPIを利用する

PythonからのflickrAPIは、 {Python}自分のTLの画像を保存する {Python}ウェブサイトやブログの画像を保存する {Python}instagramの画像を保存する 等で、自動収集した画像&メタデータをアップロードするために初期からずっと使っています。 まだ書いてなかったので、こちらの接続も書いておこうと思います。     環境等 win 10(32bit) python2.7 python lib:flickrapi MySQL Community Server 8.0.11     APIキー、APIシークレットの取得 Flickr APP GardenのCreate an APPページからGet your API Keyの下Request an API Keyをクリックします。 商用か非商用か問われるのでNon-Commercial(非商用)を選択します。 APIキーを使用するアプリケーションの名前と説明の入力画面になるので、記入し、SUBMITします。 APIキー、APIシークレットが発行されました。     flckrapiでAPIに接続する flickrのAPIを使用するには、flickrapiというライブラリを使います。 $pip install frickrapi であらかじめインストールしておきます。 今回は私のflickrアカウントから、2018年5月12日に撮影された(taken_dateが2018-05-12)写真の情報を取得するプログラムを書きました。   作成したものがこちらです。 出力結果を貼る前に今回はコードの補足説明を書いておきます。   #インスタンスの作成 formatはJSONで取得しています。他XMLなどでも取得することができます。   #APIリクエストを送ってレスポンスを得る メソッド名の指定 photos.searchはficckrAPIのメソッド名です。APIを通してどんな操作をしたいかで変わります。 Flickr… Continue Reading {Python}flickrAPIを利用する

{Python}MySQLとの接続

flickrデータからMySQLDBにデータを移行するPythonプログラムの作成準備として、MySQLとの接続方法を書いておきます。     環境等 win 10(32bit) python2.7 python lib:pyMySQL MySQL Community Server 8.0.11     pyMySQLで接続 以下サイトを参考に書かせていただきました。 [Python] MySQLに接続してデータ操作を行う│YoheiMnet MySQLに接続後、keyviewerというDBのテーブル一覧をクエリで要求して表示するプログラムです。 出力結果: tables in this db: {u’Tables_in_keyviewer’: u’data’} {u’Tables_in_keyviewer’: u’put_tag’} {u’Tables_in_keyviewer’: u’source’} {u’Tables_in_keyviewer’: u’tag’} {u’Tables_in_keyviewer’: u’tag_mapping’} {u’Tables_in_keyviewer’: u’user’} workbenchで作成したテーブル一覧がきちんと表示されています。 簡単にできました。 ひとつだけ引っかかったのはport番号の指定です。 いくつか見かけたサイトではpymysql.connectの引数にportを指定していなかったのですが、私はportを3307(デフォルト3306)に変更しているので、最初は接続が上手くいきませんでした。 port変更してる場合はportを指定してあげよう……。 おわりです。    

{IP}OpenCVの導入

環境等 win 10 OpenCV 3.4 python 2.7 OpenCVとは OpenCVとはインテルが開発・公開している画像認識のライブラリです。 everykeyの自動タグ付けに何かと便利そうなので、導入しておきます。 OpenCVのダウンロード OpenCVはpipからインストールできないので、手動でDLしpythonのライブラリとして追加します。 まずは、以下のページからOpenCVのファイルを入手します。 https://sourceforge.net/projects/opencvlibrary/files/ 今回は、opencv-3.4.1-vc14_vc15.exeをDLしました。 OpenCVのインストール DLができたらクリックして解凍し、自分の環境に合わせて以下のファイルのいずれかをコピーします。 build\python\2.7\x64\cv2.pyd build\python\2.7\x86\cv2.pyd コピーしたファイルをPythonのsite-packages(Python27\Lib\site-packages)に貼り付けます。 pythonでimport cv2を実行してエラーが出なければ、インストール完了です。

{NLP}O’REILLY2.8_8単語の構成に関する条件付き頻度分布

O’reilly NLP with Python演習問題2.8_8 TODO 名前コーパス(names)から、名前の頭文字の男女別頻度分布を調べる アルファベットごとの出現回数を調べる 今回グラフは棒グラフがよさそうですが、NLTKのplot()で棒グラフを生成できるのかわからなかったので、matplotlibを使って生成しようと思います。 そのために、まずは、X軸、Y軸に使うために、出現回数の配列をつくります。 forの入れ子が多くて大変頭の悪そうなコードではあるのですが……。 出力結果: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’] [443 246 469 308 251 144 213 124 83 293 276 332 484 158 66 121 9 247… Continue Reading {NLP}O’REILLY2.8_8単語の構成に関する条件付き頻度分布

{NLP}Swadeshリストの活用

NLTKにはSwadeshリストが含まれています。今回はSwadeshリストを用いて言語間の語彙比較をしてみます。 Swadeshリストは、どの文化での生活でも最初の段階で発生する、基本的な語彙を並べたリストで、比較言語学ではこのSwadeshリストに含まれる語彙がどの程度近いかを調べることで、言語間の距離(どの段階で分かれた言語か)が分かったりします。 大学の頃は、マイナーな言語のSwadeshリストは、英語のSwadeshリストを見ながらそれに対応する単語を辞書などを用いて地道に調べた記憶もあります。 NLTKSwadeshリストは24の言語しかなく、マイナーな言語については調べられません。 しかし、Swadeshリストとは別に、NLTKにはShoeboxとToolboxという語彙目録が存在し、ここにはより多くの言語の情報が詰まっているそうなので、そちらも活用するとさらに幅を広げられるかもしれません。 ShoeboxとToolboxについては、また改めて別のエントリで触れたいと思います。 (※Swadeshリストについてはこちらを参照:Appendix:Swadesh lists│Wiktionary) Swadeshリストの中身を見る インポート from nltk.corpus import swadesh 言語一覧を見る wadesh.fileids() 出力結果: [u’be’, u’bg’, u’bs’, u’ca’, u’cs’, u’cu’, u’de’, u’en’, u’es’, u’fr’, u’hr’, u’it’, u’la’, u’mk’, u’nl’, u’pl’, u’pt’, u’ro’, u’ru’, u’sk’, u’sl’, u’sr’, u’sw’, u’uk’] ISO639言語コードで言語名が表示されます。 (※言語コードについてはこちらを参照:ISO 639言語コード│Cyber Librarian 特定言語のSwadeshリストを見る swadesh.words(‘de’)[:20] 出力結果: [u’ich’, u’du, Sie’, u’er’, u’wir’, u’ihr, Sie’,… Continue Reading {NLP}Swadeshリストの活用

{NLP}O’REILLY2.8_5名詞のメロニム/ホロニムを調べる

O’reilly NLP with Python演習問題2.8_5 TODO 任意の名詞のホロニムとメロニムの関係を調べる メロニム/ホロニムとは 意味により整列された英語辞書WordNet(シソーラスのようなもの)の、関係の表し方には同義語集合と、語彙関係という階層構造があります。 後者の語彙関係における要素同士の関係にメロニムとホロニム含まれます。 メロニム(meronyms) ある要素からそれを含む構成要素への関係 「幹(trunk)」「枝(limb)」が「木(tree)」の一部分である場合、”木の(部分的/part)メロニム”は、すなわち「幹」「枝」を意味します。 「心材(heartwood)」、「辺材(sapwood)」もまた別の観点から「木」の一部分です。”木の(材質的/substance)メロニム”は、すなわち「心材」「辺材」を意味します。 ホロニム(holonyms) 構成要素とそれを含む要素との関係 「木」が集まると「森(forest)」になる場合、”木のホロニム”は、すなわち「森」を意味します。

{NLP}O’REILLY2.8_4単語の出現回数グラフの生成

O’reilly NTP with Python演習問題2.8_4 TODO NLTKコーパスstate_union(『State of the Union addresses(一般教書演説)』)について、’men’,’women’,’people’の出現回数を数える。 上記3単語について、時代による変化のグラフを生成する。 テキスト中の特定語の出現回数を調べる 出力結果: 1945-Truman.txt / men: 2 , women: 2 , people: 10 1946-Truman.txt / men: 12 , women: 7 , people: 49 1947-Truman.txt / men: 7 , women: 2 , people: 12 (…) 2004-GWBush.txt / men: 7 , women: 8 , people: 21 2005-GWBush.txt… Continue Reading {NLP}O’REILLY2.8_4単語の出現回数グラフの生成

{NLP}特定の単語を含む一文を抽出する

O’reilly NTP with Pythonの演習問題1.8_17 環境等 win 10 python2.7 python lib: nltk.book 関数index() index()を使って特定単語の添字を求めたあと、前後の「.」までの単語を一文とみなし、出力します。 色々な方法があると思います。これで最適なのかわかりませんが……。 ここではtext9(‘The Man Who Was Thursday’by G . K . Chesterton 1908)から、’sunset’を含む一文を抽出してみます。 出力結果: CHAPTER I THE TWO POETS OF SAFFRON PARK THE suburb of Saffron Park lay on the sunset side of London , as red and ragged as a cloud of… Continue Reading {NLP}特定の単語を含む一文を抽出する

{NLP}コロケーションの抽出

O’reilly NTP with Pythonの演習問題1.8_7 環境等 win 10 python2.7 python lib: nltk.book コロケーションとは 頻繁に共起する単語の組み合わせ。 類似した意味を持つ単語での置き換えがしづらいもので、バイグラムのうち頻繁に出現するものとも言えます。 関数collocations() collocations()では、バイグラム(bigrams())のうち、個々の単語の出現頻度から期待される出現頻度よりも大きいものを抽出します。 NLTK Bookモジュールtext5(Chat Corpus)から、コロケーションを抽出してみます。 text5.collocations() 出力結果: wanna chat; PART JOIN; MODE #14-19teens; JOIN PART; PART PART; cute.-ass MP3; MP3 player; JOIN JOIN; times .. .; ACTION watches; guys wanna; song lasts; last night; ACTION sits; -…)…- S.M.R.; Lime Player; Player… Continue Reading {NLP}コロケーションの抽出

{NLP}分散プロットの生成

O’reilly NLP with Pythonの演習問題1.8_6 環境等 win 10 python2.7 python lib: nltk.book 分散プロットとは 特定の単語がテキスト中のどの位置に出現するかを表示した図です。 例えば、歴代大統領就任演説を全て繋げたテキストの中で、freedomやdemocracyといった語の出現頻度を、時間の経過とともに見ることができます。 関数dispersion_plot() NLTKのbookモジュールのtext2にある『Sence and Sensibility (Jane Austen)』から’Elinor’,’Marianne’,’Edward’,’Willoughby’の4人の登場人物の分散プロットを表示してみます。 text2.dispersion_plot([‘Elinor’,’Marianne’,’Edward’,’Willoughby’]) 出力結果: 以上の図が出力される。 それぞれの名前の出現位置から、ウィロビーとマリアン、エドワードとエリナーに、物語上深い関係があると推測することができます。