Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

言語処理学会第25回年次大会に参加し発表しました

こんにちは。 DSOC R&D グループの高橋寛治です。

2019年3月12日から15日にわたり開催された言語処理学会第25回年次大会に参加し、ポスター発表を行いました。

本記事は、参加報告および発表内容の紹介となります。

言語処理学会第25回年次大会

言語処理学会が開催している年次大会で、国内の言語処理の研究者が一堂に会する年に一度のイベントだと言っても過言ではありません。 毎年3月の2〜3週目におおよそ1週間にわたって発表や講演があり、また懇親会や若手の会など、勉強だけでなく研究者間の交流も深められる非常に有意義な会です。

私は学生の頃から参加させていただいており、今回は6回目の参加となります。 昨年度の奥田による参加報告はこちらをご覧下さい。

今年度も昨年に引き続きプラチナスポンサーとして、ブース出展やスポンサーイブニングなどでお話しする機会をいただきました。

f:id:kanjirz50:20190322135221j:plain

NLPは交流が盛んな学会で、今年ひときわ印象に残ったのは研究者間でのNLP Splatoonでした。 学会発表はもちろんのことですが、来年もNLP Splatoonには参加したいと思います。 (Splatoonについても皆さん研究熱心でした 笑)

f:id:kanjirz50:20190322140804p:plain

発表内容

「部署役職テキストの自動分割」というタイトルで発表いたしました。

研究の概要は、部署と役職に関しては構造化されておらず連続した文字列(以降、部署役職テキストと呼ぶ)となっているため、これを分割するというものです。 特別新しい手法の提案ではなく、部署役職テキストに対して分割を行った結果の報告です。

f:id:kanjirz50:20190322135635j:plain

よくある手法である系列ラベリングを用いて、部署役職テキスト中のトークンが部署か役職かをタグ付けします。 実際にはIOB2タグ(Inside-outside-beginning)と呼ばれるタグの推定を行います。 例えば、 B-部署 といったようなタグです。

結果、部署と役職が正確に分割されるのは 78% でした。

たくさんの人にお越しいただき、ポスター内容について議論することができ非常に良い機会でした。 特別な手法を使っているわけではないため、同様の手法で別タスクを解いたときの知見を聞けたり、CRFを使うのではなくルールベースでどこまでできるかなど、今後を考える上での様々な課題が浮かび上がりました。 現在の取り組みを共有することで様々な意見をいただけるのは、本当に嬉しく、学会に参加できてよかったと感じます。

f:id:kanjirz50:20190322135401j:plain

学会で発表するときっといい

学会でたびたびお会いすることのあるGunosyの関さんに「学会で企業研究をアピールしていこう!」と言われたことを非常によく覚えています。 今回の発表では、企業側が持つ課題を学術側にアピールできたのではないかと思います。

今後もこのような活動を続けて、産業界の課題とその向き合い方について発表していきたいと思います。

執筆者プロフィール

高橋寛治 Sansan株式会社 DSOC (Data Strategy & Operation Center) R&Dグループ研究員

阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。現在はキーワード抽出など自然言語処理を生かした研究に取り組んでいる。

Webアプリケーションにおける正しいキャッシュ戦略

こんにちは。プロダクト開発部のサーバサイドエンジニアの荒川です。普段はSansanのスマホアプリのAPIの開発をしています。

今回扱うテーマは皆さん大好きキャッシュ(Cache) です。

Webアプリケーションを開発するエンジニアである以上、キャッシュの存在からは逃れられないでしょう。 例えばパフォーマンスを向上させる手段として、キャッシュを仕込むことは往々にしてあるかと思います。

キャッシュを使えばパフォーマンスが向上しそう、というイメージも強いため安易に選択する戦略になりがちですが、正しく扱うことは本質的に難しいです。 しかしキャッシュを上手に使えば、ユーザ体験を圧倒的に向上させることができます。

そんな諸刃の剣キャッシュ💰について考慮するべきこと、その戦略を改めてまとめてみました。

今回の対象

今回の対象は、アプリケーションレベルでのキャッシュ戦略を取り扱います。 いわゆるキャッシュメモリ、ブラウザのキャッシュ、HTTPにおけるキャッシュ、CDNにおけるキャッシュなどとは文脈上異なるので注意してください。

さて整理すべきは、クライアント(Client)、サーバ(Server)、キャッシュ(Cache)、データベース(Database)の4つです。 本エントリでは以下のアーキテクチャをベースとしていきます。

f:id:ad-sho-loko:20190322023513p:plain
アーキテクチャ図

システム構成はシンプルなクライアントサーバのWebシステムです。 説明の都合上、各種サーバの分散化や冗長化などは割愛しています。

その他の用語を軽く説明します。

クライアント(Client)は、Webアプリケーションにおいてはブラウザに該当します。

サーバ(Server)は、アプリケーションサーバです。キャッシュサーバやデータベースと通信をするためにアプリケーションコードが動いています。

キャッシュ(Cache)は、キャッシュサーバです。当たり前ですが、I/Oについてはデータベースよりも高速でなければいけません。

データベース(Database)は、基本的にRDBMSと理解してもらって問題ありません。またS3などのストレージを追加で置いてもらってもOKです。

続きを読む

【Intern CV Report】超解像の歴史探訪 -2016年編-

f:id:s_yuka:20190318153645p:plain

こんにちは,DSOC R&Dグループ インターン生の内田です. 前回の記事が割合好評とのことで,この度めでたく連載を持つことになりました. 記事を読んでいただいた方や記事のレビューをしていただいた方に感謝申し上げます. これからも読んでいただける記事を書けるように頑張っていきます!

buildersbox.corp-sansan.com

さて,前回はPyTorchを用いてSRCNN[*1][*2]を実装してみました. SRCNNの発表は2014年であり,かなり古めのネットワークと言えます. 今回は,2016年に発表されたモデルを対象に,SRCNNをどのようなアプローチで改善していったかについてまとめたいと思います.

【再訪】SRCNN

SRCNNは3層の畳み込みニューラルネットワーク(CNN)であり,少ない計算量で超解像を行うことができます. 辞書ベースの手法が主流であった中で,CNNを導入したSRCNNは大きなインパクトを与えました. とはいえ,実はSRCNNもスパースコーディングから着想を得た手法であり,3層の畳み込みはそれぞれ ①パッチ抽出と低解像度空間におけるスパース表現,②獲得した表現の高解像度空間に対する非線形写像, ③高解像度画像の再構成 と見なせると論文中で述べられています.

f:id:S_aiueo321:20190312155556p:plain
CNNとスパースコーディングの関係性([1]より引用)

従来手法を踏襲しつつ新しいアプローチを提案する素晴らしい研究ですが,ネットワークサイズや学習時間からは,安定した学習に対する知見が少なかったという背景も見て取れます. SRCNN発表後,深層学習を応用した研究は加速度的に広まっていき,多層化や学習の高速化などの知見も多く溜まっていきました. 2016年頃には,それらの知見が超解像の分野に還元され始め,研究をまた次のステージへと推し進めていくこととなりました.

*1:Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. "Learning a Deep Convolutional Network for Image Super-Resolution", Proc. of European Conference on Computer Vision (ECCV), 2014

*2:Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. Image Super-Resolution Using Deep Convolutional Networks, IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2015

続きを読む

文章埋め込みを用いた教師なしキーフレーズ抽出EmbedRankの実装とその評価

こんにちは、DSOC R&Dグループ研究員の奥田です。言語処理学会年次大会(NLP2019)の開催されている名古屋のホテルで今まさにこの記事を書いています。ひつまぶし美味しかったです。

さて、今回はCONLL 2018で発表されたSimple Unsupervised Keyphrase Extraction using Sentence Embeddingsを実装して日本語を対象に評価しましたので、その紹介です。こちらは1/31に開催された「第一回SIL勉強会 自然言語処理編」での発表を加筆修正したものですので、そちらの資料も合わせてご覧いただければと思います。

EmbedRankとは

本論文で提案されているEmbedRankとは、教師データを用意することなく、文章に含まれる重要なキーフレーズを抽出するアルゴリズムです。あるフレーズが重要かどうかは、それが含まれる文章全体の意味をよく表しているかどうかで評価できるのではないかというのが、この論文の発想です。そして意味をよく表すフレーズを抽出する際に、文章埋め込み(Sentence Embedding)を利用する点がEmbedRankの大きな特徴です。

アルゴリズムとしては、以下の3ステップから構成されます。

  1. 品詞の情報を元に、文章中から候補となるフレーズを抽出する
  2. 文章埋め込みを用いて、文章および各フレーズのベクトルを得る
  3. 文章の埋め込みベクトルに対する類似度を用いて、候補となるフレーズをランク付けし、キーフレーズを決定する

f:id:yag_ays:20190313095921p:plain
文章は「潜伏キリシタン関連遺産、世界遺産登録 - ウィキニュース」より

まず第1ステップとして、文章中から候補を抽出します。ここでは「形容詞+名詞」といった品詞に基づく特定のパターンをルールで記載し、それに合致するフレーズを候補として採用します。 次の第2ステップでは、それらの候補となるフレーズと文章自体を対象に、文章埋め込みを計算して埋め込みベクトルを計算します。文章埋め込みは論文ではsent2vecやdoc2vecが用いられていますが、原理的には入力となる文章から何らかの固定次元でのベクトルが出力されれば良いため、infersentやその他類似手法でも問題ありません。 そして最後の第3ステップで、文章自体のベクトルに近い候補フレーズの埋め込みベクトルを、類似度を元にして抽出し、キーフレーズを決定します。すなわち、文章と各候補フレーズを全てペアにして類似度を測り、その近さをもとに文章の意味をよく表しているフレーズをランク付けするわけです。そうすることで、フレーズの重要度というものを表現することができます。あとは、その上位n件を取得すれば、それが文章に対するキーフレーズとなります。

ただし、単に抽出するだけでは似たような表現が重複して取得されることがあるため、多様性を持たせたフレーズ抽出のためにMaximal Marginal Relevance(MMR)という手法を用いています。*1

f:id:yag_ays:20190312225824p:plain
https://speakerdeck.com/sansanbuildersbox/case-study-in-word-embedding

これにより、文章自体と似ているフレーズを抽出しつつも、フレーズ間の類似度はなるべく下げるようなランキングが可能になります。数式としてはargmaxが出てきたりして少しややこしいのですが、実際は候補の中で一番もっともらしいものを選択していけば良いので、複雑な最適化などを必要としません。

*1:論文中では、MMRを用いない手法をEmbedRank、用いる手法をEmbedRank++と区別しておりますが、両者にそれほど手法的な差異がないため、本記事ではEmbedRankとして統一して記載しています

続きを読む

DEIM 2019に参加して来ました!

f:id:ssatsuki040508:20190311184543j:plain
DEIM 2019 が催されたホテルオークラJRハウステンボス。
Sansan DSOC 研究員の吉村です。最近は社内のカフェで提供してくださっている「オリジナルジンジャーシロップ」のソーダ割りにハマっています。風邪予防になることを期待しつつ、頻繁に飲んでいます。

さて、今回、長崎はハウステンボスで開催された DEIM というワークショップに、Sansan DSOC 研究員の奥田高橋、吉村の3人で参加してきましたので、その報告をします。

DEIM とは

f:id:ssatsuki040508:20190311185739j:plain
会場から一歩外に出た時に見えた景色。ランチはこの景色を見ながら食べました。
DEIM とは「データ工学と情報マネジメントに関するフォーラム」のことで、その名の通りデータ工学と情報マネジメントに関する様々な研究トピックについて議論を行うためのワークショップです。何と言っても DEIM は、開催が合宿形式で行われるのが恒例となっており、今回も例に漏れず合宿形式での開催となりました。合宿形式の強みを生かした実際のスケジュールを見てみると、二日目は朝8:00から夜の2:00までセッションがあり、終日研究に関する議論ができる環境となっていました。

今回はおおよそ9部屋で別々の発表が同時に行われていたため、今回 DEIM 用に作られたSlackのワークスペース上で各部屋の研究発表の実況が行われていました。

続きを読む

Podcast #2 Legacy Meetup Kyoto

人事部 高橋 です。Podcast #2 を収録しました。

今回は、この Sansan Builders Box でもレポートした Legacy Meetup Kyoto について話しました。登壇者でもある加畑を交えて、当日のリアルな雰囲気をお届けします。

buildersbox.corp-sansan.com

前回よりもトーク力が向上しているんじゃないでしょうか...!?

soundcloud.com

Member

  • 高橋 : エンジニアから人事に転身した人。 Azure が好き。
  • 木田 : モダンな技術で新サービス開発に取り組むエンジニア。 GCP が好き。
  • 加畑 : レガシー改善に強いサーバーサイドエンジニア。 RDBMS が好き。

Show Note

  • Legacy Meetup Kyoto いってきた
    • 当日の雰囲気
    • 加畑の発表内容
    • ヤフーさん、はてなさんの発表内容
    • レガシー改善にどう取り組むか
      • 目的をどう設定するか
      • ドキュメント残す文化
  • 木田、高橋のレガシーの思い出
    • 前職 SIer でのリプレース案件
  • 京都の話

次回はそろそろゲストをお呼びしたいな~と思ってます。

質問、感想、苦情など、こちらでお待ちしてます!

marshmallow-qa.com

Google Cloud INSIDE Digital に登壇 & 継続的デリバリーツール Spinnaker について

DSOC Infrastructure Group の 大澤 です。今月から Infrastructure Group というグループができたのですが、新名刺が間に合ってないので Eight 上は旧部署のままです・・・!

先日3月7日に Google Cloud 主催の INSIDE Digital というイベントに登壇させていただく機会がありました。

cloudplatformonline.com

テーマが「ここでしか聞けない GCP 商用活用の第一歩」ということで、プロジェクト進行中の Windows サーバの VM 移行と、Spinnaker を活用した継続的デリバリー (Continuous Delivery; CD) について話をさせていただきました。

f:id:ohsawa0515:20190311193904j:plain

上の写真は会場の様子です。参加者が 200 〜 300 名の大規模イベントなのですが、満員ですね。登壇机がなく、カンファレンスのキーノートみたいなフリーハンドスタイルだったので発表中はかなり挙動不審だったと思います・・・

私のセッションの後は、アイリッジ様の大量の位置情報の収集・分析・可視化の事例や、LIFULL 様の Auto ML を活用した物件画像の自動タグ付けの発表がありました。私の発表した事例よりも他社様の事例紹介の方が GCP を十分に活用されて素晴らしい内容だったのでトップバッターで早々に終わらせられてほっとしています。

発表した内容の中で、懇親会や Twitter で反響が大きかったのが Spinnaker でした。発表時間内に説明しきれなかった部分も含めて本記事で Spinnaker を導入した理由や、どのように活用して CD を改善したのかについて紹介していきます。

続きを読む

© Sansan, Inc.