言語処理学会第29回年次大会 併設ワークショップ JLR2023 (
      
  
  
  
  
  
  
  Raggleの第2回コンペでアイデア賞をいただいたのでメモ。ありがとうございます〜 ソースコード 下記を参考に、Transformerモデル組み込みたいんやけど...と生成AIに相談してコード作りました。要件定義と手元デバッグ野郎でした。 解法のコア このツイートにほぼすべてが詰まっています。Twitter最高! TransformerではないEmbeddingモデルである、static-embedding-japaneseをベクトル検索に用いました。 著者のセコンさんもTwitterに書いてくださっていますが、CPUでも爆速でEmbeddingできます。 今回のコンペで使った文書のEmbeddingに使う時間を比較してみたところ、以下の通りでした。 モデル 時間 上記は 396chunks(1chunk, 1000文字ごとチャンク) での計測時間です。 ※ 各々のCPUのスペックやOpe
      
  
  
  
  
  私が最近経験したタスクに、クエリに英語と日本語が混在し、検索対象のドキュメントは日本語のみのクロスリンガルな検索がありました。 このタスクでは、日本語クエリと比べ英語クエリによる検索精度が相対的に低い傾向が見られていました。 まあそれはそうだろうという話なのですが、これを機に、今クロスリンガル検索タスクをやるにはどのモデルを選ぶと良さそうか、最近の有力なモデルを軽く比べてみました。 詳細は後ろのセクションで話しますが、日本語クエリ-日本語ドキュメントを重視するならcl-nagoya/ruri-v3-310m、英語クエリを含めたバランスを重視するならCohereのembed-v4.0がよさそうな感じです。 ただし、データセット1つでの簡易評価なので、ご参考までに。実際にモデルを選ぶ際はご自身のタスクで評価してみてください。 embed-v4.0はマルチモーダル対応もしているので、個人的にアツ
      
  
  
  2025/04初頭時点で、OpenAIのtext-embedding-3-largeなどの他社モデルを上回り、日本語テキスト埋め込みモデルとしてトップのスコアを記録しています (**)。特にテキスト埋め込みモデルの主要な用途と言えるRetrieval (検索タスク) では既存のモデルの最高スコアから2ポイント以上の更新を達成しており、情報検索での利用に適したモデルであることを示唆していると言えます。 (*) コンテキスト長1024で計測 (以降も断りがなければ同様)。これは学習時に用いたコンテキスト長が1024までであるため。ただし、ベースモデルの最大コンテキスト長であり、PLaMo-Embedding-1Bのconfig上の最大コンテキスト長である4096で計測しても、そこまで性能が下落するわけではないことがわかっています (Appendix参照)。 (**) 2025/04/14にRu
      
  
  
  
  
  NTTドコモの久保田です。2度目の登場です。 みなさんItem2Vecという技術をご存じでしょうか。 Item2Vecとは、文章から単語の分散表現を獲得するWord2Vecを推薦システムに適用した技術です。具体的にECサイトでの推薦を考えたときに、Word2Vecの単語を商品に、文章をユーザが評価したアイテム集合として、アイテムの分散表現を獲得し、アイテム間の類似度などをもとに推薦していく感じです。 簡単に実装できるので、割とやってみた系の記事が多いですが、実際に推薦システムへの適用を考えたときに気を付けるところがあります。 Item2Vecの実装方針 gensimというトピック分析のライブラリがあり、このライブラリを使えば簡単にItem2Vecを実装できます。 1行をユーザが評価しているアイテム集合、各アイテムはスペースで区切られたテキストファイル(今回は、item_buskets.tx
      
  
  
  こんにちは。Algomatic の宮脇(@catshun_)です。 本記事では文書検索において一部注目された BGE M3-Embedding について簡単に紹介します。 Chen+'24 - BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation おことわり 本記事では精読レベルの 詳細な解説は含みません。 詳細については 参照元の論文をご確認ください。 不十分また不適切な言及内容がございましたらご指摘いただけますと幸いです。 プロダクト等の利用時は 必ずライセンスや利用規約を参照して下さい。 本記事で紹介する 論文 は Work in progress とコメントされており今後内容が更新される可能
      
  
  
  
  
  #1ではBoWと形態素解析の導入、#2では特徴語抽出とtf-idfについて取り扱いました。 #3ではここまで出てきた疎行列(Sparse matrix)の取り扱いにあたって分散表現とWord2vecについて取り扱いたいと思います。 以下目次になります。 1. 疎行列の取り扱いと局所表現・分散表現 2. Word2vecの仕組み 3. Word2vecの実装 4. まとめ 1. 疎行列の取り扱いと局所表現、分散表現 ・背景(自然言語処理における疎行列の取り扱い問題) 自然言語処理を行う際にBoW的なアプローチ(生起頻度のカウントとtf-idf値での計算のどちらも含みます)を行うにあたって一番ネックになりうるのは疎行列(Sparse matrix)の問題です。 https://scikit-learn.org/0.16/modules/feature_extraction.html#spars
      
  
  
  はじめに Deep Learning モデルの予測理由を可視化する手法がたくさん研究されています。 今回はその中でも最もシンプルな(しかし何故かあまり知られていない)self attentionを用いた文書分類モデルを実装したので実験結果を紹介します。 この手法では、RNNモデルが文書中のどの単語に注目して分類を行ったか可視化することが可能になります。 2019/04追記 本記事で紹介したモデルをAllenNLPを使用して書き直した記事を公開しました。 attentionの復習 attentionとは(正確な定義ではないですが)予測モデルに入力データのどの部分に注目するか知らせる機構のことです。 attention技術は機械翻訳への応用が特に有名です。 例えば、日英翻訳モデルを考えます。翻訳モデルは”これはペンです”という文字列を入力として"This is a pen"という英文を出力しま
      
  
  
  scouty 代表の島田です。 トピックモデルで単語の分散表現 - 理論編 - scouty AI LAB では、局所表現・分散表現の違いに関して説明しましたが、「単語の分散表現と同じように、文*1の分散表現を作るにはどうすればよいか?」というのが今回のテーマです。 CNNで文の識別タスクを解く - scouty AI LAB でもCNNによって文の分散表現を作る方法を扱いましたが、本記事では Recursive Autoencoder によって文の分散表現を作る方法をご紹介します。 Autoencoder とは何か Recursive Autoencoder は、 Autoencoder (オートエンコーダー)を組み合わせることによって文の意味表現をひとつのベクトルとして表そうとするモデルです。 Autoencoder というのは、入力ベクトルを受け取ったら、入力ベクトルと全く同一のベク
  
  前置き 初投稿となります。普段は理系大学院生で原子力関連の研究室に所属しており、現在は深層学習を用いた研究を行っています。また研究の影響で深層学習に興味を持ち、趣味で自然言語処理の勉強をしております。 ライブ観戦が趣味で先日も『RAISE A SUILEN』の現地ライブに参加し、今度は『Roselia』のライブにも参戦予定です。この記事は『Roselia』の曲を聞いていた際に、音楽のコード進行が自然言語処理に通じるものがあると気づき、実装したものとなります。 概要 『Roselia』曲からいくつか選び、コード進行をword2vecで学習し曲をベクトル化。その後コサイン類似度によって曲同士の類似度を計算し、作曲者の推論をした。 コード進行とは コード進行とは和音(chord)の流れです。有名なものはカノン進行とか王道進行とかです。正確な説明は私にはできないのでSoundQuestをご参考くだ
      
  
  
  paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents)自然言語処理機械学習word2vecparagraph2Vec論文読み 原文: Distributed Representations of Sentences and Documents 要訳者からのお知らせ この要訳はTSGの機械学習分科会での発表のために作られたものです。 雑に内容を理解するためのまとめであり、正確な内容を保証するものではありません。 致命的なミスはコメントか編集リクエストでお知らせください Abstract 機械学習するには入力を固定長のベクトルにする必要がある 既存手法で一番popularなのはbag-of-words だけどBOWはクソ 順序の情報が失われる 単語間のセマンティクスが失われる なので Paragr
      
  
  
  はじめに RoPE ってなに? となったので調べてみた Rotary Positional Embeddings (RoPE) Rotary Positional Embeddings (RoPE) = 絶対位置埋め込みと相対位置埋め込みの長所を組み合わせた新しいアプローチのこと。 そもそも位置埋め込みってなに?なんで必要? Transformerモデルは、入力トークンの順序を考慮せずに処理をする "the dog chases the pig" と "the pig chases the dog" のような異なる意味のフレーズも同様に扱われる これを解決するために、位置埋め込みという概念が導入された 「RoFormer: Enhanced Transformer with Rotary Position Embedding」という論文で2021年に初めて詳細に説明され、自然言語処理(NL
      
  
  
  英語記事をAI関連 or AI関連でない、というテキスト分類器を fastText + 量子化で作ったら、ファイルサイズ1.7MBで実用的なモデルができてしまって驚き、というお話をメモ記事に。1.7MB ですよ!! AI Newsでは、AI関連 or AI関連でないのテキスト分類にAI News の公開と、裏側の OpenAI の活用話で書いた通り、OpenAIのtext-embedding-ada-002で1536次元のベクトルにしたものをlightGBMで学習させたものを使っている。この方法の問題は、すべての記事の判定に必ず OpenAI の API を通す必要があり、長文記事が沢山あると日によっては一日あたり数十円がかかってしまっている。月にすると500~1000円はかかってそうで、チリツモヤマトテナデコである。 というわけで、そろそろデータも溜まってきたしと、OpenAIのAPIに
  
  はじめに こんにちは、AIチームの杉山です。 今回の記事では、QA検索などを行う際の文類似度の計算に、文の埋め込みベクトルを用いてknnで計算した場合とSVMを用いた場合の結果を簡易的ですが定量的に比較してみたいと思います。 動機としては、LangChainのRetrieverの実装にkNNだけでなくSVMを用いた実装が採用されており、その説明の中で以下のようにSVMの方が良いことが多いとされていたことでどれくらい性能が異なるかを確認したいと思ったためです。[1][2] TLDR in my experience it ~always works better to use an SVM instead of kNN, if you can afford the slight computational hit 具体的には、クエリ自身だけを1クラス、検索対象のドキュメント集合全体を別の1ク
      
  
  
  
  
  リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く