CreateField Blog

オープンソースを使って個人でWebサービスを開発・運営していたブログ

ChatGPT, Claude3, Gemini別に審査官による特許引用文献段落抽出の再現率を検証してみた

はじめに 近年、ChatGPT、Claude、Geminiなどの大規模言語モデルの性能が向上しています。 今回、過去の特許審査で引用された特許文献の記載箇所・段落を、これらのモデルがどの程度正確に抽出できるかを検証しました。 テスト対象 以下の引用文献の条件を満…

約2.5億画像の類似特許・意匠図面検索を開発しました

特許検索・分析サービス Patentfieldでは、これまで文書で特許を類似検索できる機能を提供してきましたが、今回、新たに日本、アメリカ、ヨーロッパ、台湾の特許・意匠の全図面、約2.5億枚の画像に対しても類似検索が可能になりました。 この機能により、例…

創業して5年が経ちます。そして入籍しました。

私が特許事務所で働いていたときに業務時間外に個人的に開発していた特許検索データベースを元に2017年4月に正式サービスhttps://patentfield.comをローンチし、2017年4月20日に京都でPatentfield株式会社を立ち上げてから5年が経ちます。 2017年4月に立ち上…

Gitブランチの総滞在時間を使ってタスク毎の総作業時間を計算する

はじめに 開発現場ではRedmineやBacklogなどチケット管理システムを使ってタスク管理することがよくあると思います。 ただ、一挙手一投足で作業時間をタイマーで図るといったことは手間ですし、そういったルールには不満もでるかと思います。 そこで、タスク…

特許データで学習させたSpherical Text Embeddingの結果を眺める

はじめに これは、情報検索・検索エンジン Advent Calendar 2019 の 22日目の記事です。 かなり遅れてしまいましたが、Advent Calendar 2019の記事を書きます。 意味的に類似するドキュメントを検索するために活用される技術の1つとして、Word Embeddingが…

HerokuでWordPressを動かす方法

はじめに WordPressはずいぶん前から流行っているPHP製のCMSで、ちょっとしたコーポレートサイトやブログサイトを非技術者でもある程度管理しやすいように作るにはいまだに便利です。 ただ、Ruby on RailsなどモダンなWeb開発手法に慣れていると、FTPでデプ…

JSでWebに注釈をつけるAnnotatorで専用のサーバープログラムを使わなくてもannotationを保存、復元する方法

Webページにコメントなどの注釈をつけることができるJavascriptのライブラリannotatorがあります。 こちらの注釈の保存は、基本的には以下のPython製のバックエンドを利用することが想定されています。 https://github.com/openannotation/annotator-store …

Mroonga 7.06からMySQLのgenerated column/MariaDBのvirtual columnが利用可能に

全文検索エンジンGroongaのMySQLストレージエンジンであるMroongaのソースをいじる機会があったので、ついでにMySQLのgenerated columnとMariaDBのvirtual column(computed column)の対応をしました。 次回リリースのMroonga 7.06からはgenerated columnを作…

特許の検索・分析サービスPatentfieldをリニューアルしました

はじめに 私は、2015年1月よりIP Nexusというスタートアップに所属しています。 仕事でPG書いたことがない人間が知財のWeb系のスタートアップに転職した話 - CreateField Blog IP Nexusのメンバーは、投資銀行での経歴をもつ米国とドイツの知財訴訟弁護士や…

Groonga 6.0.2から多段ドリルダウンが利用可能に

GroongaはC/C++で書かれた国産の全文検索エンジンライブラリです。 サーバとしても組み込みのライブラリとしても利用することが可能です。 Groongaでは従来よりドリルダウン機能(ファセット)が提供されていましたが、 ドリルダウン機能の結果をつかってさら…

Groongaのパトリシアトライを使って高速なあいまい検索を実装した

はじめに あいまい検索はたとえば、編集距離を求めることによって実現することができます。 レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へ…

MySQLでgenerated columnを使って圧縮したデータを自動的に解凍する

MySQL5.7でできたgenerated columnってどんなのかな〜って調べていると、参照時に所定の計算結果を反映してから取得する仮想カラムVIRTUALと、更新時に所定の計算結果後の値を格納してくれるSTORED(Mariaの場合PERSISTENT)があることがわかりました。 MySQL…

MySQLで編集距離を求めるUDF

先日、Groongaでビットパラレルで高速な編集距離の実装を検証してました。 ビットパラレルを使ってGroongaで高速な編集距離関数の検証 - CreateField Blog 編集距離とは挿入、置換、削除、並び替えの編集操作によって一方の文字列をもう一方の文字列に変形す…

ビットパラレルを使ってGroongaで高速な編集距離関数の検証

Groongaではサジェスト機能のためにedit_distance関数が実装されています。 これはO(nm)の計算量が必要な動的計画法で文字数が多くなると結構遅くなります。 そこで、高速化するためにビットパラレル法をGroongaの関数で実装してみて比較してみました。 naoa…

Groongaでb Bit MinHashを使って高速に類似検索

Groonga Advent Calendar 2015の23日目の記事です。 はじめに GroongaでJaccard係数を計算するプラグインを作る - CreateField Blog こちらの記事では、GroongaでJaccard係数を計算できるプラグインを作りました。しかしながら、毎回すべてのレコードについ…

GroongaでJaccard係数を計算するプラグインを作る

Groonga Advent Calendar 2015の22日目の記事です。 はじめに Groongaでのタグ検索と表記揺れとの戦い at Groonga Meatup 2015 - CreateField Blog こちらの発表では、編集距離ベースで誤字脱字ぽい類似タグを抽出して表記揺れを抽出する話をしました。 しか…

JavaScriptでクライアントサイドだけで日本語PDF出力する

クライアントサイドでPDF出力できればサーバ負荷軽減できていいなぁとか考えることがあると思います。 そんなときは、 bpampuch/pdfmake · GitHub に日本語フォントを導入することにより 日本語でクライアントサイドだけでPDF出力することができます。 NotoS…

Groongaからword2vecを使って類似文書を取得してみる

Groonga Advent Calendar 2015の13日目の記事です。 全文検索エンジンGroongaからword2vecを簡単に使えるプラグイン - CreateField Blog こちらで作ったプラグインのsentence_vectorsオプションを試してみました。 naoa/groonga-word2vec · GitHub 学習ファ…

全文検索エンジンGroongaからword2vecを簡単に使えるプラグイン

はじめに Groonga Advent Calendar 2015の11日目の記事です。 GroongaはC/C++で書かれた高速な国産の全文検索エンジンです。 word2vecは、Googleが研究評価用に作った単語の特徴をベクトルで表現しニューラルネットモデルで教師なし学習をさせるツールです。…

Groongaでのタグ検索と表記揺れとの戦い at Groonga Meatup 2015

Groonga Meatup 2015 - Groonga | Doorkeeper で発表してきました。 Groongaでのタグ検索と表記揺れとの戦い from naoa_y www.slideshare.net 英語のタグ検索での表記揺れをTrieで前方一致検索絞込、編集距離(Damerau–Levenshtein distance)、キーボード距離…

MySQLでカラムごとに圧縮する方法

MySQLでデータサイズが非常に大きいような場合、データを圧縮して格納したくなることがあります。 InnoDBではROW_FORMAT=compressedとすることで、テーブルを圧縮することができます。 MyISAMではmyisampackコマンドを利用することにより、テーブル全体を圧…

Deploy to HerokuボタンでGitベースのWiki gollumを無料で簡単に作れるようにした

GitHubのWikiが検索できなくて不便だなぁとか思ったりしてたら、このWikiはGitベースでできており、gollumというオープンソースで公開されていることを知りました。 github.com そこで、ちょろっと試すためにHerokuで動くようにしてみました。 GitHubのトー…

Railsで高速全文検索エンジンMroongaを使うためのチュートリアル

はじめに MySQLでオープンソースの日本語対応の高速な全文検索エンジンGroongaが使えるMroongaを使って簡単に全文検索機能付きのRailsアプリケーションを作成する方法を紹介します。Railsのデモアプリケーションと実際に使えるサンプルの検索用のメソッドを…

PostgreSQLの日本語対応全文検索モジュールpg_bigmとPGroongaを検証してみた

はじめに 最近、Web系のエンジニアに転職して、Railsをよく触っています。 Rails界隈では、HerokuかActiveRecordの関係かよくわかりませんがPostgreSQLが利用されていることが多いような気がします。 これまで個人的に全文検索のWebサービスを開発するために…

仕事でPG書いたことがない人間が知財のWeb系のスタートアップに転職した話

2014/12に関西の個人特許事務所を退職し、2015/1からグローバルな知的財産のマーケット、マッチングWebプラットフォームIPNexusを立ち上げているスタートアップのバッグエンドエンジニアに転職しました。 これで2回目の転職で、それぞれ、まったくキャリアの…

MroongaでGroongaの機能を使いこなす高度なテーブル設計をする方法

はじめに MySQL/MariaDBで高速に全文検索するためのオープンソースのストレージエンジンMroongaは、以下のように、Engine=Mroonga、FULLTEXT INDEX (${source_column})と書くだけで非常に簡単に全文検索を使い始めることができます。 CREATE TABLE memos ( i…

GroongaとTokyoCabinetのHash表のベンチマークについて

はじめに 全文検索エンジンGroongaは超高速な全文検索ライブラリとしての機能を有しますが、単純なハッシュ表等のAPIも提供されており、ファイルへの永続化前提のインプロセス型のKVS(key value store)としても利用することができます。 ファイルへの永続化…

GroongaとElasticsearchの転置索引の違いと更新反映速度について

はじめに こちらの記事では、GroongaとElasticsearchの単純な検索性能、更新性能、 ディスク使用効率を比較しました。 その結果では、Groongaの検索速度がElasticsearchよりも数倍ほど速く、Elasticsearchの更新速度がGroongaよりも数倍ほど速かったです。 …

word2vecをDockerでプレーンテキストから簡単に使えるようにしました

はじめに Dockerで簡単に使えるようにしてみた第2弾です。前回は、専門用語を自動抽出してくれるTermExtractをプレーンテキストで簡単に使えるようにしたDockerファイルについて紹介しました。 最近はword2vecが非常に話題になっていますが、word2vecは環境…

専門用語を自動抽出するTermExtractをDockerで簡単に使えるようにしました

はじめに 品詞のつながりや出現頻度、学習情報から複合語らしきキーワードを自動で抽出するPerlモジュールTermExtractが公開されています。 これを利用すれば、形態素解析済みのテキストを食わせるだけでそこそこそれらしい専門用語をたくさん得ることができ…