簡潔データ構造ってなに?

こんにちは。レトリバのリサーチャーの木村@big_wingです。レトリバでは学習アルゴリズムの高速化や低リソース化に取り組んでいます。今回から何回かに分けて簡潔データ構造について紹介していく予定です。 初回である今回は簡潔データ構造の概念について紹介します。

簡潔データ構造の書籍としてはNavarro氏の本、日本語で書かれたものとしては定兼氏の本岡野原氏の本があります。

続きを読む

言語処理学会 第26回年次大会(NLP2020)に参加しました

こんにちは。レトリバのChief Research Officerの西鳥羽です。

レトリバでは、研究動向・業界動向の把握のため、研究グループの人間は積極的に国内学会に参加しており、今回は、自然言語処理国内最大級のカンファレンスである言語処理年次大会に参加しました。 レトリバとしてもここ数年スポンサーとして支援させていただいており、今年もゴールドスポンサーとして支援させていただいております。

概要

言語処理年次大会は自然言語処理に関する様々なトピックにおける発表があります。固有表現抽出や係り受け解析などの基礎的な研究から文書分類・機械要約・機械翻訳などの応用に近い研究、或いは企業の製品やサービスの裏で用いている技術の説明のような応用面での発表とデータセットの作成及び公開に関する発表などもあり、日本における自然言語処理分野の発展には無くてはならない存在です。

今年は茨城大学での開催予定でしたが、言語処理年次大会初のオンライン開催となりました。各口頭・ポスター発表に対してZoom のMeeting IDが発行され、ポスターやスライドを画面に映しながら発表者が個別に話す形式でした。急遽オンライン開催に変更し、あれだけの数の発表だったにも関わらず聴講者としてはほとんどトラブルを感じることはありませんでした。これもひとえに関係者の皆様の御尽力の賜物です。 私は現地開催でのフル参加は難しかったのですが、オンライン開催になったことにより、ピンポイントで発表を聞くことができました。この時期は年度末ということもあり多忙な方も多いかと思うので、今後もこのようなオンラインによる配信があると多くの方にとって非常に嬉しいかと思います。オンライン開催の会議の参加は初めてでしたがポスター発表において周りの議論や説明の声が入らないため、とても聞きやすかったです。そして質問する方としても大声を張り上げる必要がないので負担が非常に少なくて良かったです。

以下に面白かった発表のうち3件紹介します。

Poincaré GloVe ベクトルのレトロフィッティング

この発表では単語の上位下位概念を双極空間での埋め込みに反映させていました。どうしても上位下位関係については教師データが不足しがちですが、大規模コーパスから作成する Poincaré Gloveで作成した埋め込みベクトルをベースにWordNetによる階層構造を埋め込んだPoincaré embeddingによって改善したというものです。これら2つの埋め込みベクトルを合わせる方法としてはレトロフィッティングを用いていました。

個人的には自然言語処理タスクをやっていると、単語の上位下位関係を用いたくなるときが多々ありますので興味ありました。

契約書OCRの単語誤り訂正における漢字偏旁冠脚を考慮した木編集距離の検討

文書における単語誤りというと色々ありますが、その中でOCRに特有のものも幾つかあります。一つは部首を取り違えるというものです。例えば「注文書」が「往文書」となるものです。もう一つは漢字が分解されてしまうというものです。例えば「会計」が「会言十」となるものです。どちらも漢字をより細かい単位の偏や旁り(これらを総称して偏旁冠脚といいます)に分解すると同じパーツが出てきていることに着目し、パーツも含めて辞書から探索しています。偏旁冠脚の情報を持つために、漢字及び偏旁冠脚を子ノードで持つ木構造によって単語を表します。単語と単語の類似度を木編集距離で計算して辞書内でもっとも似ているものに訂正するアプローチを取っています。

個人的には偏旁冠脚による木構造で表すことと木編集距離を用いたアイデアが面白かったです。

UD Japanese GSDの再整備と固有表現情報付与

Universal Dependencies(UD)に沿ってアノテーションされたデータである Japanese GSDの再整備を行ったというものです。ライセンスの修正、データの復元作業、文節係り受け情報の付与、分節係り受けからUDへの変換を行ったとのことでした。日本語のアノテーションデータは貴重なので、こういったデータの整備には頭の下がる思いです。近いうちに公開及びspaCyとの連携も含めて出されるとのことで楽しみです。

終わりに

レトリバ研究グループでは自社製品の研究開発を行うだけではなく、学会イベントなどのスポンサー・大学との共同研究の遂行・研究成果の対外発表など、学術コミュニティへの貢献を積極的に行っています。∪・ω・∪

TopicModelの最終形態? Structured Topic Modelのご紹介

こんにちは。レトリバの飯田です。カスタマーサクセス部 研究チームに所属しており、論文調査やそのアルゴリズムを実行するスクリプトの実装などを行なっています。 今回は、Bag of Words(BoW)表現に於いて、これがTopicModelの最終形態ではないか?と私が思っているStructured Topic Modelの紹介と再現実装をpythonで行なったので、その紹介をします。

https://github.com/retrieva/python_stm

続きを読む

レトリバセミナーで関数型(Elixir)でConvolutional Neural Networkを実装した話をしました

レトリバ製品企画部の田村(@masatam81)です。
1/15にレトリバセミナーにて「Functional CNN in Elixir」というタイトルでお話しました。

retrieva.connpass.com

セミナーの内容としては、趣味や20%ルールで書いていたElixirでのDeep LearningフレームワークでConvolution2D/MaxPooling2Dまで使えるようになったので、関数型言語ならではの苦労や工夫・学びの共有といった感じでした。本記事は、そのフォローアップ記事です。当日はDeep LearningやElixirに詳しくない人もいたため、それらの簡単な説明も含めて、なるべく伝わるように話しました。

本記事ではDNNやCNN、Elixirの簡単な説明やConvolution2D、MaxPooling2D以外のレイヤーの話は省きます。その辺りの話は下記のYouTubeや関連書籍を見て下さい。動画ではNIFやMatrexに関しても少しだけ話しています。


Functional CNN in Elixir

スライドはこちらになります。

www.slideshare.net

また、本記事ではConvolution2D, MaxPooling2DのElixirでの実装で工夫した点にフォーカスして書きたいと思います。 セミナーでは最初に defstruct で構造体を作り、 defprotocol を利用して各レイヤーをLayerモジュールの継承関係のように扱う例を説明してから、それを関数型らしく修正した話をしましたが、今回の引用コードは修正後のコードを示します。

実装のベースになっている知識はオライリー・ジャパンの「ゼロから作るDeep Learning」です。元の処理に関する詳細な説明は、そちらをご覧下さい。

www.oreilly.co.jp

  • 畳み込みの準備
    • im2colとは
    • Elixirでの実装
  • forward処理
    • MaxPooling2D
      • Elixirでの実装
    • Convolution2D
      • Elixirでの実装
  • backward処理
    • MaxPooling2D
      • Elixirでの実装
    • Convolution2D
      • Elixirでの実装
  • 速度の問題
  • フレームワークの今後

続きを読む

PrometheusでサーバPCや自前アプリを監視してみた

こんちには。レトリバ製品開発部の高田 (twitter: @t-tkd3a)です。

この記事は 12/18 に行ったセミナーのフォローアップ記事です。

当日は動画の配信も行っていたのですが、音声が配信されたなかったトラブルが後から分かったため、スライドとキャプションの構成で掲載します

2 f:id:tomomi-takada:20191223190318p:plain

  • まず目次です。
  • 自己紹介、プロメテウスについての概要、使用例として、開発PC群の状態監視、自前アプリの監視例を示します。
  • 今日はだいたいこの流れでお話していきます。
続きを読む

TF2.0 tf.keras.Model 用 CRFレイヤーを試してみた

はじめに

こんにちは。 リサーチャーの坂田です。 レトリバでは、 主に文書分類とNERに取り組んでいます。

tensorflow 2.0 では、 1系のときに"tf.contrib"以下にあったcrfが、 "tensorflow_addons"として分離されました。 現在、 tf.kerasのレイヤーとして使えるように開発が進められています。 今回は、 このcrfの最新のプルリクを試してみたという内容です。まだマージされていないものなので、色々と問題がありました。

CoNLL 2003というデータセットを使って、 NERのタスクでCRFを試しました.

続きを読む

スクラムガイドから経験的プロセス制御を学ぶ

こんにちは。レトリバ製品開発部の@gumuncleです。

この記事は 11/20に行ったセミナーのフォローアップ記事です。

動画はこちらです。

スライドはこちらです。

www.dropbox.com

今年10月に認定スクラムマスター研修を受講し認定スクラムマスターになりました。

レーニング中は参加者と議論しながら能動的に参加でき非常に満足のいくものでした。

講師の人は Alan Cyment (@acyment) | Twitter さんでアルゼンチンからこのために飛行機で30時間かけて来日されたようです。

認定スクラムマスターはスクラムの入り口に到達できた!ということなので、これからも到達可能な理想郷であるスクラムを学び実践していきたいです。

今回はスクラムスクラムガイドについて詳しく話さなかったので、次回機会があれば話したいと思います。

音声分析ソフトウェアPraatとアノテーションフォーマットTextGrid形式について

はじめに

こんにちは、レトリバのエンジニアの岩田です。最近はリバウンドに悩みながら音声認識エンジンの製品開発をしています。

今回は、音声分析ソフトウェアのPraatと、Praatで読み込んだり保存できる音声のアノテーションフォーマットTextGrid形式について紹介したいと思います。おまけとして、TextGrid形式のファイルを読み書きするライブラリ textgrid.hpp を簡単に実装したので紹介します。

続きを読む