Submit Search
Upload
インターネットプログラミング 解説資料
•
Download as PPTX, PDF
•
0 likes
•
110 views
Yuto Watanabe
Follow
講義内のプロジェクト解説スライド
Read less
Read more
Education
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 26
Download now
Recommended
64bit化してみた話
64bit化してみた話
Yuichi Yoshida
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasia
Yosuke Furukawa
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
kazuya noshiro
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
はじめようVue3!ハンズオンでとらのあなラボのフロントエンドを学ぶ_20210611_TechDay#1
はじめようVue3!ハンズオンでとらのあなラボのフロントエンドを学ぶ_20210611_TechDay#1
虎の穴 開発室
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdf
Tomokazu Kizawa
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Recommended
64bit化してみた話
64bit化してみた話
Yuichi Yoshida
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasia
Yosuke Furukawa
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
kazuya noshiro
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
はじめようVue3!ハンズオンでとらのあなラボのフロントエンドを学ぶ_20210611_TechDay#1
はじめようVue3!ハンズオンでとらのあなラボのフロントエンドを学ぶ_20210611_TechDay#1
虎の穴 開発室
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdf
Tomokazu Kizawa
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Dockerで始める開発環境構築
Dockerで始める開発環境構築
虎の穴 開発室
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
Yoshitaka Kuwata
Effective web performance tuning for smartphone
Effective web performance tuning for smartphone
dena_study
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAI
Tomokazu Kizawa
5分でわかるWebRTC
5分でわかるWebRTC
Ryosuke Otsuya
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
CHY72
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Koichi Sakata
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hitachi, Ltd. OSS Solution Center.
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例
Takaaki Ichijo
リモート先へログインする時環境あるある
リモート先へログインする時環境あるある
Ryota Sakamoto
Bot Framework Composer Fukuazu
Bot Framework Composer Fukuazu
ru pic
Deno の node 互換モードと ソケット
Deno の node 互換モードと ソケット
虎の穴 開発室
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Takashi Kanai
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
More Related Content
Similar to インターネットプログラミング 解説資料
Dockerで始める開発環境構築
Dockerで始める開発環境構築
虎の穴 開発室
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
Yoshitaka Kuwata
Effective web performance tuning for smartphone
Effective web performance tuning for smartphone
dena_study
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAI
Tomokazu Kizawa
5分でわかるWebRTC
5分でわかるWebRTC
Ryosuke Otsuya
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
CHY72
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Koichi Sakata
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hitachi, Ltd. OSS Solution Center.
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例
Takaaki Ichijo
リモート先へログインする時環境あるある
リモート先へログインする時環境あるある
Ryota Sakamoto
Bot Framework Composer Fukuazu
Bot Framework Composer Fukuazu
ru pic
Deno の node 互換モードと ソケット
Deno の node 互換モードと ソケット
虎の穴 開発室
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Takashi Kanai
Similar to インターネットプログラミング 解説資料
(20)
Dockerで始める開発環境構築
Dockerで始める開発環境構築
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
Effective web performance tuning for smartphone
Effective web performance tuning for smartphone
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAI
5分でわかるWebRTC
5分でわかるWebRTC
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例
リモート先へログインする時環境あるある
リモート先へログインする時環境あるある
Bot Framework Composer Fukuazu
Bot Framework Composer Fukuazu
Deno の node 互換モードと ソケット
Deno の node 互換モードと ソケット
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Recently uploaded
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
Recently uploaded
(7)
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
インターネットプログラミング 解説資料
1.
Copyright (C) 2021
Yuto Watanabe いい感じの文章を生成する やつ インターネットプログラミング プロジェクト Yuto Watanabe
2.
Copyright (C) 2021
Yuto Watanabe どういうもの? 2
3.
Copyright (C) 2021
Yuto Watanabe • 分かち書き→マルコフ連鎖を使用していい感じの文章を 生成 • サーバーとソケット通信を行いコンソールベースで操作 どういうもの? 3
4.
Copyright (C) 2021
Yuto Watanabe 分かち書きとは? 4
5.
Copyright (C) 2021
Yuto Watanabe 分かち書きとは? 5 今日の朝ごはんは餃子定食だった。
6.
Copyright (C) 2021
Yuto Watanabe 分かち書きとは? 6 今日 / の / 朝 / ごはん / は / 餃子 / 定食 / だっ / た / 。
7.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 7
8.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 晴れ 曇り 雨 0.3 0.4 0.7 0.4 0.2 0.3 0.3 0.3 8
9.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 私 の は ご飯 最強 の を 食べた 盾 矛 9
10.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 私 の は ご飯 最強 の を 食べた 盾 矛 10
11.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 私 の は ご飯 最強 の を 食べた 盾 矛 11
12.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 12 Value1 Value2 Value3 isStart isEnd 私 は 最強 True False 私 は ご飯 True False 私 の 最強 True False の 最強 の False False は 最強 の False False は ご飯 を False False 最強 の 矛 False True 最強 の 盾 False True ご飯 を 食べた False True
13.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 13 Value1 Value2 Value3 isStart isEnd 私 は 最強 True False 私 は ご飯 True False 私 の 最強 True False の 最強 の False False は 最強 の False False は ご飯 を False False 最強 の 矛 False True 最強 の 盾 False True ご飯 を 食べた False True
14.
Copyright (C) 2021
Yuto Watanabe マルコフ連鎖とは? 14 Value1 Value2 Value3 isStart isEnd 私 は 最強 True False 私 は ご飯 True False 私 の 最強 True False の 最強 の False False は 最強 の False False は ご飯 を False False 最強 の 矛 False True 最強 の 盾 False True ご飯 を 食べた False True
15.
Copyright (C) 2021
Yuto Watanabe プログラムを実行する 15
16.
Copyright (C) 2021
Yuto Watanabe プログラムを実行する 16 $ git clone https://github.com/yuto51942/socket-programming-project $ cd socket-programming-project
17.
Copyright (C) 2021
Yuto Watanabe プログラムを実行する 17 http://igo.osdn.jp/
18.
Copyright (C) 2021
Yuto Watanabe プログラムを実行する 18 $ cd server $ sh build.sh $ cd client $ sh build.sh • Server側のビルド • Client側のビルド $ cd server $ sh run.sh $ cd client $ sh run.sh • Server側の実行 • Client側の実行
19.
Copyright (C) 2021
Yuto Watanabe 処理の流れ 19
20.
Copyright (C) 2021
Yuto Watanabe 処理の流れ 20 /train マルコフ連鎖の アルゴリズム /generate 形態素解析器 Client Server ソケット通信 追加 Value1 Value2 Value3 isStart isEnd 私 は 最強 True False 私 は ご飯 True False 私 の 最強 True False の 最強 の False False は 最強 の False False は ご飯 を False False 最強 の 矛 False True 最強 の 盾 False True ご飯 を 食べた False True オブジェクトの配列
21.
Copyright (C) 2021
Yuto Watanabe 工夫した点 21
22.
Copyright (C) 2021
Yuto Watanabe • MarkovChain Class • void addElement(String text) • String generate() • void reset() • void printData() • Connect Class • void postText(String text) • String getText() 工夫した点 22
23.
Copyright (C) 2021
Yuto Watanabe 工夫した点 23 JavaDocを記述
24.
Copyright (C) 2021
Yuto Watanabe 工夫した点 24 コマンドベースでの操作 マルコフ連鎖で文章を生成する。 /generate /reset /end 引数に文章を指定し、マルコフ連鎖に使用するデータを追加する。 /train [text] /trainで追加した文章をすべて削除する。 Server、Clientを終了する。
25.
Copyright (C) 2021
Yuto Watanabe 25 yuto51942/socket-programming-project https://github.com/yuto51942/socket-programming-project
26.
Copyright (C) 2021
Yuto Watanabe • N-gramモデル • https://ocw.u-tokyo.ac.jp/lecture_files/is_01/6/notes/ja/langinfo6.pdf • JavaでTwitterBotをつくってみたよ • https://shironeko.hateblo.jp/entry/2016/11/14/201912 • 【自動生成】入賞作品から作文を生成したら素晴らしい文章ができ る説 – YouTube • https://www.youtube.com/watch?v=1OfCyavg_ZE 参考文献 26
Editor's Notes
19nc064の渡邊悠人です。よろしくおねがいします。 今回私が作成したものは、タイトルにある通り「いい感じの文章を生成するやつ」です。
そんなこと言われてもよくわからないと思うのではじめにどういうものかを簡単に説明します。
このプログラムは、マルコフ連鎖というものを使用してそれとなく意味が通じるような文章を生成するものです。 サーバーとクライアントに分かれており、クライアント側からコマンドプロンプトやターミナルなどのように特定のコマンドを入力することで様々なことができるようになっています。
実際にプログラムを理解してもらうため、はじめに「分かち書き」について解説します。
例えば、このような文章があったとします。
分かち書きは、文章を単語ごとに区切る操作を言います。
次にマルコフ連鎖について
マルコフ連鎖とは「未来の状態が過去の状態によらず現在の状態のみで決まり、とりうる状態が離散的」なもです。 天気を例にすると、晴れから曇りになる確率は0.3、曇のから雨になる確率は0.2~~~というような感じです。
この仕組みを利用することで、例えば、 「私の最強の矛」 「私の最強の盾」 「私は最強の矛」 「私は最強の盾」 「私はご飯を食べた」 などの文章が複数あった場合、このような図に表すことができます。 私の次は「の」か「は」になるので、ランダムでどちらかを選んでいくという作業を行っていくと
このように、文章をつくることができます。
実際、プログラム上では、3単語を使用した2階マルコフ連鎖を使用しています。 形態素解析器で分かち書きされたものを、はじめの単語が含まれる場合isStartフラグをTrueにしてオブジェクトとして保存していきます。 また、文の終端を含むものにはisEndフラグをTrueにしていきます。 文章を生成する場合は、isStartフラグがTrueになっているものからランダムで1つ選んでいき、
Value3の単語をまたValue1からランダム選択していき、
isEndフラグがTrueの場合終了するという再帰的な処理となっています。
では、実際にプログラムの実行方法について説明します。
このソースファイルはGithubで管理されているためgit cloneをすることで誰でも簡単に実行することができます。
このプログラムは、Javaの形態素解析器であるIgoというライブラリを使用しているため公式サイトからjarファイルをダウンロードしてserver/libsのディレクトリに置きます。
その後、client、serverともにそのディレクトリに移動してbuild.shを実行してビルドした後、run.shを実行することで実行ができます。 では、実際に試してみます。 [デモをする。]
このプログラムの処理の流れについて簡単に説明します。
処理の流れは図のようになっており、clientとserve間でソケット通信を行い、 /trainコマンドで文章を入力した場合その文章を形態素解析器で分かち書きして、マルコフ連鎖に使用するためのオブジェクトの配列に格納します。 /generateをclientからもらった場合はそのオブジェクトの配列から先ほど説明したように乱数を使用して文章を生成します。
次に工夫した点について紹介します。
このプログラムでは、オブジェクト指向で書かれており、 例えば、MarkovChainクラスが存在します。このクラスは以下のような関数を持っておりこのクラス単体でこのように、文章の追加と生成をすることができます。
さらに、全ての関数にJavaDocを記述することで、「この関数の引数は何だったっけ?」「何をリターンするの?」というような疑問を素早く解消できます。
さらに、先ほどのデモのように、コマンドベースで操作を可能にすることで、 文章の追加、文章の生成、リセットなど様々な操作を1つのソケット通信で行えるようにしています。
最後に、このソースファイルはgithunにPushしているので興味ある方は是非ご覧ください。
以上で、発表を終了します。
Download now