Sansan Tech Blog

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

Techの道も一歩から の検索結果:

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

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

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

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

Serverlessで始める新規サービスのおはなし

こんにちは。Sansan事業部プロダクト開発部でエンジニアをしている 黒澤です。半年ほど前にSBBに寄稿させていただいたときは、新規事業の立ち上げをしていると書かせていただきましたが、 11月のサービス提供開始と共に、古巣であったSansanプロダクト開発部へと戻ってまいりました。 今回は、この新規事業として作っていた機能で Serverless な機能を作ってみたお話をさせていただこうかと思います。 buildersbox.corp-sansan.com今となってはかなりS…

【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倍ほど早くなりました。…

【Techの道も一歩から】第22回「AWS SageMakerで任意のコンテナをデプロイする」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近は、R&DのD側に興味が寄っており、本連載では pytest や WebAPI化といった話が多くなってきました。 さて、つい先日に Amazon Web Services(AWS) が提供するマネージド型の機械学習サービスの一部機能を使って、機械学習を用いた任意のコンテナを推論エンドポイントとしてデプロイしました。 SageMakerのお作法さえ理解すれば便利なものだと感じたため、SageMakerの概略および任意…

【Techの道も一歩から】第21回「setup.pyを書いてpipでインストール可能にしよう」

こんにちは。 DSOC R&D グループの高橋寛治です。 前回の「CircleCI と pytest に入門」でさらっと触れた内容である、Python パッケージを pip 1 でインストール可能にする方法について、もう少し説明します。 pip でインストール可能な状態にすることにより、一行のコマンドでインストールできたり、名前空間を意識した良いコードになったりと、たくさんの利点があります。 何よりインストールが可能であるため、他の人に使ってもらえます! ただ、初めてパッケー…

【Techの道も一歩から】第20回「CircleCIとpytestに入門」

こんにちは。 DSOC R&D グループの高橋寛治です。 アルゴリズムの考案と実装が主業務ですが、最近は少し幅を広げたテストを始めとしたコードの品質管理・運用など継続的インテグレーション(CI)に興味を持ち、少し取り組んでいます。 新しくアルゴリズムを実装する際に、CIツールのCircleCIとPythonのテストツールpytestを導入してみました。 今回はその導入方法について簡単に紹介を行います。 今回の目標 GitHubにプッシュした際に、次の項目を実現することを目標と…

【Techの道も一歩から】第19回「itertoolsを使おう」

こんにちは。 DSOC R&D グループの高橋寛治です。 桜の花びらが散り春の時候を感じる今日このごろ、スマブラだけでなくコーディングの季節もやってきたなと思っております。 意気込んでコーディングを始めたときに、たとえば2階層のリストを1階層に変形したり、条件に沿うものだけをリストから抽出したりする場合に、自分で実装してしまいがちです。 そのようなリストの各要素に対する処理について、高速かつメモリ効率のよい実装である itertools が Python の標準モジュールとし…

【Techの道も一歩から】第18回「アルゴリズムをコンテナ化しWebAPIとして利用可能に」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近はスマブラSPの研究活動に熱心に取り組んでおり、少しずつ成果が出始めておりホッとしているところです。 さて、研究開発活動では何かしらのモデルやアルゴリズムを開発し、それを共有します。 共有する際に、環境の違いにより動作しなかったり、そもそもの利用方法がわからなかったりします。 こういった問題に対して、Docker コンテナにより WebAPI として提供することで、環境を問わず、かつ利用方法も明確にする方法について…

【Techの道も一歩から】第17回「チームで社内データアクセスライブラリを作った話」

こんにちは。 DSOC R&D グループの高橋寛治です。 光陰矢のごとしとはまさにこのことで、気づけば入社して2年が経とうとしています。 今でこそある程度わかってきましたが、入社当初はどこにどんなデータがあり、どのようにアクセスするのかよくわかっていませんでした。 知らないことを知るということは非常に難しく、「それさぁ。早く言ってよ〜」とどこかで聞いたことのあるようなフレーズをぼやくのは簡単なのです。 しかし、そういった事態を避けるために情報を共有しようとしますが、実際には非…

【Techの道も一歩から】第16回「Rに入門してテキストマイニング」

こんにちは。 DSOC R&D グループの高橋寛治です。 私が所属する R&D グループでは、プログラミングの使用言語は特に定まっていないので、私は使い慣れている Python を利用しています。 つい最近のことですが、別の研究員が R を用いてワードクラウドを作っているのを横目で見ていました。 コードを見させていただいたところ少量でわかりやすく、非常に便利そうだと感じました。 新年新しいことを始めてみようという気持ちも相まって、今回はRに入門してみます。 こちらの「Rによる…

【Techの道も一歩から】第15回「Pythonによる正規表現のまとめ」

こんにちは。 DSOC R&D グループの高橋寛治です。 今回は、何かと忘れて検索しがちな正規表現についてまとめたいと思います。 正規表現の文法やPythonコードによる具体例で書くことで、備忘録としたいと思います。

【Techの道も一歩から】第14回「出現頻度と連接頻度に基づく専門用語抽出器を実装してみる」

こんにちは。 DSOC R&D グループの高橋寛治です。 最近、アルゴリズムを実装して勉強することにハマっています。 ある程度理解しないと実装できないですし、そもそも実装したものが動くということは非常に嬉しいものです。 さて、今回は最近実装した「出現頻度と連接頻度に基づく専門用語抽出器」について理論と実装の紹介を行います。 早く実装が見たいというかたは、こちらからすぐにご覧いただけます。 「出現頻度と連接頻度に基づく専門用語抽出」の理論 次の論文の内容を実装します。

【Techの道も一歩から】第13回「文書や単語をどうやって表現するかコサイン類似度で学ぶ」

こんにちは。 DSOC R&D グループの高橋寛治です。 前回のTF-IDFで、使ってはいたけれど触れなかった文書や単語の表現方法について述べます。 実際に文書をベクトルとして表現し、コサイン類似度を計算することで理解を深めます。 scikit-learnを使わずにできる限りnumpyを利用してコードを記述してみます。 ノートブックはこちらにあります。 ベクトルで取り扱うと計算しやすい 自然言語を取り扱う研究では、文書や単語といったように自然言語を何らかの単位で取り扱います。…

【Techの道も一歩から】第12回「基礎的な考え方であるTF-IDFを学ぶ」

Techの道も一歩から こんにちは。 DSOC R&D グループの高橋寛治です。 前回のブログの終わりに書きましたが、今回からは言語処理のアルゴリズムの紹介を行います。 ただ単にアルゴリズムを紹介するだけではなく、実際に実装し動作させた結果も掲載することで直感的な感覚も掴めるものにしたいと思います。 まずは、単純かつよく利用されるTF-IDFから始めていきます。 TF-IDFの基本的な考え方 TF(Term Frequency)-IDF(Inverse Document Fr…

© Sansan, Inc.