<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>eF-4 developer &amp; creator blog</title>
	<atom:link href="/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ef-4.co.jp/</link>
	<description></description>
	<lastBuildDate>Sat, 05 Jun 2021 10:45:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.23</generator>
	<item>
		<title>Gatlingによる負荷テストの方法</title>
		<link>https://blog.ef-4.co.jp/gatling%e3%81%ab%e3%82%88%e3%82%8b%e8%b2%a0%e8%8d%b7%e3%83%86%e3%82%b9%e3%83%88%e3%81%ae%e6%96%b9%e6%b3%95/</link>
		<pubDate>Wed, 02 Jun 2021 20:00:23 +0900</pubDate>
		<dc:creator><![CDATA[t.tsuyuki]]></dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[ネットワーク/サーバー]]></category>
		<category><![CDATA[Gatling]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2688</guid>
		<description><![CDATA[あらまし 今回gatlingを用いたwebサイトの負荷テストの方法に関して書いて行きたいと思います。 まず負荷テストについて説明しますと、負荷テストとは大量のリクエストをサイトに対して送ることによってサイトが求められる性 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2><span style="font-size: 18pt;"><strong>あらまし</strong></span></h2>
<hr />
<p>今回gatlingを用いたwebサイトの負荷テストの方法に関して書いて行きたいと思います。</p>
<p>まず負荷テストについて説明しますと、負荷テストとは大量のリクエストをサイトに対して送ることによってサイトが求められる性能要件を満たしているか確認することを言います。また負荷テストを行う理由としては、実際の運用フェーズに入ってからその性能問題が表面化すると利用者などに対して多大なる迷惑や信用の低下を招く事態となる可能性があるからです。<br />
したがってwebサイトの性能を計測することは、サイト利用者のUXを向上させることに繋がりますのでアクセス数が多いサイトになると重要な検証となります。</p>
<p>&nbsp;</p>
<h2><span style="font-size: 18pt;"><strong>Gatling</strong></span></h2>
<hr />
<p><a href="https://gatling.io/" rel="https://gatling.io/"><img class="alignnone wp-image-2703 size-medium" src="/wp/wp-content/uploads/2021/05/ef4e6157c15075d3ab3ede6a7bd9891a-300x83.png" alt="" width="300" height="83" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/ef4e6157c15075d3ab3ede6a7bd9891a-300x83.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/ef4e6157c15075d3ab3ede6a7bd9891a-768x212.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/ef4e6157c15075d3ab3ede6a7bd9891a.png 812w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>今回用いるgatlingはオープンソースのwebサイト検証用ツールで詳細なシナリオをScalaを用いて記述することが可能です。シナリオとは、webサイトに対する負荷のかけ方を記述するもので、普段サイトにアクセスする際に用いているブラウザで行う動作をシミュレートします。認証システムなどの複雑なものではレスポンスデータを解析して必要な値を抽出するなどの作業が発生するためScalaでシナリオを記述できるGatlingなどで無いと負荷テストを行えない場合も存在し、そのような場合に対して重宝します。Enterprise向けのFrontLineというものもありますが今回用いているのはOpen-Sourseのものです。</p>
<p>&nbsp;</p>
<h2><span style="font-size: 18pt;"><strong>環境</strong></span></h2>
<hr />
<p>&nbsp;</p>
<ul>
<li>Windows10
<ul>
<li>検証用PC</li>
</ul>
</li>
<li>Laravel
<ul>
<li>ターゲット用サーバー</li>
<li>dockerを用いてローカルホストで起動</li>
</ul>
</li>
</ul>
<ul>
<li>gatling
<ul>
<li>javaをローカルPCにインストール</li>
<li>zipファイルを<a href="https://gatling.io/">公式サイト</a>からダウンロード</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h2><span style="font-size: 18pt;"><strong>動作確認</strong></span></h2>
<hr />
<p>公式サイトからzipファイルをダウンロードしたらgatlingが実行できるか確認して行きます。<br />
解凍したフォルダ内に移動して、</p>
<p>Windowsの場合</p><pre class="crayon-plain-tag">bin\gatling.bat</pre><p>を実行</p><pre class="crayon-plain-tag">Choose a simulation number:
     [0] computerdatabase.BasicSimulation
     [1] computerdatabase.advanced.AdvancedSimulationStep01
     [2] computerdatabase.advanced.AdvancedSimulationStep02
     [3] computerdatabase.advanced.AdvancedSimulationStep03
     [4] computerdatabase.advanced.AdvancedSimulationStep04
     [5] computerdatabase.advanced.AdvancedSimulationStep05</pre><p>が表示されれば実行可能な状態にあるので0を選択しcomputerdatabase.BasicSimulationを実行してみます。<br />
オプションを要求されますがそのままEnterを入力して進みます。</p>
<p>検証が終了すれば以下のような検証結果が表示されるので確認します。</p><pre class="crayon-plain-tag">================================================================================
---- Global Information --------------------------------------------------------
&amp;gt; request count                                         13 (OK=13     KO=0     )
&amp;gt; min response time                                    175 (OK=175    KO=-     )
&amp;gt; max response time                                    357 (OK=357    KO=-     )
&amp;gt; mean response time                                   192 (OK=192    KO=-     )
&amp;gt; std deviation                                         48 (OK=48     KO=-     )
&amp;gt; response time 50th percentile                        179 (OK=179    KO=-     )
&amp;gt; response time 75th percentile                        179 (OK=179    KO=-     )
&amp;gt; response time 95th percentile                        251 (OK=251    KO=-     )
&amp;gt; response time 99th percentile                        336 (OK=336    KO=-     )
&amp;gt; mean requests/sec                                   0.52 (OK=0.52   KO=-     )
---- Response Time Distribution ------------------------------------------------
&amp;gt; t  800 ms &amp;lt; t  t &amp;gt; 1200 ms                                            0 (  0%)
&amp;gt; failed                                                 0 (  0%)
================================================================================

Reports generated in 0s.</pre><p></p>
<h2>resultフォルダ内にあるindex.htmlファイルを開くと次のようなサマリが表示されます。</h2>
<h2><img class="wp-image-2710 alignnone" src="/wp/wp-content/uploads/2021/05/gatlin_result_01-300x223.png" alt="" width="670" height="498" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/gatlin_result_01-300x223.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/gatlin_result_01-768x571.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/gatlin_result_01-1024x761.png 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/gatlin_result_01.png 1249w" sizes="(max-width: 670px) 100vw, 670px" /></h2>
<h2></h2>
<h2><span style="font-size: 18pt;"><strong>Laravelの準備</strong></span></h2>
<hr />
<h2>次に独自シナリオを作成して検証するための仮のサイトを構築します。</h2>
<p>今回はdockerを用いてlaravelのデフォルトのページを作成してターゲットサイトとします。</p>
<p>アドレスをhttp://localhost:8000として作成し以下のようなページを表示できる状態とします。</p>
<p>デフォルトのページでは認証機能が存在しないため機能を作成しておいてください。</p>
<p>右上にLoginのリンクが表示されていればOKです。</p>
<p><img class="alignnone wp-image-2718" src="/wp/wp-content/uploads/2021/05/FireShot-Capture-003-Laravel-localhost-1-300x146.png" alt="" width="672" height="327" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/FireShot-Capture-003-Laravel-localhost-1-300x146.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/FireShot-Capture-003-Laravel-localhost-1-768x375.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/FireShot-Capture-003-Laravel-localhost-1-1024x500.png 1024w" sizes="(max-width: 672px) 100vw, 672px" /></p>
<p>これに対してシナリオを作成して行きたいと思います。</p>
<h2><span style="font-size: 18pt;"><strong>独自シナリオの作成</strong></span></h2>
<hr />
<p>動作確認が出来たらシナリオを作成していきます。</p>
<p>今回作成するシナリオは</p>
<p>&nbsp;</p>
<ul>
<li><span style="font-size: 12pt;">TopページからLoginボタンを押してDashboard表示まで</span></li>
</ul>
<p>&nbsp;</p>
<p>になります。</p>
<p>laravelのログイン認証ではCSRFトークンが用いられているので取得したものをメールアドレスとパスワードと合わせて送信する必要があります。</p>
<p>トークン自体はレスポンスボディに埋め込まれているので正規表現などを用いて抽出します。<img class="alignnone wp-image-2723" src="/wp/wp-content/uploads/2021/05/laravel_login_form_hiden_param-300x135.png" alt="" width="978" height="440" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/laravel_login_form_hiden_param-300x135.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/laravel_login_form_hiden_param-768x345.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/laravel_login_form_hiden_param-1024x460.png 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/laravel_login_form_hiden_param.png 1559w" sizes="(max-width: 978px) 100vw, 978px" /></p>
<p>&nbsp;</p>
<p>CSRFを考慮してシナリオを作成すると</p>
<p><img class="alignnone wp-image-2737 " src="/wp/wp-content/uploads/2021/05/scenario-2-300x254.png" alt="" width="770" height="652" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/scenario-2-300x254.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/scenario-2-768x651.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2021/05/scenario-2.png 791w" sizes="(max-width: 770px) 100vw, 770px" /></p>
<p><code></code></p>
<p>のようになるので先ほどと同様に実行して検証できます。</p>
<p>&nbsp;</p>
<p>このようにGatlingを用いれば複雑な認証システムでも簡単に負荷テストできるのが分かると思います。</p>
<p><span style="font-size: 18pt;"><strong>最後に</strong></span></p>
<hr />
<p>シナリオを作成する上で重要なのはWebサイトに置いて発生しやすい障害を想定することかと思います。</p>
<p>そのなかで最もリスクの高い順から検証し足りない部分に関してはスケーリングしていくなどの対策案が</p>
<p>考えられていくように想像します。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ブロックチェーンの安全性</title>
		<link>https://blog.ef-4.co.jp/%e3%83%96%e3%83%ad%e3%83%83%e3%82%af%e3%83%81%e3%82%a7%e3%83%bc%e3%83%b3%e3%81%ae%e5%ae%89%e5%85%a8%e6%80%a7/</link>
		<pubDate>Mon, 26 Aug 2019 19:23:57 +0900</pubDate>
		<dc:creator><![CDATA[伊藤 天輝]]></dc:creator>
				<category><![CDATA[ネットワーク/サーバー]]></category>
		<category><![CDATA[ブロックチェーン]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2453</guid>
		<description><![CDATA[ef-4インターン生の伊藤です。今回は前回投稿した簡単なブロックチェーンの説明から想定される危険性に対してブロックチェーンがとっている対策を紹介します。  必要な知識 以下の知識を用います。 ・公開鍵暗号 隠しておく秘密 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>ef-4インターン生の伊藤です。今回は前回投稿した簡単なブロックチェーンの説明から想定される危険性に対してブロックチェーンがとっている対策を紹介します。</p>
<h3 class="miniTitle"> 必要な知識</h3>
<p>以下の知識を用います。</p>
<p>・公開鍵暗号</p>
<p>隠しておく秘密鍵と公開していい公開鍵を使う暗号方式。公開鍵で暗号化→秘密鍵で復号が一般的だが、秘密鍵で暗号化→公開鍵で復号も可能。</p>
<p>・ハッシュ関数</p>
<p>任意の数列から不規則な固定長の数列を作る関数。出力をハッシュ値という。ハッシュ値を計算することは簡単だが、ハッシュ値から元の値を計算することは不可能。</p>
<h3 class="miniTitle"> 他人の支払いを偽造</h3>
<p><img class="alignnone wp-image-2469 size-large" src="/wp/wp-content/uploads/2019/08/c785af788239fb068e1183014e0c39f9-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/c785af788239fb068e1183014e0c39f9-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/c785af788239fb068e1183014e0c39f9-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/c785af788239fb068e1183014e0c39f9-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/c785af788239fb068e1183014e0c39f9.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>誰の宣言かしっかり確認しないとこのようなことも起こりえます。ブロックチェーンはこれを公開鍵暗号の署名を用いて防止しています。<img class="alignnone wp-image-2522 size-large" src="/wp/wp-content/uploads/2019/08/wp13-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/wp13-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/wp13-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/wp13-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/wp13.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />この3つをまとめて送信することによって、暗号化されたものを復号することができなかったら偽造と見抜くことができます。逆に言うと、秘密鍵さえあれば自由に取引ができてしまうので絶対に他人には教えないようにしましょう。もし他人に知られてしまったら、管理者がいないので取引の停止ができず資産がなくなってしまします。対策としてマルチシグを用いることもあります。マルチシグとは秘密鍵を分割し、暗号化するには一定数集めないといけないもので1つ秘密鍵が流出しても資産を守ることができます。</p>
<h3 class="miniTitle"> ブロック作成の仕組み</h3>
<p>始めに前回省略したブロックチェーンに必要な計算について説明します。</p>
<p><img class="alignnone wp-image-2473 size-large" src="/wp/wp-content/uploads/2019/08/990fadc5f02884824970ae1b45cff316-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/990fadc5f02884824970ae1b45cff316-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/990fadc5f02884824970ae1b45cff316-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/990fadc5f02884824970ae1b45cff316-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/08/990fadc5f02884824970ae1b45cff316.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>ブロックは取引情報とは別にナンス値と前のハッシュ値を持っています。ナンス値とはブロックのハッシュ値を調整するためのものです。条件を満たすハッシュ値になるナンス値を見つけた人がブロックを追加できるけれど、この条件がとても厳しいです。ハッシュの性質上、検証は簡単なので適当なナンス値を入れても偽造がばれてしまいます。ブロックを作ると報酬がもらえるので、報酬を狙っている人たちは時間と電力を使ってナンス値を計算してブロックを作っています。</p>
<p>ブロックチェーンではチェーンが複数伸びてしまうことがありますが、その場合は長いほうのチェーンが採用され、短いほうのチェーンはなくなります。ブロックを改ざんするには正しいチェーンより長いチェーンを作ればいいことになります。</p>
<h3 class="miniTitle"> 過去のブロックの改ざん</h3>
<p>ブロックの情報を改ざんするとハッシュ値が変わってしまうためナンス値を計算しなおす必要があり、もしできたとしても次のブロックが前のブロックのハッシュ値を持っているためそこも計算しなおし…と繰り返し現在のブロックまでのナンス値を計算しなおし、正しいチェーンより長いチェーンを作らなければいけません。これは不可能に近いと言われています。</p>
<h3 class="miniTitle"> 不正ブロックの追加</h3>
<p>正しいチェーンよりも長いチェーンを作ることができればこれは可能です。過去には1000万円相当のモナコインが流出したことがあります。全体の過半数の計算能力を手に入れることができれば不正ができるので「51%攻撃」とも呼ばれます。ブロックチェーンの規模が大きくなるほど全体の計算コストも大きくなるので、過半数の計算能力を手に入れることはコスト的に現実的ではありません。しかし、規模が小さいと比較的簡単に過半数の計算能力が手に入るので51%攻撃が成功しやすくなります。不正ブロックを追加すれば、過去に起こった取引を長いチェーンによって消して同じお金を使える（二重支払い）などが可能です。</p>
<p>51%攻撃への効果的な対策はなく、チェーンが十分伸びたら取引を承認するといったような対策がされています。</p>
<h3 class="miniTitle"> 最後に</h3>
<p>51%攻撃の危険性はありますが、ビットコインやイーサリアムといった規模の大きいものを使えばリスクは少ないと思われます。セキュリティ以外で、仮想通貨で危惧すべきなのは価値変動のしやすさでしょうか。暴落してしまうこともあるので仮想通貨を始める人はニュースをしっかり見ておくようにしましょう。</p>
<p>現在さまざまなサービスがブロックチェーンを利用しています。自分のサービスがブロックチェーンを生かせそうならブロックチェーンの利用を検討してみてはいかがでしょうか。</p>
]]></content:encoded>
			</item>
		<item>
		<title>GDBを使って物語を要約してみる</title>
		<link>https://blog.ef-4.co.jp/gdb%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e7%89%a9%e8%aa%9e%e3%82%92%e8%a6%81%e7%b4%84%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
		<pubDate>Mon, 26 Aug 2019 14:16:14 +0900</pubDate>
		<dc:creator><![CDATA[m.saitou]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2314</guid>
		<description><![CDATA[ はじめに インターン生の齋藤です。 社内の物語要約コンテストにGDBを用いた手法で挑戦してみました。 今回はその概要を説明しようと思います。 &#160;  GDBとは？ GDBとはグラフデータベース(Graph Da [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3 class="miniTitle"> はじめに</h3>
<p>インターン生の齋藤です。</p>
<p>社内の物語要約コンテストにGDBを用いた手法で挑戦してみました。</p>
<p>今回はその概要を説明しようと思います。</p>
<p>&nbsp;</p>
<h3 class="miniTitle"> GDBとは？</h3>
<p>GDBとはグラフデータベース(Graph Data Base)の略であり、ノードとエッジ(点と線)で構成されたデータベースのことです。</p>
<p>GDBのサービスの一つにneo4jがあり、以下の画像はブラウザ上でGDBを可視化したものです。</p>
<p><img class="wp-image-2320 aligncenter" src="/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-300x112.png" alt="" width="789" height="295" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-300x112.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-768x287.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-1024x383.png 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa.png 1273w" sizes="(max-width: 789px) 100vw, 789px" /></p>
<p>&nbsp;</p>
<p>テーブルで構成されるリレーショナルデータベースと比べると、「各点同士の関係が分かりやすい」「新しい関係を付け足すことが簡単」などの良い点があります。</p>
<p>&nbsp;</p>
<p>この他にもGDBは「A君の友達の友達の友達は、、？」のような深い関係の検索を高速で行えるという特徴を持ちます。</p>
<p>&nbsp;</p>
<p>しかし、この特徴は今回活かせず、ただ関係性を操作しやすいデータベースとしての活用に留まりました。</p>
<p>&nbsp;</p>
<h3 class="miniTitle"> PythonでGDBを使う</h3>
<p>今回、GDBはPythonでNeo4jを動かすことで作成しています。</p>
<p>書いたコードでは、以下のようにstory_gdbというclassを定義しました。</p>
<p>(url、username、passwordにはそれぞれNeo4jのURL、登録したユーザー名、パスワードを代入しています)</p><pre class="crayon-plain-tag">from neo4jrestclient import client
from neo4jrestclient.client import GraphDatabase

class story_gdb:
    def __init__(self,url,username,password):
        #グラフデータベースの初期化を行う
        self.gdb = GraphDatabase(url,username = username,password = password)</pre><p>&nbsp;</p>
<p>以下のようなコードを実行するとGDBにノードやエッジを追加できます</p><pre class="crayon-plain-tag">n_dict["sentence0"] = gdb.nodes.create(name = "sentence0")
n_dict["sentence0"].labels.add("sentence")
n_dict["sentence0"].relationships.create("next_sen",n_dict["sentence1"+],senNo = 0)</pre><p>今回はPythonの辞書型でgdbで作成したノードを管理できるようにしました。</p>
<p>辞書型でノードを管理するとこの後の経路探索などの時に便利です。</p>
<p>このあたりの詳細は<a href="https://neo4j-rest-client.readthedocs.io/en/latest/elements.html">neo4jのリファレンス</a>を参考にしてください。</p>
<p>&nbsp;</p>
<p>又、クエリを直接打ち込むことによりGDBの編集を行うことも可能です。</p>
<p>&nbsp;</p>
<h3 class="miniTitle"> 今回の手法概要</h3>
<p>今回は物語の要約ということで、文脈の把握をするために、</p>
<p>①類似概念をまとめる　②頻度以外でキーワードを評価する　③時系列を考慮する</p>
<p>ことを目標としてアルゴリズムを考案しました。</p>
<p>&nbsp;</p>
<p>具体的には、</p>
<p>①文章を要約文章作成用のGDBに落とし込む</p>
<p>②各ノードのスコアをLexRankによって計算した上で経路探索する</p>
<p>という流れで出力を得ました。</p>
<p>&nbsp;</p>
<h3 class="miniTitle">要約文章作成用のGDB構成</h3>
<p>自然言語処理ライブラリのGiNZAを利用して、形態素解析・構文解析を行ったものをGDBに落とし込みました。</p>
<p>(GiNZAのGithubページ：<a href="https://megagonlabs.github.io/ginza/">https://megagonlabs.github.io/ginza/</a>)</p>
<p>この時に</p>
<p>・同じ英単語に翻訳される単語をつなぐ(①類似概念をまとめる)</p>
<p>・時系列をエッジで管理する(③時系列を考慮する)</p>
<p>・文章の頭にノードを追加する(不要な文章をスキップさせる目的)</p>
<p>などの点を考慮してデータベースを作成しました。</p>
<p>&nbsp;</p>
<p>その結果、例えば「石ころを投げた。石を食べたらおいしくなかった。」という文章を表示すると先ほどの図のようになります。</p>
<p>・「石」と「石ころ」という似た概念が”rock”でつながっている</p>
<p>・時系列を考慮しているため、矢印の通りにノードを辿ると大体意味が分かる</p>
<p>・文章の最初と最後にsentenceの名前のノードが存在する</p>
<p>ことが分かると思います。</p>
<p><img class="wp-image-2320 aligncenter" src="/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-300x112.png" alt="" width="786" height="293" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-300x112.png 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-768x287.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa-1024x383.png 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/795316b92fc766b0181f6fef074f03fa.png 1273w" sizes="(max-width: 786px) 100vw, 786px" /></p>
<p>ここでは、動詞は全て動詞の原形で表示するようにして、活用は各エッジに格納するようにしています(残念ながら上の画像では表示されていないのですが)。</p>
<p>これにより、1つの動詞に対して1つのスコアをつけることや、時系列ごとに動詞の活用をとることができるようになります。</p>
<p>&nbsp;</p>
<h3 class="miniTitle"> ノードのスコア計算・経路探索を行う</h3>
<p>物語では重要な単語は物語内に散らばって存在すると考えたので、各ノードのスコアはPageRankと併せて文章内での分散の値を計算して平均をそろえて算出しました。これにより、特に伏線回収のような文脈に注目できます(②頻度以外でキーワードを評価する)。</p>
<p>&nbsp;</p>
<p>経路探索については、強化学習の状態価値評価を参考に、離れるにつれて将来のスコアが割り引かれるようなモデルを考案しました。</p>
<h3 class="miniTitle"> 結果</h3>
<p>例としてシンデレラの物語を入力すると</p>
<p>&nbsp;</p>
<p>。行く事はできませんでした。舞踏会どんな女性何処女性は誰だろうとささやきあっていましたがトレメイン夫人は何処の誰だか確かめない侭時ガラスの靴片一方のガラスの靴が合う女性事を王子様が御ふれを知るなりましたがなる大公様。片一方のガラスの靴はぴったり。王子様とシンデレラし再会し結婚式を挙げました。仲良しの動物達は二人を見送るのでした。</p>
<p>&nbsp;</p>
<p>のような出力が返ってきました。</p>
<h3 class="miniTitle"> 問題点</h3>
<p>・GiNZAからGDBに落とし込みきれていない</p>
<p>GDBへの落とし込みが上手く出来ていないために文法が滅茶苦茶になってしまう部分があります。今回は経路を辿って出力を行うため、再現性が低くなってしまうという問題もあります。</p>
<p>&nbsp;</p>
<p>・経路探索アルゴリズムが不完全</p>
<p>今回、経路探索で扱うノード数が大きすぎる問題などにより、全ノードについて時系列を考慮した経路探索アルゴリズムは実装・検証しきれませんでした。</p>
<p>&nbsp;</p>
<p>・文章が短くならない</p>
<p>一番最初のノードと一番最後のノードを辿る最大スコアの経路を探索する手法なので、要約と言えるまで文章が短くなりきらない場合があります。</p>
<h3 class="miniTitle"> 今後の展望</h3>
<p>今回は文脈把握にあたっての3つの目標をうまくアルゴリズムで表現することが出来ませんでした。</p>
<p>今後、日本語の文章構造に最適化したGDBへの落とし込み、経路探索アルゴリズムの効率化を行うことにより、より精度の高い要約文が生成されるのではないかと思います。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ブロックチェーンとは</title>
		<link>https://blog.ef-4.co.jp/%e3%83%96%e3%83%ad%e3%83%83%e3%82%af%e3%83%81%e3%82%a7%e3%83%bc%e3%83%b3%e3%81%a8%e3%81%af/</link>
		<pubDate>Fri, 16 Aug 2019 14:18:22 +0900</pubDate>
		<dc:creator><![CDATA[伊藤 天輝]]></dc:creator>
				<category><![CDATA[ネットワーク/サーバー]]></category>
		<category><![CDATA[ブロックチェーン]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2439</guid>
		<description><![CDATA[ef-4インターン生の伊藤です。今回はブロックチェーンについて簡単にまとめていこうと思います。（かなり省略しているので詳細は次回）  ブロックチェーンとは 「ブロックチェーン」という言葉を1度は聞いたことがあるでしょうか [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>ef-4インターン生の伊藤です。今回はブロックチェーンについて簡単にまとめていこうと思います。（かなり省略しているので詳細は次回）</p>
<h3 class="miniTitle"> ブロックチェーンとは</h3>
<p>「ブロックチェーン」という言葉を1度は聞いたことがあるでしょうか。この言葉を聞いたことはなくてもおそらく「ビットコイン」という言葉はニュースで聞いたことがあるでしょう。↓のようなロゴを店で見たことがある人もいるはずです。ビットコインはブロックチェーンの技術を用いて実装されています。</p>
<p><img class="alignnone size-medium wp-image-2440" src="/wp/wp-content/uploads/2019/07/1-28-300x83.jpg" alt="" width="300" height="83" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/1-28-300x83.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/1-28.jpg 662w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>ブロックチェーンとは分散型台帳と呼ばれるデータベースのことです。今回はこの仕組みを簡単な例を通して見ていきたいと思います。</p>
<h3 class="miniTitle"> ブロックチェーンの構造</h3>
<p><img class="alignnone wp-image-2441 size-large" src="/wp/wp-content/uploads/2019/07/78692eb8438a92f7e11a516981ad7fad-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/78692eb8438a92f7e11a516981ad7fad-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/78692eb8438a92f7e11a516981ad7fad-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/78692eb8438a92f7e11a516981ad7fad-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/78692eb8438a92f7e11a516981ad7fad.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>名前通りブロックチェーンは取引履歴をいくつかまとめたブロックをチェーンでつないだ構造をしています。</p>
<p><img class="alignnone wp-image-2442 size-large" src="/wp/wp-content/uploads/2019/07/16b644d51d9196c8d6912f1cd86d32f3-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/16b644d51d9196c8d6912f1cd86d32f3-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/16b644d51d9196c8d6912f1cd86d32f3-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/16b644d51d9196c8d6912f1cd86d32f3-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/16b644d51d9196c8d6912f1cd86d32f3.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>分散型なので同じデータを全員が持っています。</p>
<h3 class="miniTitle"> ブロックチェーンの例</h3>
<p>ここでは例としてAさんがFさんに400円送金した場合どのように処理されるのか見てみます。</p>
<p>&nbsp;</p>
<p>①AさんがFさんに400円渡すことを周りに宣言し、Aさんの宣言であることを確認しながら渡していく。</p>
<p><img class="alignnone wp-image-2444 size-large" src="/wp/wp-content/uploads/2019/07/4b05685261ca540ed37c047e7227f61f-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/4b05685261ca540ed37c047e7227f61f-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/4b05685261ca540ed37c047e7227f61f-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/4b05685261ca540ed37c047e7227f61f-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/4b05685261ca540ed37c047e7227f61f.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>②誰か(今回はEさん)が取引を承認して新しいブロックを作成。</p>
<p><img class="alignnone wp-image-2449 size-large" src="/wp/wp-content/uploads/2019/07/212b15f478f046e59f8085d4a3fdc7ab-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/212b15f478f046e59f8085d4a3fdc7ab-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/212b15f478f046e59f8085d4a3fdc7ab-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/212b15f478f046e59f8085d4a3fdc7ab-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/212b15f478f046e59f8085d4a3fdc7ab.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>&nbsp;</p>
<p>③ブロックを全員が受け取り、確認して取引成立。</p>
<p><img class="alignnone wp-image-2448 size-large" src="/wp/wp-content/uploads/2019/07/d68b7de3239779b207b89c82c8bb8524-1024x576.jpg" alt="" width="1024" height="576" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/d68b7de3239779b207b89c82c8bb8524-1024x576.jpg 1024w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/d68b7de3239779b207b89c82c8bb8524-300x169.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/d68b7de3239779b207b89c82c8bb8524-768x432.jpg 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/07/d68b7de3239779b207b89c82c8bb8524.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>&nbsp;</p>
<h3 class="miniTitle"> ブロックチェーンのメリット</h3>
<p>ブロックチェーンにはメリットが多く存在しますがここでは3つのメリットを紹介します。</p>
<ol>
<li>データが失われにくい</li>
</ol>
<p>一般的な集中管理型のサーバーはメインのサーバーに何かトラブルが発生するとデータが失われてしまうのに対し、ブロックチェーンはデータを分散させているので、参加しているすべてのユーザーのデータが消えない限りデータは失われません。</p>
<p>&nbsp;</p>
<p>２．改ざんがされにくい</p>
<p>例ではEさんがさらっとブロックを作っているように書きましたが、実際にブロックを作るには難しい計算が必要で膨大な時間と金が必要になります。詳しくは次回書きますが、過去のデータを改ざんするということはこの計算を何度もすることになりほぼ不可能になっています。</p>
<p>&nbsp;</p>
<p>３．コストが安い</p>
<p>ビットコインのような大きなサービスを管理できるサーバーは作成費も維持費もかなりのものになります。ブロックチェーンはユーザーの機器で成り立っているのでコストが削減されています。</p>
<h3 class="miniTitle"> スマートコントラクト</h3>
<p>スマートコントラクトとは契約を自動で行う仕組みのことです。要するに仲介が必要ないので短時間で手数料も必要ありません。よく例に挙げられるのは自動販売機の例です。商品を選んでボタンを押すだけで契約が成立して商品が出てきます。ブロックチェーン上でスマートコントラクトを行うと改ざんされにくく、透明性もあるのでイーサリアムなどが実装しています。</p>
<p>ただし、あくまでプログラムなので柔軟な対応ができなかったり、一度契約を作ると自動で行うためミスがあったときに直す手間がかかったりするので気を付けなければなりません。</p>
<h3 class="miniTitle"> 余談　コインチェック社の流出事件について</h3>
<p>仮想通貨というと実体がなく信用できない人も多いと思います。その信用できない理由の一つとしてコインチェック社の仮想通貨が流出した事件がある人も多いでしょう。勘違いしてほしくないのはこの事件は仮想通貨のセキュリティのが原因だったわけではないということです。簡単にいうと、この事件はコインチェック社がハッキングを受けユーザーのパスワードのようなものが流出したことが原因です。パスワードが漏れて被害を受けるサービスは仮想通貨だけではなく、決して仮想通貨が特に危険なわけではないのです。</p>
<h3 class="miniTitle"> 最後に</h3>
<p>今回はブロックチェーンの仕組み、メリットについて簡単に説明しました。メリットは多いですが、もちろんリスクもあります。リスクの説明にはブロックチェーンについてもう少し詳しい知識が必要なので今回は省略しました。次回、ブロックチェーンが安全性を保つために具体的にどのような仕組みをとっているのか説明します。</p>
]]></content:encoded>
			</item>
		<item>
		<title>【SEW】第1回要約コンテストを開催しました</title>
		<link>https://blog.ef-4.co.jp/%e3%80%90sew%e3%80%91%e7%ac%ac1%e5%9b%9e%e8%a6%81%e7%b4%84%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%88%e3%82%92%e9%96%8b%e5%82%ac%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/</link>
		<pubDate>Mon, 24 Jun 2019 14:39:28 +0900</pubDate>
		<dc:creator><![CDATA[ねぎ]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[インターン]]></category>
		<category><![CDATA[ニューラルネットワーク]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[機械学習]]></category>
		<category><![CDATA[自然言語処理]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2388</guid>
		<description><![CDATA[&#160; eF-4のインターン生には自然言語処理に関する研究に取り組む人もいます。 そんな彼らが物語を要約するという課題に挑戦しました！ 今年社内で開催した要約コンテストについてレポしたいと思います。 &#160;  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>eF-4のインターン生には自然言語処理に関する研究に取り組む人もいます。</p>
<p>そんな彼らが物語を要約するという課題に挑戦しました！</p>
<p>今年社内で開催した要約コンテストについてレポしたいと思います。</p>
<p>&nbsp;</p>
<p><img class="size-full wp-image-2393" src="/wp/wp-content/uploads/2019/06/190618_1.jpg" alt="第一回要約コンテスト" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_1.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_1-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_1-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p><span style="color: #808080;">コンテストの司会進行は入社2年目の青木さん。技術指導の松田先生より自然言語処理に関する解説もありました。</span></p>
<h3 class="miniTitle">なぜ「要約」?</h3>
<p>自然言語処理技術を利用した文書要約技術の重要性は、キーワード検索を含め、Webオーサリング、経済文書・ビジネス文書・医療文書・法律文書等の要約&#8230;等、あらゆる分野で注目されています。</p>
<p>eF-4は昨年、株式会社モノゴコロとの協業で「世界のすべてを要約する」プロジェクト、&#8221;SEW(Summarizing Everything of the World)&#8221; を発足しました。</p>
<p>要約対象は文字通り「全て」！ 技術指導としてシンボリックシステムズより言語学者の松田先生にもご協力いただいています。</p>
<p>最終的には動画とテキストが中心になると思われますが、当面はテキストの要約をメインテーマとして研究しています。</p>
<p>今回はインターン生の研究成果を発表する場として、コンテスト実施の運びとなりました。</p>
<p>&nbsp;</p>
<p style="background-color: #f6f8f8; margin: 12px; padding: 12px; color: 999;"><span style="color: #808080;">補足：</span><br />
<span style="color: #808080;"> 「要約」というと、一般的には長文を短文にするイメージを持つ方も多いと思います。SEWでは「要約」とは、例えば小説を漫画にするように、或いは映画にタイトル(文、フレーズ等)をつけるように、言語という形式に縛られず、内容をより端的に表すこと全般を指しています。</span></p>
<p>&nbsp;</p>
<h3 class="miniTitle">コンテスト概要</h3>
<p>本コンテストでは、物語を題材にして文書要約技術を競いました。 題材を物語に選んだのは、文書が持つトピック（テーマ）を捉えるのにもっとも向いているため。さらに、トピック抽出は文書要約の肝であるそうです。</p>
<p>今回は、用意された文書が意図する &#8220;テーマ&#8221; を見つけることを課題としました。</p>
<p>各自が用意したアルゴリズム等に文書を読ませ、新しい &#8220;タイトル&#8221; を創作(出力)します。&#8221;タイトル&#8221; はテキストでも絵でも良しとします。</p>
<p>文書は星新一のショートショートより「おーい、でてこーい」を練習題材として使用し、本番題材として「鍵」を要約しました。参加者全員の投票で優勝者を決定します。</p>
<h3 class="miniTitle">いざ、要約！</h3>
<p>今回のコンテスト参加者はインターン生3名。 与えられた文書をどう扱うか、それぞれ目の付け所が異なり結果も全く違うものとなりました。</p>
<p>&nbsp;</p>
<p>■中山さん</p>
<p>２種類のword2vecモデルを用いて文書から重要そうな単語を抽出するアルゴリズムを作成しました。</p>
<p>中山さんの研究は<a href="/%E6%96%87%E6%9B%B8%E8%A6%81%E7%B4%84%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/">ブログ</a>でも公開していますので、ぜひ合わせて御覧ください。</p>
<div id="attachment_2394" style="width: 810px" class="wp-caption alignnone"><img class="size-full wp-image-2394" src="/wp/wp-content/uploads/2019/06/190618_2.jpg" alt="第一回要約コンテストの様子" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_2.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_2-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_2-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text"><span style="color: #808080;">中山さんは都合が合わず欠席のため、代わりに青木さんが解説を行いました。</span></p></div>
<p>&nbsp;</p>
<p>■齋藤さん</p>
<p>文章をginzaで解析した結果をグラフデータベースでまとめ、その構造から各単語の重要性を予測しました。<br />
その後、文章に登場する順番なども考慮して単語を辿り、要約された文章を生成する方法を提案しました。</p>
<div id="attachment_2395" style="width: 810px" class="wp-caption alignnone"><img class="size-full wp-image-2395" src="/wp/wp-content/uploads/2019/06/190618_3.jpg" alt="第一回要約コンテストの様子" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_3.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_3-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_3-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text"><span style="color: #808080;">単語同士のつながりを図で表現した点が初心者にもわかりやすく感じられました。</span></p></div>
<p>&nbsp;</p>
<p>■松倉さん</p>
<p>2種類の文章構造解析ツールを用いて、文章構造と単語のスコアリングを用いた要約を試みました。<br />
複数アプローチから構造解析をすることでより詳細な解析を行い、他との関係の薄い文節、文、また文章内で重要な役割を持たない文を分析することで、一文単位 → 文章全体の順で要約を行いました。</p>
<div id="attachment_2396" style="width: 810px" class="wp-caption alignnone"><img class="size-full wp-image-2396" src="/wp/wp-content/uploads/2019/06/190618_4.jpg" alt="第一回要約コンテストの様子" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_4.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_4-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_4-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text"><span style="color: #808080;">文章構造解析の過程の様子。</span></p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>また、エキシビションとして松田先生の取り組みもご紹介いただきました。</p>
<p><img class="size-full wp-image-2397" src="/wp/wp-content/uploads/2019/06/190618_5.jpg" alt="第一回要約コンテストの様子" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_5.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_5-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_5-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<h3 class="miniTitle">優勝者は・・！?</h3>
<p>優勝は齋藤さん。 単語同士の関係性を追いかける手法と、応用すればトレンド予測に繋がりそうな点が評価されました。</p>
<div id="attachment_2398" style="width: 810px" class="wp-caption alignnone"><img class="size-full wp-image-2398" src="/wp/wp-content/uploads/2019/06/190618_6.jpg" alt="第一回要約コンテストの様子" width="800" height="178" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_6.jpg 800w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_6-300x67.jpg 300w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/190618_6-768x171.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text"><span style="color: #808080;">優勝者には弊社代表取締役から景品が！多忙のため残念ながらコンテストには間に合わず・・青木くんから譲渡。おめでとう！</span></p></div>
<h3 class="miniTitle">今後の展望</h3>
<p>このプロジェクトで最終的に求めたいのはトレンド予測。</p>
<p>もっと手前の文書分類ができればいいと思っていたので予想以上の成果だった、と松田先生。</p>
<p>&nbsp;</p>
<p>今回は物語を題材としましたが、今後はもっと踏み込んだ内容でトレンド予測にも取り組んで行きたいと思います。</p>
<p>&nbsp;</p>
<p>みなさん、お疲れ様でした！</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 8pt;">主催：株式会社eF-4</span></p>
<p class="p1"><span style="font-size: 8pt;">技術指導：松田裕幸（シンボリックシステムズ）</span></p>
]]></content:encoded>
			</item>
		<item>
		<title>量子コンピュータ &#8212;ブロッホ球&#8212;</title>
		<link>https://blog.ef-4.co.jp/%e9%87%8f%e5%ad%90%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf-%e3%83%96%e3%83%ad%e3%83%83%e3%83%9b%e7%90%83/</link>
		<pubDate>Sat, 15 Jun 2019 20:53:49 +0900</pubDate>
		<dc:creator><![CDATA[なかやましょうた]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[量子コンピュータ]]></category>
		<category><![CDATA[量子力学]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2357</guid>
		<description><![CDATA[ qubitのおさらい qubitについての記事では、 &#160; 「qubitとは二準位系の量子状態のことである」 &#160; と説明しました。 &#160; また、ディラック記法を使うと重ね合わせまで含めた二準位 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3 class="miniTitle"> qubitのおさらい</h3>
<p><a href="/%e9%87%8f%e5%ad%90%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf-qubit%e3%81%a8%e3%81%af/" target="_blank" rel="noopener noreferrer">qubitについての記事</a>では、</p>
<p>&nbsp;</p>
<p><strong>「qubitとは二準位系の量子状態のことである」</strong></p>
<p>&nbsp;</p>
<p>と説明しました。</p>
<p>&nbsp;</p>
<p>また、ディラック記法を使うと重ね合わせまで含めた二準位系の任意の量子状態|ψ〉は状態|0〉, |1〉の線形結合として</p>
<p><img class="size-medium wp-image-2347 aligncenter" src="/wp/wp-content/uploads/2019/06/texclip20190608204442-300x75.png" alt="" width="300" height="75" /></p>
<p>と表現されるのでした。</p>
<h3 class="miniTitle"> qubitの可視化 &#8212;ブロッホ球&#8212;</h3>
<p>量子コンピュータでは量子状態|ψ〉に様々な変換を施していきます。</p>
<p>&nbsp;</p>
<p>計算の各ステップで量子状態は常に変わり続けますが、その変化を上で説明したディラック記法を用いた、式での表現で追い続けるのは簡単ではないでしょう。</p>
<p>&nbsp;</p>
<p>また、式を追うだけでは量子計算で頻出するPauli-Z ゲートやHadamard ゲートといった量子ゲートが、量子状態|ψ〉をどのように変換するのかを直観的に理解するのは難しいでしょう。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>そこで、ブロッホ(bloch)球です。</p>
<p><img class=" wp-image-2368 aligncenter" src="/wp/wp-content/uploads/2019/06/1000px-Bloch_sphere.svg_-282x300.png" alt="" width="306" height="326" srcset="https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/1000px-Bloch_sphere.svg_-282x300.png 282w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/1000px-Bloch_sphere.svg_-768x816.png 768w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/1000px-Bloch_sphere.svg_-963x1024.png 963w, https://blog.ef-4.co.jp/wp/wp-content/uploads/2019/06/1000px-Bloch_sphere.svg_.png 1000w" sizes="(max-width: 306px) 100vw, 306px" /></p>
<p>&nbsp;</p>
<p style="text-align: center;"><span style="font-size: 8pt;">Smite-Meister [<a href="https://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a>], <a href="https://commons.wikimedia.org/wiki/File:Bloch_sphere.svg">via Wikimedia Commons</a></span></p>
<p style="text-align: center;">状態|ψ〉が単位球面上の点として表現されている</p>
<p>&nbsp;</p>
<p>ブロッホ球とは、qubitを球面上の１点として表現したものです。</p>
<p>&nbsp;</p>
<p>確率の総和が１であることからブロッホ球は単位球です。</p>
<p>&nbsp;</p>
<p>qubitを球面上の１点として理解することで、視覚的に量子状態を見ることができ、さらには計算をしなくても量子ゲートによるqubitの変換を理解することができます。</p>
<p>&nbsp;</p>
<p>とにかく量子コンピュータを理解するうえで、ブロッホ球の考え方を知っていると<strong>便利</strong>なんです！</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>図を見ていただければわかる通り、z軸の上方向を状態|0〉、下方向を状態|1〉とするのが慣例です。</p>
<p>&nbsp;</p>
<p>したがって、北極点が純粋な|0〉の状態、南極点が純粋な|1〉の状態、それ以外が|0〉, |1〉の重ね合わせの状態に対応します。</p>
<p>&nbsp;</p>
<p>図中のθ, φはそれぞれ緯度、経度を表しています。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>さらにPauli-Z ゲートやHadamard ゲートといった量子ゲートは、ブロッホ球での回転や鏡映反転に対応します。</p>
]]></content:encoded>
			</item>
		<item>
		<title>量子コンピュータ&#8212;qubitとは&#8212;</title>
		<link>https://blog.ef-4.co.jp/%e9%87%8f%e5%ad%90%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf-qubit%e3%81%a8%e3%81%af/</link>
		<pubDate>Sat, 08 Jun 2019 21:58:46 +0900</pubDate>
		<dc:creator><![CDATA[なかやましょうた]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[量子コンピュータ]]></category>
		<category><![CDATA[量子力学]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2308</guid>
		<description><![CDATA[ はじめに 前回のイントロでは詳しくは説明しなかった、量子コンピュータが扱うデータの最小単位であるqubitについて説明していこうと思います。 &#160; イントロでは、古典コンピュータが扱う通常のbitについて、電圧 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3 class="miniTitle"> はじめに</h3>
<p>前回の<a href="/%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF-%E3%82%A4%E3%83%B3%E3%83%88%E3%83%AD/" target="_blank" rel="noopener noreferrer">イントロ</a>では詳しくは説明しなかった、量子コンピュータが扱うデータの最小単位であるqubitについて説明していこうと思います。</p>
<p>&nbsp;</p>
<p><a href="/%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF-%E3%82%A4%E3%83%B3%E3%83%88%E3%83%AD/" target="_blank" rel="noopener noreferrer">イントロ</a>では、古典コンピュータが扱う通常のbitについて、電圧が高い/低い、という物理的実体を与えました。</p>
<p>&nbsp;</p>
<p>しかし、qubitの物理的実体を理解するのは難しいです。そのためここでは紹介するだけにします。</p>
<p>現在qubitの物理的実現方法として、超伝導を使った方法がメジャーです。IBMやGoogleといった大企業がこの方法の量子コンピュータを開発しています。</p>
<p>&nbsp;</p>
<p>ほかにも光を用いた量子コンピュータも研究されており、東京大学の古澤明さんがこの分野で有名です。</p>
<p>&nbsp;</p>
<p>（ちなみに富士通や日立といった日本企業は<a href="/%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF-%E3%82%A4%E3%83%B3%E3%83%88%E3%83%AD/" target="_blank" rel="noopener noreferrer">イントロ</a>で軽く触れた、量子アニーリング方式を開発しています）</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>このようにqubitの実現には様々な方法がありますが、量子アルゴリズムを考えるうえで重要になる、qubitの性質はどれも同じです。</p>
<p>以下では、qubitを数学的・量子力学的な対象として説明します。</p>
<h3 class="miniTitle"> qubitとは</h3>
<p><strong>「qubitとは二準位系の量子状態のことである」</strong></p>
<p>&nbsp;</p>
<p>量子力学を勉強したことがある人にとっては上の説明が最も簡潔で分かりやすいと思います。</p>
<p>&nbsp;</p>
<p>。。。こんなんじゃわかんねーよ！！</p>
<p>って方に向けてqubitを説明するのがこの記事の目的なのでちゃんと説明します。。はい。</p>
<p>&nbsp;</p>
<p>まず二準位系とは、２つの状態しかないということです。つまり</p>
<ul>
<li>電圧が高い/低い</li>
<li>電流が時計回り/反時計回りに流れている</li>
<li>矢印が上/下を向いている</li>
</ul>
<p>といったような状況だけを考える、ということです。</p>
<p>これだけだと、&#8221;0&#8243;と&#8221;1&#8243;という２つの古典的状態を持った古典コンピュータのbitです。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>しかしこの二準位系を量子力学的にとらえると、不思議なことになります。</p>
<p>&nbsp;</p>
<p>量子力学では２つの状態があった時、その２つの状態の重ね合わせの状態もある、という約束があります。</p>
<p>では、重ね合わせの状態とはいったいどんな状態でしょうか。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>よく重ね合わせの状態は「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」と言われます。</p>
<p>ではそういう「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」を実際に観測してみると、本当に状態&#8221;0&#8243;で、かつ状態&#8221;1&#8243;であるような状態が得られるのでしょうか。</p>
<p>もちろんこの答えは<strong>No</strong>です。</p>
<p>まず、そもそも矢印が上/下を向いているような状況だけを考えているので、矢印が上を向いていてさらに下を向いているという状態はありません（というかそもそも上も下も向いた矢印ってなんなんだよ…）</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>実は「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」を観測しても、状態&#8221;0&#8243;<strong>または</strong>状態&#8221;1&#8243;のどちらかしか得られません。</p>
<p>&nbsp;</p>
<p>では、「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」と状態&#8221;0&#8243;や状態&#8221;1&#8243;との違いは何なんでしょうか。</p>
<p>&nbsp;</p>
<p>その違いは、複数回観測してみると分かります。</p>
<p>状態&#8221;0&#8243;は何回測定しても、状態&#8221;0&#8243;である、という当然の結果だけです。状態&#8221;1&#8243;についても同じです。</p>
<p>しかし、「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」は全く違います。</p>
<p>この状態を測定すると、あるときは状態&#8221;0&#8243;であるという結果が得られ、またある時は状態&#8221;1&#8243;という結果が得られます。</p>
<p>しかしどちらの状態が観測されるかはランダムではありません。</p>
<p>ある確率Pで状態&#8221;0&#8243;が観測され、確率1−Pで状態&#8221;1&#8243;が観測されます。</p>
<p>&nbsp;</p>
<p>「状態&#8221;0&#8243;であり、<strong>かつ</strong>状態&#8221;1&#8243;であるような状態」というのはこういう意味です。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>したがって、量子力学では、</p>
<ul>
<li>観測すると絶対に&#8221;0&#8243;/&#8221;1&#8243;が得られる状態</li>
</ul>
<p>だけでなく、</p>
<ul>
<li>観測すると確率的に&#8221;0&#8243;や&#8221;1&#8243;が得られる重ね合わせの状態</li>
</ul>
<p>も存在します。</p>
<p>これらをまとめたものが量子状態です。</p>
<p>&nbsp;</p>
<p>したがってqubitとは、状態&#8221;0&#8243;と状態&#8221;1&#8243;さらにその重ね合わせの状態のどれかをとるbitです。</p>
<h3 class="miniTitle"> ディラックの記法</h3>
<p>上で述べたことを数式で扱うには、ブラベクトル、ケットベクトルを用いたディラック記法がよく使われます。</p>
<p>&nbsp;</p>
<p>２つの状態&#8221;0&#8243;, &#8220;1&#8221;を表すのにベクトルを用います。</p>
<p>ここで状態&#8221;0&#8243;のベクトルを表す記号を|0〉、状態&#8221;1&#8243;のベクトルを表す記号を|1〉として、<img class="size-medium wp-image-2345 aligncenter" src="/wp/wp-content/uploads/2019/06/texclip20190608203547-300x59.png" alt="" width="300" height="59" /></p>
<p>のように、２成分のベクトルを定義します。</p>
<p>この|0〉や|1〉をケットベクトルと言います。</p>
<p>すると重ね合わせの状態|ψ〉は</p>
<p><img class="size-medium wp-image-2347 aligncenter" src="/wp/wp-content/uploads/2019/06/texclip20190608204442-300x75.png" alt="" width="300" height="75" /></p>
<p>で表されます。ここでα,βは複素数です。</p>
<p>さらに、|α|²+|β|²=1とすると|α|²が状態|0〉が得られる確率、|β|²が状態|1〉が得られる確率を表していると解釈できます。</p>
]]></content:encoded>
			</item>
		<item>
		<title>量子コンピュータ &#8212;イントロ&#8212;</title>
		<link>https://blog.ef-4.co.jp/%e9%87%8f%e5%ad%90%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf-%e3%82%a4%e3%83%b3%e3%83%88%e3%83%ad/</link>
		<pubDate>Sat, 08 Jun 2019 17:44:53 +0900</pubDate>
		<dc:creator><![CDATA[なかやましょうた]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[量子コンピュータ]]></category>
		<category><![CDATA[量子力学]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2291</guid>
		<description><![CDATA[ 量子コンピュータとは 量子コンピュータとの対比で、現在私たちが普段使っているコンピュータのことを古典コンピュータと呼びます。 &#160; 量子コンピュータについて理解するために、まずは古典コンピュータについて振り返り [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3 class="miniTitle"> 量子コンピュータとは</h3>
<p>量子コンピュータとの対比で、現在私たちが普段使っているコンピュータのことを古典コンピュータと呼びます。</p>
<p>&nbsp;</p>
<p>量子コンピュータについて理解するために、まずは古典コンピュータについて振り返ります。</p>
<p>古典コンピュータは、データをbitという最小単位で扱います。この1bitは&#8221;0&#8243;または&#8221;1&#8243;の状態をとることができます。この&#8221;0&#8243;または&#8221;1&#8243;という状態は、具体的にはコンピュータ内部で電圧が高いか低いかで表されます。</p>
<p>古典コンピュータはこのbitに様々な処理をすることでいろいろな計算をすることができます。</p>
<p>&nbsp;</p>
<p>一方、量子コンピュータで扱うデータの最小単位はqbit(Quantum bit; 量子ビット)です。qbitとは具体的には一体何なんだ、という疑問は一旦置いておきます。</p>
<p>古典コンピュータではbitが&#8221;0&#8243;または&#8221;1&#8243;の2つの状態をとることができましたが、qbitはさらに&#8221;0&#8243;と&#8221;1&#8243;の間の状態もとることができます。ここでいう「間の状態」とは状態&#8221;0&#8243;が３割、状態&#8221;1&#8243;が７割というように、&#8221;0&#8243;と&#8221;1&#8243;がある割合で混ざっている状態です。この混ざった状態を「重ね合わせ状態」と言います。</p>
<p>量子コンピュータは重ね合わせ状態にあるqbitに処理をすることで、&#8221;0&#8243;と&#8221;1&#8243;の２つの状態に<strong>同時！</strong>に処理をすることができます。これを量子並列性と言い、古典コンピュータにはない量子コンピュータの大きなメリットです。</p>
<h3 class="miniTitle"> 方式について</h3>
<p>量子コンピュータには現在大きく分けて量子ゲート方式と、量子アニーリング方式があります。</p>
<p>&nbsp;</p>
<p>量子ゲート方式は、古典コンピュータの論理ゲートと同じようなものを用いて計算を行う方式です。従来の古典コンピュータと同様に様々な計算を実行することができる汎用コンピュータです。さらにゲート方式の量子コンピュータ上で古典コンピュータと同等な処理を行うこともできます。</p>
<p>&nbsp;</p>
<p>量子アニーリング方式は、汎用型コンピュータではありません。最適化問題を解くことに特化した専用計算機です。しかし最適化問題が解けるというのは大きなことです。配送トラックが配送先をどの順番で回るのが最善かという問題は巡回セールスマン問題といわれ、最適化問題の１つです。巡回セールスマン問題のほかにも最適化問題は、実社会に対して大きな影響力のある問題を数多く含んでいます。</p>
<p>&nbsp;</p>
<p>本当の意味での量子コンピュータは量子ゲート方式です。しかし量子ゲート方式は現状数十qbit 程度の規模のものしか実現できていません。</p>
<p>一方、量子アニーリング方式は2011年にカナダのD-waveが世界で初めて商用の量子アニーリングマシンを販売しました。</p>
<p>&nbsp;</p>
<p>量子ゲート方式の今後の発展に期待ですね！</p>
<h3 class="miniTitle"> 何ができるのか</h3>
<p>量子コンピュータを使えば何でも速くなるわけでは<strong>ありません。</strong></p>
<p>しかし、量子コンピュータを使った方が計算が<strong>圧倒的に</strong>速くなることが示されている例があります。</p>
<p>特に重要なのがshorのアルゴリズムという、素因数分解をするアルゴリズムです。</p>
<p>現在主流となっている暗号方式であるRSA暗号の安全性は、大きな数の素因数分解には膨大な時間がかかる、という点に依っています。したがって、量子コンピュータが完成して素因数分解があっという間にできてしまうと、RSA暗号が成り立たなくなる可能性があります。</p>
<p>&nbsp;</p>
<p>量子コンピュータを使う方が速くなるアルゴリズムはほかにも見つかっていますし、今後さらに見つかるでしょう。そうなれば量子コンピュータの重要性はますます高まります。</p>
]]></content:encoded>
			</item>
		<item>
		<title>文書要約コンテストに参加しました</title>
		<link>https://blog.ef-4.co.jp/%e6%96%87%e6%9b%b8%e8%a6%81%e7%b4%84%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%88%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/</link>
		<pubDate>Tue, 28 May 2019 11:28:20 +0900</pubDate>
		<dc:creator><![CDATA[なかやましょうた]]></dc:creator>
				<category><![CDATA[AI・機械学習]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2270</guid>
		<description><![CDATA[ はじめに eF-4 インターン生のなかやまです。 &#160; 文書要約コンテストで、私は与えられた文書からタイトルを生成するモデルを作りました。  アプローチ 文書中で最重要な単語を推測するためにword2vecを使 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3 class="miniTitle"> はじめに</h3>
<p>eF-4 インターン生のなかやまです。</p>
<p>&nbsp;</p>
<p>文書要約コンテストで、私は与えられた文書からタイトルを生成するモデルを作りました。</p>
<h3 class="miniTitle"> アプローチ</h3>
<p>文書中で最重要な単語を推測するためにword2vecを使いました。</p>
<p>実際に作成したアルゴリズムの概要は以下の通りです。</p>
<p>&nbsp;</p>
<ol>
<li>与えられた文書を形態素解析し、標準形の単語単位に分解</li>
<li>形態素解析された文書を教師データとしてword2vecを学習</li>
<li>学習したword2vec内の文書中で最頻出の単語ベクトルに最も近い単語ベクトルをいくつか抽出</li>
<li>&#8220;wikipediaの記事から学習した&#8221;word2vecに、最頻出語と抽出したいくつかの単語の平均に最も近い単語を抽出</li>
</ol>
<p>&nbsp;</p>
<p>最後に&#8221;wikipediaの記事から学習した&#8221;word2vecから抽出した単語を今回の出力結果としました。</p>
<h3 class="miniTitle"> 解説</h3>
<p>今回は２種類のword2vecモデルを使いました。</p>
<p>１つは与えられた文書にのみ基づいて学習したモデル(text_model)、もう１つはwikipediaを用いて膨大な量の文章から事前に学習したモデル(wiki_model)です。</p>
<p>&nbsp;</p>
<p>text_modelは与えられた文書での独特な単語の使われ方などをよく表現できます。また、文書において、最頻出語、特に名詞の中での最頻出語は、その文書において重要な要素であると思われます。そこで、text_modelにおいて最頻出語の単語ベクトルの周りには最頻出語が文書内でどのような意味で使われ、どのような意味で重要なのかを示す単語ベクトルが分布していると考えられます。</p>
<p>そこで最頻出語の周辺にある単語をいくつか見ることで、文書の主題が分かります。しかし、ただ単語を並べただけではタイトルとすることができません。得られたいくつかの単語から自然な文章を生成するタスクはそれ自体が大変難しいので、今回は得られた単語を１つの単語に集約するという方針にしました。</p>
<p>&nbsp;</p>
<p>具体的には、事前にwikipediaの記事を用いて学習したモデルwiki_modelを使いました。広範な内容の文章から学習することで、一般的な日本語の知識が暗に得られていると考えられます。そこでこのwiki_modelにおいて、上で説明したようにして得られたいくつかの単語を平均化したベクトルの周辺には与えられた文書の主題を表すような&#8221;一般的に使われる&#8221;単語を得ることができます。</p>
<p>&nbsp;</p>
<p>このような考えに基づいて、今回のアルゴリズムを作りました。</p>
<h3 class="miniTitle"> おわりに</h3>
<p>今回は文書をword2vecで単語単位で詰め込むことによって、文書から重要そうなものを抽出しました。しかし、このword2vecの学習が難しいところでした。各文書ごとに最適な学習のハイパーパラメータが違うことがあります。これを系統的に見つけ出す方法がなければ、真に自動な文章要約はできません。同じことですが、今のままでは般化性能に疑問が残ります。</p>
]]></content:encoded>
			</item>
		<item>
		<title>pepperのアプリ開発</title>
		<link>https://blog.ef-4.co.jp/pepper%e3%81%ae%e3%82%a2%e3%83%97%e3%83%aa%e9%96%8b%e7%99%ba/</link>
		<pubDate>Fri, 17 May 2019 15:10:24 +0900</pubDate>
		<dc:creator><![CDATA[伊藤 天輝]]></dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Choregraphe]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[pepper]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[インターン]]></category>
		<category><![CDATA[作ってみた]]></category>

		<guid isPermaLink="false">https://blog.ef-4.co.jp/?p=2226</guid>
		<description><![CDATA[ef-4インターン生の伊藤です。 今回はインターン共同開発プロジェクトとしてpepperのアプリを2つ作ったのでそれについて投稿します。  pepperとは 知らない人はいないと思いますが一応簡単な説明を。pepperは [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>ef-4インターン生の伊藤です。</p>
<p>今回はインターン共同開発プロジェクトとしてpepperのアプリを2つ作ったのでそれについて投稿します。</p>
<h3 class="miniTitle"> pepperとは</h3>
<p>知らない人はいないと思いますが一応簡単な説明を。pepperはsoftbankが作っている人型ロボットでさまざまなセンサーが搭載されており、家庭ではもちろんビジネスでの利用もされています。Choregrapheというアプリを用いるとpepperに自作のコードを入れることができ、センサーを利用して複雑な動作もできるようになっています。</p>
<h3 class="miniTitle"> アプリ①　勤怠管理</h3>
<p>1つ目に作ったアプリは勤怠管理アプリです。人の顔を認識して出勤、退勤を記録して給料を計算するものです。給料の計算が複雑ということで開発しました。pepperはデフォルトで人の顔を覚えて判断する機能が備わっており始めは実装が簡単そうだと思っていましたがいろいろハプニングはありました…。やはりそこまで精度が高くないのか、ある一定の角度でpepperを見ないと認識してくれなかったり、眼鏡によって精度が大きく下がったりしました。結局、精度はあまり高くならずpepperにHTMLファイルを入れて間違えたらそこで正しい名前を送信する手段を取りました。そして、データベースは誰が何時に出勤、退勤したかをpepperから受け取り給料を計算して、リクエストしたらExcelファイルでデータを返します。</p>
<h3 class="miniTitle"> アプリ②　受付管理</h3>
<p>2つ目に作ったアプリは受付アプリです。受付アプリでは、来客時の対応をpepperにて行うため、来客者情報のSlackへの送信を行います。受付対応での来客者、用件の確認の手間を削減できるよう作成しました。用件や情報をタブレットにて選択、入力してもらい、それらの情報をAPIにてSlackへ送信、また同時にpepperへAPIを送信し、受付完了の旨をpepperが話す機能を作成しました。ただ、タブレットの操作性の悪さ、pepperの動作の不安定さなど、ハード面での問題もあり、IoTを扱う難しさを感じる結果となってしまいました。</p>
<h3 class="miniTitle"> 余談</h3>
<p>最終的に完成はしませんでしたが個人的に社内でpepperにものを運ばせたら楽なのでは？と考えてpepper移動アプリを作ろうとしてみましたが断念しました。障害物が多い場所を移動させるのはやはり厳しいのでしょうか。社内のマップを入れることはできてもpepperが自分の位置をセンサーで把握することは難しそうです。〇〇cmのように具体的な長さで管理しようとしてもpepperの移動に誤差があるためいつかは障害物にぶつかってしまうと思われます。高度な位置把握機能か移動精度があれば実装できそうでしたね。</p>
<h3 class="miniTitle"> pepperの今</h3>
<p>アプリが完成してこれから役立つぞ！と思ったのも束の間。なんとpepperの調子が悪くなってしまいました…。最初は「足の調子が悪いです」程度だったのですが今となっては「エラーが13個あります」という状態で結局アプリはインストールできず自分のパソコンに残っている、というのが今回の企画のオチです。pepperは身をもって私たちに「トラブルが起きても冷静でいることの大切さ」を教えてくれたのです。いい経験をさせてくれたpepperに感謝。</p>
<p>いつかpepperが元気になってくれることを心から願っています。</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
