bs.fukufuki

bookshelf of fukufuki 留学、英語、物語、よしなしごと

(抜書)Dive into Python3 第2章

ネイティブデータ型 - Dive Into Python 3 日本語版

浮動小数点数は小数第15位まで正確だ。

//演算子はひねくれた整数除算を行う。結果が正の数の場合は、整数への切り捨て(四捨五入ではない)とみなすことができるが、これについては注意が必要だ。 //演算子は常に整数を返すわけではない。分子や分母のどちらか一方でもfloatの場合は、なお結果を最も近い整数に丸めてくれるのだが、実際の戻り値はfloatで返される。 **演算子は「べき乗」を意味する。

分数について

分数を使うために、fractionsモジュールをインポートする。 分数を定義するには、Fractionオブジェクトを作って分子と分母を渡す。 分数をつかった普通の数学的演算ならなんでもできる。演算結果は新しいFractionオブジェクトとして返される。2 * (1/3) = (2/3) Fractionオブジェクトは自動的に約分される。(6/4) = (3/2)

リストについて

a_list[0] は a_list の最初の要素だ。

リストを定義したら、そのリストの任意の一部分を新しいリストとして取得できる。これはリストのスライスと呼ばれる。

スライスは、スライスインデックスの一方または両方が負の数でも動作する。これは次のように考えると良いかもしれない: リストを左から右へ読み、1つ目のスライスインデックスで欲しい最初の要素を指定し、2つ目のスライスインデックスは欲しくない最初の要素を指定する。戻り値はその間に含まれるすべてだ。

a_listを['a', 'b', 'mpilgrim', 'z', 'example']で定義したあと a_list[1:-1]の戻り値が['b', 'mpilgrim', 'z']となっているが、これは-1が’example’ということだろう。

両方のスライスインデックスが省略された場合は、リストのすべての要素が含まれる。しかし、これは元の a_list 変数とは異なる。これは、たまたますべて同じ要素を持った新しいリストなのだ。だから、a_list[:]はリストの完全なコピーを作るための簡易な方法として使える。

リストへの要素の追加

append()メソッドはリストの末尾に要素を1つ追加する

extend()メソッドは1つの引数としてリストをとり、引数として与えられたリストの各要素を元のリストへ追加する。 insert()メソッドは1つの要素をリストに挿入する。

リスト内検索

count()メソッドは指定された値がリストの中に何回出現するかを数える。

リストの中に特定の値があるかどうかを知りたいだけの場合は、count()メソッドよりもin演算子の方がわずかながら処理が早い。in演算子は、常にTrueまたはFalseを返す。リスト中にその値が何回現われるのかは教えてくれないのだ。

index()メソッドはリスト中で最初に出現したものだけを検出する。この例だと、'new'がリストの中に2回出現していて、a_list[2]とa_list[4]の2箇所に存在しているが、index()メソッドは1つ目のインデックスだけを返す。

リストの要素の削除

pop() method, del, etc.

タプル

タプルはイミュータブル(後述)なリストだ。いったん作成されたタプルは、どんな手段によっても変更できない。

リストと同様に、スライスすることもできる。リストをスライスすると新しいリストが得られるように、タプルをスライスすると新しいタプルが得られる。 新しいリストではなく新しいタプルなのね

タプルはリストに変換できるし、その逆もできる。組み込みのtuple()関数はリストを引数にとって、同じ要素を持ったタプルを返す。またlist()関数はタプルを引数にとってリストを返す。実質的には、tuple()はリストの凍結を行い、list()はタプルの解凍を行うと考えることができる。

リストから集合を作るには、set()関数を使えばよい

集合は順序づけされていない。

空の集合を作るには、set()を引数なしに呼び出せばいい。

集合は一意な値を詰めた袋だ。既にその集合に含まれている値を追加しようとしても、何も起こらない。例外も送出されない。本当に何も起こらないのだ。

is_it_true({False}) →出力結果:yes, it's true ちょっとおもしろい

(抜書)Dive into Python3 第1章

初めてのPythonプログラム - Dive Into Python 3 日本語版

Pythonでは、どんなものに対しても明示的にデータ型を指定することは決してない。代入した値に基づいて、Pythonが内部的にデータ型を追跡するのだ。

2番目の引数a_kilobyte_is_1024_bytesには、デフォルト値としてTrueが割り当てられている。これは、この引数がオプションだということを意味している。つまり、この関数は、この引数を与えなくとも呼び出すことができ、その場合には第二引数にTrueが渡されたものとPythonは解釈するのだ。

引数リストを左から右へ読んだときに名前付き引数が現れたら、それ以降の引数には必ず名前を付けなければならない

三重クォートは複数行文字列を表す。

Pythonではあらゆるものがオブジェクトであり、すべてのオブジェクトは属性とメソッドを持つことができる。すべての関数は組み込み属性のdocを持っており、これはその関数のソースコード上に定義されたdocstring を返す。sysモジュールは(他の属性に混じって)pathという属性を持つオブジェクトだ。その他も同じだ。

全てのオブジェクトがサブクラス化できるわけではないが、それを変数に代入することができ、関数の引数として渡すことができるという意味では、すべてがオブジェクトなのだ。

インデントは必ずしも4個のスペースである必要はなく、空白の数に一貫性がありさえすればよい。次にインデントされていない行が現れたら、それが関数の終了を示す印となる。

変数multipleの宣言はどこにも行なっておらず、単にmultipleに値を代入しているだけだ。これで問題ない。Pythonはそうできるようになっているのだ。

Pythonにおけるすべての名前: 変数名・関数名・クラス名・モジュール名・例外名では大文字と小文字が区別される。

まず、モジュールはオブジェクトであり、すべてのモジュールはnameという組み込みの属性を持っている。モジュールのnameの値は、そのモジュールをどのように使っているかに応じて決まる。そのモジュールを import した場合は、nameはモジュールのファイル名からディレクトリ名や拡張子を取り除いたものになる。

しかしモジュールは、スタンドアローンのプログラムとして直接実行することもできる。この場合にはnameは特別なデフォルト値の"main"になる。Pythonはこの if 文を評価し、その式が真だということを知り、ifのコードブロックを実行する。この例では、2つの値が表示される。

※題材にされているプログラムでは、モジュールがスタンドアロンのプログラムとして実行されているか確認するためにこのif name==main が用いられている。

多職種の協働っていうけれど

結局は感情的にこじれたりするのが主の、泥くさい問題だよね。 リフレクティブ・プロセスはじめとするナラティブ・アプローチは、自己開示という技術を通して、比較的ハードで統制的な仕組みづくりという方法から、越境的にソフトな感情の部分にアクセスできるのがアドバンテージなのかもしれないと思います。

リフレクティング: 会話についての会話という方法

リフレクティング: 会話についての会話という方法

ナラティヴからコミュニケーションへ-リフレクティング・プロセスの実践-

ナラティヴからコミュニケーションへ-リフレクティング・プロセスの実践-

この手の本は、異なる部署でのコミュニケーションに悩んでいるビジネスマンにこそオススメしたいのです。

医師の感情: 「平静の心」がゆれるとき

医師の感情: 「平静の心」がゆれるとき

医師の感情についてはこういう本があるのですが、多職種協働や異分野理解にまつわる(主にマイナスの)感情面について書いた本はないものでしょうか。*1 あったとして、異文化コミュニケーションでは常識だろう、というような内容が主になってしまうのでしょうが、ぜひ読みたい。

追記mitorizu.jp 学問分野間のコミュニケーションについて着実に取り組まれていて、「越境研究所」を運営されている中川瑛氏(Twitter: @salut_copain)のサイト「知の見取り図」に、異分野コミュニケーションについての良い連載がありましたので、載せておきます。サイト内で

文化は集団ごとに異なるため、異なる集団が交流するときには必ず文化的な違いに基づく誤解や摩擦が生じうる。このような問題のメカニズムを発見したり、それによる個人や集団の変化、その摩擦を緩和させるための方法を考えるのが異文化コミュニケーションという分野である。

これらの文脈を分野間の交流に置き換えて考えてみると、まさにこの連載で取り組みたいと考えている異分野コミュニケーションなのである。学問分野が異なれば、そこでのマナーや常識、認められる方法論や目的が大きく異なる。分野の外には違う分野があり、交流する際には往々にして誤解や摩擦が生じうる。

そのような問題のメカニズムを発見したり、それによる個人や集団の変化、その摩擦を緩和させるための方法を考えるのがまさに異分野コミュニケーションだとここでは考えたい。

と述べられているように、異分野コミュニケーションにおける感情の問題もまた、異文化コミュニケーションの文脈より理解をはじめるのが適切でしょう。個人的には、Workの社会学より至り、質的研究により感情を扱えるような「異分野コミュニケーションの社会学」の道があればそちらもぜひ見てみたいですが…。

*1:「Workの社会学」は英語圏に伝統があるといつかお聞きしたのに、まだ触れられていないな。

読書会の本のチョイスに悩んでいます

次の読書会の本を何にするか悩んでいる。 今読んでるのはこれ。

ニューロラカン: 脳とフロイト的無意識のリアル

ニューロラカン: 脳とフロイト的無意識のリアル

題名に反して(?)ラカンよりもフロイトの理解が進む本だったので重宝している*1が、そうするとフロイトを読み返したくなるのですよね。

フロイトを読む―年代順に紐解くフロイト著作

フロイトを読む―年代順に紐解くフロイト著作

というわけで、いつもレジュメを切ってくださっている先輩に上の本をおすすめしてみました。 どうなるかな。

*1:これは私がこれまで認知神経科学寄りの基礎知識や視点を持ちながらフロイトを読んでいたという特殊事情による(ため『ニューロラカン』は自分の先入観が言語化された上で高度に整理された本として勉強になっている)ので、万人にオススメはしません

VR関連書籍を買いました

VRについて知りたくなって、本を買いました。 暇な時間に少しずつ読もうと思っています。

・GOROman(近藤義仁)『ミライのつくり方2020-2045 僕がVRに賭けるわけ』星海社新書.

ミライのつくり方2020―2045 僕がVRに賭けるわけ (星海社新書)

ミライのつくり方2020―2045 僕がVRに賭けるわけ (星海社新書)

→読了。HMDを日本に持ってくる!というこの方の熱い想いがあったからこその今なのだろうな、と先人への感謝の念がわきました。

西川善司ほか『VRコンテンツ開発ガイド』

VRコンテンツ開発ガイド 2017

VRコンテンツ開発ガイド 2017

→冒頭読み進め中。HMDの技術的な点が解説されていて勉強になります。

キズナアイほか『ユリイカ2018年7月号 特集=バーチャルYouTuber

ユリイカ 2018年7月号 特集=バーチャルYouTuber

ユリイカ 2018年7月号 特集=バーチャルYouTuber

VR現象について、当事者の声も交えた論考集。

・Benjamin『Blender 3DCG モデリング・マスター』

Blender 3DCG モデリング・マスター

Blender 3DCG モデリング・マスター

VRを実際に遊ぶのに必要なスキル、モデリングフリーソフトで教えてくれる本です。Blenderはすごいよね。

一冊目『ミライのつくり方」はAmazon在庫切れが続いているのですが、『Blender』と『VRコンテンツ』はちょうどKindleでほぼ半額で買えるので、買うなら今ですよ(と宣伝しておく)。

ではでは。

大昔のギーク時代に、プログラミングもBlenderもやっとかなかったのが悔やまれるなあ…。 まあ、それやってたら医学部入ってないでしょ、と言われたらそれまでなのですが、そっちのほうが楽しかった気がする(注:これは放言です)。

(抜書メモ)人工知能学会「メタファー写像と後編集を利用する物語文章生成フレームワーク」

bsfukufuki.hatenablog.com 前記事↑の学会発表内容に

JSAI2018/Search for presentations

上記↑の学会発表抄録の内容を加えた抜書です。

(以下、引用ブロックはすべて抄録よりのものです)

研究の特色

先行研究(言語処理学会人狼ログからの小説の自動生成」など)では「物語の作成を "1. 物語内容 (story) の決定: 何を語るか 2.物語言説 (discourse) の決定: どのような構成・技法を用 いるか 3.文字列化: 内部表現をどのように表層文字列に変換するか の流れで実現しようとする" 点が共通していた。 本研究は「メタファー」を用いて、まったく違ったアプローチで物語文章の生成を試みる。

わからなかった用語

  • メタファー写像
  • 概念メタファー理論(認知言語学
  • フレームワーク
  • テンプレート列
  • 連続尤度?
  • 独自内部表現
  • 数値行列
  • コミュニティ共有の評価
  • 意味領域(根源領域)、意味領域(目標領域)
  • 狭い意味でのフレーム問題
  • モジュール、サブモジュール

引用

一般に、あるシステムが複数の構成要素 (モジュー ル) からなる場合、全体の評価とモジュールごとの評価が可能 である。コストや方法論などの面においてシステム全体の評 価が難しい場合でも、モジュールごとの自動評価が相対的に容 易であれば、各モジュールの性能を向上させることにより、ひ いては、システム全体の性能を向上させることができる。

メタファー写像に関して、Lakoff [7] は、 「写像において、根源領域の表現間の(位相)構造は目標領域内でも保たれる3 。」という不変性原理を提唱した。

※このLakoffの理論は認知言語学の古典ともよぶべきものである。 “概念メタファー(がいねんメタファー)とは、認知言語学の用語で、「ある概念領域を別の概念領域を用いて理解する事」と定義される。ジョージ・レイコフとマーク・ジョンソンによる Metaphors We Live By で提唱された。同書では通常メタファー(隠喩)とは考えて来られなかった日常言語が取り上げられ、それらの背後にある概念メタファーが次々にあばかれる。”(「概念メタファー−Wikipedia」より)

メタファー写像に関して、Lakoff [Lakoff 93] は、「写像にお いて、根源領域の表現間の (位相) 構造は目標領域内でも保た れる ∗1。」という不変性原理を提唱した。この原理に則ると、 任意の2つの意味領域間において数個のメタファー写像の存 在が確認されれば、根源領域内の他の表現も位相構造を保った まま目標領域内に対応づけることができる見込みが非常に高 い。言い換えると、次の 2 つのことが成り立つ見込みが非常 に高い。 * テキストのジャンルを問わず、数個のメタファー写像の 存在が確認されれば、表 1 のようなデータベースが高い品質で構築できる * ゲームやシミュレーター内に実装されている種々の制約 や論理が、物語文章生成においても制約・論理として働くので、物語の展開において、「狭い意味でのフレーム問題」[人工知能学会 05] を回避できる 我々は、これらの成立の検証も兼ねて本研究を進めている。

認知言語学の概念メタファー理論において、メタファーは2つの意味領域間の連結であると捉えられる。

関連文献

認知心理学の概念メタファーについて

修辞学について

  • 三木清『解釈学と修辞学』
  • 佐藤信夫『レトリック感覚』『レトリック認識』

    本書がスゴいのは、レトリックの説得効果と美的効果を解きなおしたからだけではない。三つ目の視点、創造的認識のメカニズムを探り当てたところにある。(「『レトリック感覚』と『レトリック認識』はスゴ本: わたしが知らないスゴ本は、きっとあなたが読んでいる」より) dain.cocolog-nifty.com

(メモ)言語処理学会「人狼ログからの小説の自動生成」