Sansan Tech Blog

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

Tech%E3%81%AE%E9%81%93%E3%82%82%E4%B8%80%E6%AD%A9%E3%81%8B%E3%82%89 の検索結果:

GPTsによる執筆支援Botとtextlintによる校正Botをつくってみた

本記事は、Sansan Advent Calendar 2023の1日目の記事です。 こんにちは。 技術本部研究開発部の高橋寛治です。 毎年恒例のアドベントカレンダーの時期がやってきました。 今回は、技術ブログの執筆を技術で支援するツールを用意したため、その内容を紹介したいと思います。 なお、本記事はそのツールを用いて書かれたものです。

【Techの道も一歩から】第49回「SlackアプリをPythonで作成する際の備忘録」

こんにちは。 技術本部研究開発部の高橋寛治です。 最近、簡単なデモレベルの Slack アプリを初めて作成しました。 いろいろな設定をしたり、リファレンスを見たりと、やることが多かったです。 次回に作る際に迷わないように、まとめておきたいと思います。

【Techの道も一歩から】第48回「Inf1のSageMaker推論エンドポイントをカスタムコンテナで試す」

こんにちは。 技術本部研究開発部の高橋寛治です。 SageMakerのInf1推論エンドポイントで機械学習モデルを試したので紹介します。 部分的に紹介しているため、SageMakerやHuggingFaceを使ったことがないと、わかりづらいかと思いますがご了承ください。

【Techの道も一歩から】第47回「StreamlitのアプリをNginxで複数ホスティングする」

こんにちは。 技術本部研究開発部の高橋寛治です。 以前に紹介したStreamlitは、非常に便利でよく使っています。 buildersbox.corp-sansan.com Webアプリとしてインターフェイスが提供されるため、ちょっとしたデモを誰かに試してもらうのが容易で重宝しています。 ただ、いつも忘れてしまうのが、Nginxで複数のStreamlitアプリを提供する方法です。 今回は、デモとしてとりあえず動いたらいい状態になるような設定について紹介します。

【Techの道も一歩から】第46回「CookiecutterでPythonプロジェクトを高速に開始する」

こんにちは。 技術本部 研究開発部の高橋寛治です。 Python でプロジェクトを始める際に、ディレクトリ構成を考えたり、パッケージ方法を考えたり、もしくは何か参考になるものを見つけてコピペしたり、と意外と時間をかけていました。 これをコマンド一つで解決する Cookiecutter および社内での活用事例を紹介します。

【Techの道も一歩から】第45回「pyppeteerを使いヘッドレスブラウザでログインして情報を取得する」

こんにちは。 DSOC R&D グループの高橋寛治です。 ログイン後に動的にレンダリングされたページから必要な情報を抽出する、いわゆるスクレイピングを最近行いました。 スクレイピングを行うためにはヘッドレスブラウザ*1の操作が必要です。 pyppeteerを少し踏み込んで使ったため、その備忘録として取り組みを紹介します。 *1:GUIのないブラウザのこと。

【Techの道も一歩から】第44回「Prefectでパイプラインを構築してみる」

こんにちは。 DSOC R&D グループの高橋寛治です。 本記事は Sansan Advent Calendar 2021 - Adventar の初日の記事です*1。 Pythonによるパイプラインツールについて、Prefectというフレームワークが良さそうという話を小耳に挟みました。 第42回の記事と同様にMNISTを題材にパイプラインを作ってみます。 buildersbox.corp-sansan.com *1:他の年のアドベントカレンダーはこちらです。2020, 20…

【Techの道も一歩から】第43回「競技プログラミングやアルゴリズム練習サイト向けのPythonでの練習環境を整える」

こんにちは。 DSOC R&D グループの高橋寛治です。 お昼休みに、社内制度Geek Seek Workshops*1を活用し懇親会代補助を受けて、ご飯を食べアルゴリズム勉強会を行っています。 そこでは、競技プログラミングサイトやプログラミングサイトを利用し問題を解いています。 これらのサイトでは、標準入出力で検証が行われます。 オンラインのエディタも用意されているのですが、手元の環境でコードを書き手軽に検証したいですので、環境を整えます。 *1:社内制度についてはこちらも…

【Techの道も一歩から】第42回「Luigiとgokartを試用して比べて特徴を掴む」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近は、ことあるごとにMLOpsと言っています。 そんなMLOpsの本丸とも言えるパイプラインツールの一つであるgokartを開発された西場さん(@m_nishiba)が部長ということで、使ってみないわけにはいかないgokartを使ってみました*1。 わからないときは、直接聞けます。 *1:強制されている訳ではありません笑

【Techの道も一歩から】第41回「SageMakerでStep Functionsを使った学習パイプラインを構築するために概念を理解する」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近は、MLOpsへの興味が大きく、ツールの実利用や勉強会での発表を行っています。 機械学習プロジェクトにおいて、久々の実行や引き継いだコードの実行の際に、順序や実行環境を思い出したり準備したりしながら確認するのはすごく大変です。 コンテナ化された上でパイプラインがあると、実行順序も実行環境も覚えたり記録したりする必要がなくなります。 コンテナとパイプラインを組み合わせて利用するAmazon SageMakerを利用し…

MLOpsについてSansan×Unipos×M3の合同勉強会で発表しました

こんにちは。 DSOC R&Dグループの高橋寛治です。 2021年7月8日に開催された【Sansan×Unipos×M3】事例から学ぶ!MLOps・データ分析基盤 最前線事例共有勉強会において、ニュース配信におけるMLOpsの取り組みについて発表いたしました。 勉強会の概要と発表内容についてご紹介いたします。

【Techの道も一歩から】第40回「Texthero で日本語を解析する」

こんにちは。 DSOC R&D グループの高橋寛治です。 社内の研究開発部勉強会にて、Texthero が便利だという話を聞きかじりました。 Texthero は、テキストの前処理から変換、可視化までを pandas 上でうまく扱える Python パッケージです。 現状では、英語のみ対応しているパッケージです。 本記事では、日本語を解析できるように追加でコードを書いて使ってみたので紹介します。

【Techの道も一歩から】第39回「Google App Engine で Python による WebAPI を動かす」

ヘッダ画像 こんにちは。 DSOC R&D グループの高橋寛治です。 最近は Google App Engine(App Engine) を用いて WebAPI としてアルゴリズムを提供できるよう開発中です。 App Engine を触ったのは初めてだったため、備忘録として App Engine の概要や環境構築からデプロイまで書きたいと思います。 App Engine の説明や設定の考え方が主となります。

【Techの道も一歩から】第38回「Streamlit で固有表現抽出の結果を表示する」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近、部内で Streamlit による可視化を見かけるようになってきました。 Streamlit は、インタラクティブなデータの可視化に特化した Web アプリケーションを少ないコードで素早く提供することができる Python ライブラリです。 私自身は Web アプリケーションとしてデモ化する際に手慣れた Flask で書くことが多いです。 慣れているとはいえ時間を要するため、同じ結果を爆速で実現できるなら使わない…

【Techの道も一歩から】第37回「データの集計に Luigi を使ってみる」

こんにちは。 DSOC R&D グループの高橋寛治です。 あるプロジェクトにおいて、 「DB からデータを取得し整形した結果を出力する」という一連の処理をパイプラインパッケージである Luigi を用いて行いました。 ワークフローの監視や記述が簡単に記述できて良かった*1と感じたため、ここで流れを紹介したいと思います。 *1:Makefile やシェルスクリプトをよく書いてしまいますが、他者への布教だと Luigi はいいように感じました。

【Techの道も一歩から】第36回「FastAPI を使い始める」

こんにちは。 DSOC R&D グループの高橋寛治です。 私は Python で WebAPI を開発する際には、Flask をよく利用しています。 最近は、FastAPI がいいらしいという話を同僚から聞くようになりました。 少し公式ドキュメントを覗いてみると、Flask をより便利に高機能にしたものに感じました。 これは使わねばと思い、開発環境の構築からテストまでやってみたため、ここで紹介します。 (しっかり理解したい場合は、充実した公式のチュートリアルがおすすめです。ド…

【Techの道も一歩から】第35回「ルールベース手法の運用時のエラーを的確に把握する」

こんにちは。 DSOC R&D グループの高橋寛治です。 アルゴリズムを開発する際に、課題やデータ量に応じた手法の一つとして、ルールベースを採用することがあります。 ルールベースによるアルゴリズムを運用していると、想定外の事象による例外が発生するものです。 これを的確に把握することで、改善へとつなげることができます。 動作するコードのエラーを的確に把握するということは、ソフトウェア開発では当たり前のことだとは思います。 しかしながら、研究開発という観点だと考慮が漏れがちな点で…

【Techの道も一歩から】第34回「固有表現抽出のためのデータを作る」

こんにちは。 DSOC 研究開発部の高橋寛治です。 本記事は Sansan Advent Calendar 2020 - Adventar の初日の記事です。 クリスマスにアノテーションされたデータがプレゼントされると幸せですよね。 プレゼントを渡せるように、タグ設計やアノテーションについて、どのような考えでどうデータを作るのかを具体的に紹介します。 ただし、Advent Calendar 1日目ということでゆる~く紹介したいと思います。

【Techの道も一歩から】第33回「文献紹介:Beyond Accuracy: Behavioral Testing of NLP Models with CheckList」

こんにちは。 DSOC 研究開発部の高橋寛治です。 社内の論文読み会で紹介した評価に関する文献である「Beyond Accuracy: Behavioral Testing of NLP Models with CheckList」について簡単に所感を交えて*1紹介したいと思います。 なお、本文内での図表は基本的に文献から引用したものとなります。 *1:所感は、「所感:」から始まります。

【Techの道も一歩から】第32回「MLOps に入門」

こんにちは。DSOC 研究開発部の 高橋寛治です。 突然ですが、みなさん MLOps を実践されていますか。私は雰囲気しか知りません。 今回はそんな MLOps について学んだ概念と一つのツールである DVC について紹介します。 また、今実際に使っている中で感じている点についても少し紹介できればと思います。

【Techの道も一歩から】第31回「クラウド上に自前のVPNを構築し、ラズパイを VPN ルータ化」

こんにちは。DSOC 研究開発部の 高橋寛治です。 リモートワークが盛んである今、 VPN 接続を利用している人が多いのではないでしょうか。 私もそんな一人ですが、そういえば VPN サーバを立てたことがなかったので、挑戦してみました、というのは表向きの理由で、IPv6 による経路の VPN 接続を行いたいということが真の目的です。 自宅回線は IPv4(PPPoE)・IPv6(IPoE) となっており、IPv4 インターネット利用時は PPPoE の輻輳だと考えられますが、…

【Techの道も一歩から】第29回「PythonでPDFに文字を埋め込む」

こんにちは。DSOC 研究開発部の高橋寛治です。 いつもお世話になっている PDF ファイルを対象に Python3 で操作します。 PDF ファイルを読み込み、文字を書き込んで、「Hello World!」と世界に挨拶をする方法を紹介します。

【Techの道も一歩から】第28回「深層学習による物体検出で遊んでみる」

こんにちは。DSOC 研究開発部の高橋寛治です。 新型コロナウイルス感染症対策では、外出自粛を徹底することが大事とされており、自宅でできる遊びを日々模索中です。 さて、今回は自宅のノートパソコンや物を使って、深層学習による物体検出で遊びます。 物体検出はなんとなく知っていただけなのですが、実際動かしてみると楽しいものです。 今回作るもの リアルタイムでの任意の物体検出を作ります。 今回、検出したいものはゲームのコントローラー類です。 似たようなものばかり買って何になるのかと、…

【Techの道も一歩から】第27回「BERTで作ってみた日本語固有表現抽出器の推論部分を書く」

こんにちは。DSOC 研究開発部の高橋寛治です。 今回は、前回の 「BERTで日本語固有表現抽出器を作ってみた」 に続き、作った固有表現抽出器をWebAPI化します。 モデルを把握する transformers ライブラリの 固有表現抽出のサンプル を流用してモデルを作成しました。 こちらのコードをもとに学習を実行すると、コマンドライン引数で指定したディクレトリにモデルファイルが出力されます。 model_dir ├── config.json ├── eval_result…

【Techの道も一歩から】第26回「BERTで日本語固有表現抽出器を作ってみた」

こんにちは。DSOC 研究開発部の高橋寛治です。 流行りの BERT(Bidirectional Encoder Represenations from Transformers) ですが、論文を読んだあと、マスク部分を当てるというサンプルを動かしその的確さに驚いたところで、手が止まっていました。 今回は、BERTの特徴である優れた言語モデルを利用して、日本語固有表現抽出器を作ってみました。 その手順をいくつかかいつまんで紹介します。 準備から学習 BERT の実装には、 H…

【Techの道も一歩から】第25回「できる限りわかりやすく規則による前処理・後処理を記述する」

こんにちは。 DSOC R&D グループの高橋寛治です。 テキストに対して何かしらのアルゴリズムにより結果を得た際に、どうしても出力したくない項目や、少し前処理を書けば改善される、といったことがあります。 例えば機械学習の出力を調整するには、パラメータの調整や学習データの整備となかなか大変な作業が必要ですが、現場ではできる限り早く結果を提供するために、前処理や後処理を追加して対応することがよくあります。 その際に極端な話ですが、都度都度コードに if 文を追記すると、後から読…

【Techの道も一歩から】第24回「高速かつ省メモリな辞書ライクなライブラリDAWG」

こんにちは。 DSOC R&D グループの高橋寛治です。 Pythonの辞書オブジェクトは取り扱いやすいため、単語とIDの変換テーブルを作ったり、複合語の結合のためにデータ構造を工夫して簡易なトライ木を構築したりと、自分でコーディングすることがあるかと思います。 上記の場合は、ライブラリDAWGを使うことで省メモリかつ高速に、さらにできることが増えるかもしれません。 今回はそんな便利なライブラリの紹介をします。 辞書ライクなライブラリDAWG DAWGはDirected Ac…

【Techの道も一歩から】第23回「pybind11を使ってPythonで利用可能なC++ライブラリを実装する」

こんにちは。 DSOC R&D グループの高橋寛治です。 普段はPython言語によりアルゴリズムの実装を行っています。 スクリプト言語はコンパイルが不要であり、試行錯誤しやすいためです。 しかしながら、実行速度はコンパイル言語に比べて見劣りします。 そこで今回は、高速動作を目的にC++で実装したアルゴリズムをPythonライブラリとして利用する方法について紹介します。 社内で使うアルゴリズムについて計算量が多い処理を実装したところ、Python比で10倍ほど早くなりました。…

© Sansan, Inc.