タグ

NLPとWに関するsh19910711のブックマーク (30)

  • 独立成分分析を用いた埋め込み表現の視覚的な理解

    sh19910711
    sh19910711 2024/06/08
    "埋め込み: 各要素の大小は解釈できない + PCAよりもICAの方が上手く解釈できる / ICA: 異なる言語の埋め込みで形と意味が共通 + 尖った形状を見つけられる + モデルやドメインの違いを超えた普遍性" doi:10.18653/v1/2023.emnlp-main.283
  • Item2Vecを用いて推薦システムを構築するときに気をつけること - Qiita

    NTTドコモの久保田です。2度目の登場です。 みなさんItem2Vecという技術をご存じでしょうか。 Item2Vecとは、文章から単語の分散表現を獲得するWord2Vecを推薦システムに適用した技術です。具体的にECサイトでの推薦を考えたときに、Word2Vecの単語を商品に、文章をユーザが評価したアイテム集合として、アイテムの分散表現を獲得し、アイテム間の類似度などをもとに推薦していく感じです。 簡単に実装できるので、割とやってみた系の記事が多いですが、実際に推薦システムへの適用を考えたときに気を付けるところがあります。 Item2Vecの実装方針 gensimというトピック分析のライブラリがあり、このライブラリを使えば簡単にItem2Vecを実装できます。 1行をユーザが評価しているアイテム集合、各アイテムはスペースで区切られたテキストファイル(今回は、item_buskets.tx

    Item2Vecを用いて推薦システムを構築するときに気をつけること - Qiita
    sh19910711
    sh19910711 2024/05/30
    "ns_exponent (gensim): negative samplingする分布の形状 + デフォルトでは0.75 + 0だとランダムサンプリング + 負の値になると頻度が低いもの / 音楽系のデータセットでデフォルトの2倍ぐらい + Click-Stream datasetでは約10倍の精度向上" 2019
  • 複数の関連度から検索可能な BGE M3-Embedding の紹介 - Algomatic Tech Blog

    こんにちは。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 とコメントされており今後内容が更新される可能

    複数の関連度から検索可能な BGE M3-Embedding の紹介 - Algomatic Tech Blog
    sh19910711
    sh19910711 2024/05/02
    "ベクトル表現を用いた類似度算出に基づく検索は sparse retrieval, dense retrieval, multi-vector retrieval に大別 / M3-Embedding: これら 3 つの機能を有する高性能な埋め込みモデルとして提案" arXiv:2402.03216
  • RoFormer: Enhanced Transformer with Rotary Position Embedding - iwiwi 備忘録

    arxiv.org GPT-NeoX等で使われているposition embedding。 そもそも三角関数足す元祖のposition embeddingしか知らなかったので、relative position embeddingがどういうものかも知れてよかった。この手法自体は足す(additive)んじゃなくて回転させる(multicative)で、一見かなりアグレッシブな気もしたけど、足すのもまぁまぁやべーし良いかという気持ちになった。内積の大きさを制御したいと思えば全然普通かもしれない。

    RoFormer: Enhanced Transformer with Rotary Position Embedding - iwiwi 備忘録
    sh19910711
    sh19910711 2024/04/27
    "RoFormer: GPT-NeoX等で使われている + 足す(additive)んじゃなくて回転させる(multicative) / アグレッシブな気もしたけど、足すのもまぁまぁやべーし良いかという気持ちになった" arXiv:2104.09864 2023
  • 分散表現とWord2vec|実践的自然言語処理入門 #3 - Liberal Art’s diary

    #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

    分散表現とWord2vec|実践的自然言語処理入門 #3 - Liberal Art’s diary
    sh19910711
    sh19910711 2024/04/27
    "BoW: 行列のサイズ自体はとても大きな一方で、ほとんどが0 + 済系の記事にスポーツ系の単語は出てきにくい / 「深層学習による自然言語処理」の3章の記述が非常にわかりやすかった" 2019
  • 【 self attention 】簡単に予測理由を可視化できる文書分類モデルを実装する - Qiita

    はじめに Deep Learning モデルの予測理由を可視化する手法がたくさん研究されています。 今回はその中でも最もシンプルな(しかし何故かあまり知られていない)self attentionを用いた文書分類モデルを実装したので実験結果を紹介します。 この手法では、RNNモデルが文書中のどの単語に注目して分類を行ったか可視化することが可能になります。 2019/04追記 記事で紹介したモデルをAllenNLPを使用して書き直した記事を公開しました。 attentionの復習 attentionとは(正確な定義ではないですが)予測モデルに入力データのどの部分に注目するか知らせる機構のことです。 attention技術は機械翻訳への応用が特に有名です。 例えば、日英翻訳モデルを考えます。翻訳モデルは”これはペンです”という文字列を入力として"This is a pen"という英文を出力しま

    【 self attention 】簡単に予測理由を可視化できる文書分類モデルを実装する - Qiita
    sh19910711
    sh19910711 2024/04/26
    "予測を間違えたデータの分析も予測理由の可視化ができるとわかりやすい / self-attentive sentence embedding: bidirectional LSTM + 隠れ層を入力として各単語へのattentionを出力 + 文書分類" arXiv:1703.03130 2018
  • Recursive Autoencoder で文の分散表現 - scouty AI LAB

    scouty 代表の島田です。 トピックモデルで単語の分散表現 - 理論編 - scouty AI LAB では、局所表現・分散表現の違いに関して説明しましたが、「単語の分散表現と同じように、文*1の分散表現を作るにはどうすればよいか?」というのが今回のテーマです。 CNNで文の識別タスクを解く - scouty AI LAB でもCNNによって文の分散表現を作る方法を扱いましたが、記事では Recursive Autoencoder によって文の分散表現を作る方法をご紹介します。 Autoencoder とは何か Recursive Autoencoder は、 Autoencoder (オートエンコーダー)を組み合わせることによって文の意味表現をひとつのベクトルとして表そうとするモデルです。 Autoencoder というのは、入力ベクトルを受け取ったら、入力ベクトルと全く同一のベク

    sh19910711
    sh19910711 2024/04/24
    "Recursive Autoencoder: 文章内の単語を二分木で表す + 単語を再帰的に圧縮 / 二分木を作る手法は様々ですが、次のような greedy な手法が用いられ / CNNによる文の分散表現のほうが一般的に文識別などでは精度が高い" 2017
  • 自然言語処理の手法を用いてコード進行から作曲者を推論した - Qiita

    の二つの進行が多い印象です。前者は『Neo-Aspect』や『Song I am.』など藤永龍太郎(Elements Garden)さんが作曲した曲、後者は『FIRE BIRD』や『ROZEN HORIZON』など上松範康(Elements Garden)さんが作曲した曲によく見られます。 word2vecとは 自然言語処理で用いられる手法の一つで、文章から単語のベクトル表現を獲得するものです。単語をベクトル表現することで各種演算ができるようです。代表的なものだと、 が例でよく見られます。word2vec自体は以下の記事がとても分かりやすいです。 Word2Vecを理解する 絵で理解するWord2vecの仕組み 記事ではコード進行を「文章」、コードを「単語」とみなし、ベクトルを獲得することを試みます。前章で述べたようにC/Amキーでは例えば「G」コードの後には「C」コードが来ることが多く

    自然言語処理の手法を用いてコード進行から作曲者を推論した - Qiita
    sh19910711
    sh19910711 2024/04/24
    "コード進行をword2vecで学習し曲をベクトル化 / コード進行: 登場するコードは同じですが、前後関係によって印象が全く変わる / コード進行を「文章」、コードを「単語」とみなし、ベクトルを獲得" 2023
  • paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents) - Qiita

    paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents)自然言語処理機械学習word2vecparagraph2Vec論文読み 原文: Distributed Representations of Sentences and Documents 要訳者からのお知らせ この要訳はTSGの機械学習分科会での発表のために作られたものです。 雑に内容を理解するためのまとめであり、正確な内容を保証するものではありません。 致命的なミスはコメントか編集リクエストでお知らせください Abstract 機械学習するには入力を固定長のベクトルにする必要がある 既存手法で一番popularなのはbag-of-words だけどBOWはクソ 順序の情報が失われる 単語間のセマンティクスが失われる なので Paragr

    paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents) - Qiita
    sh19910711
    sh19910711 2024/04/23
    "BOW: 順序 + 単語間のセマンティクスが失われる / bag-of-n-grams: スパース性と次元の高さに問題 / Paragraph Vector: 文書中に出現する単語を予測できるように学習 + BOWの欠点を乗り越える" arXiv:1405.4053 2016
  • Rotary Positional Embeddings (RoPE) とは - Qiita

    はじめに 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

    Rotary Positional Embeddings (RoPE) とは - Qiita
    sh19910711
    sh19910711 2024/04/22
    "RoPE: 絶対位置埋め込みと相対位置埋め込みの長所を組み合わせ + 単語ベクトルに回転を適用 / 単語が異なる文脈で同じ相対距離を保つ場合、それらのベクトルは同じ量だけ回転 + 結果としてのドット積が一定に保たれ"
  • fastText で量子化し、実用的な 1.7MB のテキスト分類器を作る - A Day in the Life

    英語記事をAI関連 or AI関連でない、というテキスト分類器を fastText + 量子化で作ったら、ファイルサイズ1.7MBで実用的なモデルができてしまって驚き、というお話をメモ記事に。1.7MB ですよ!! AI Newsでは、AI関連 or AI関連でないのテキスト分類にAI News の公開と、裏側の OpenAI の活用話で書いた通り、OpenAItext-embedding-ada-002で1536次元のベクトルにしたものをlightGBMで学習させたものを使っている。この方法の問題は、すべての記事の判定に必ず OpenAIAPI を通す必要があり、長文記事が沢山あると日によっては一日あたり数十円がかかってしまっている。月にすると500~1000円はかかってそうで、チリツモヤマトテナデコである。 というわけで、そろそろデータも溜まってきたしと、OpenAIAPI

    sh19910711
    sh19910711 2024/04/21
    "今まで fastText のモデルを量子化するとこれだけモデルサイズが減るのだ、というのを知らずに過ごしてきた / fasttext print-word-vectors: 単語ベクトルのみの .vec ファイルを出力できる" 2023
  • 埋め込みベクトルを用いたSVMによる類似文検索の検証 | 株式会社AI Shift

    はじめに こんにちは、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ク

    埋め込みベクトルを用いたSVMによる類似文検索の検証 | 株式会社AI Shift
    sh19910711
    sh19910711 2024/04/18
    "LangChainのRetrieverの実装にkNNだけでなくSVMを用いた実装が採用されており + SVMの方が良いことが多いとされていた / 類似度スコアの相関係数の比較 + Nを大きくするとkNNの方が高い値を示すという結果" 2023
  • 論文読み会 WWW2022 | Learning Probabilistic Box Embeddings for Effective and Efficient Ranking

    論文読み会の資料です. (A slide for the paper-reading activity at my company, written in Japanese.)

    論文読み会 WWW2022 | Learning Probabilistic Box Embeddings for Effective and Efficient Ranking
    sh19910711
    sh19910711 2024/04/15
    "ベクトル埋め込みベースの検索システムは深層学習時代では基本的な技術になっているが微妙な点もある / ベクトル空間の1つの点に埋め込めるほど明確ではない / 箱にすればいいのでは" doi:10.1145/3485447.3512073 2023
  • Sentence Transformersでできること 拡張SBERT、埋め込み量子化、クロスエンコーダーの学習

    埋め込み量子化 埋め込み量子化とは、通常float32で表現される埋め込みベクトルを整数型やバイナリで表現することで、計算の高速化、メモリの節約、ストレージの節約を目指すものである。 埋め込みベクトルのバイナリ化を行うことで、1/32のデータ量になり、検索精度は90%以上を保持することができる。 またバイナリ化された埋め込みベクトル間の距離はハミング距離であるので、XOR演算とpopcountを使うことで高速計算が可能。実際にハミング距離を使った高速検索はGoogle検索でも使われている。 このアプリケーションの実用性はその制約次第だが、VectorDB内のベクトル量が250Mを超えたら、利用を考える価値が高い。 クロスエンコーダーの学習 クロスエンコーダーの利用と学習はSentence Transformersのメイン機能である。 バイエンコーダーとクロスエンコーダー ベクトル検索に使わ

    Sentence Transformersでできること 拡張SBERT、埋め込み量子化、クロスエンコーダーの学習
    sh19910711
    sh19910711 2024/04/12
    "量子化: バイナリ化された埋め込みベクトル間の距離はハミング距離 + XOR演算とpopcountを使うことで高速計算が可能 / 拡張SBERT: ラベル付きデータセットからCross-Encoderを学習 + Silver Datasetと呼ばれるweekly Supervised Datasetを作成"
  • Cohereの多言語用の埋め込みモデルを日本語で評価してみる - Ahogrammer

    Cohereが提供を開始した多言語用のテキスト埋め込み用のモデルであるembed-multilingual-v3.0の性能を日語の文類似度と検索のデータセットで評価してみました。 Cohere Embed v3とは CohereのEmbed v3はテキストを埋め込むためのモデルです[1]。これまでもv2モデルがありましたが、それと比べた主な改良点は、単純に性能が向上していることに加えて、コンテンツの全体的な品質を評価する機能が挙げられます。この機能はノイズの多いデータセットを扱う場合に役立ち、品質の高い文書を上位にランク付けすることができとしています。さらに、圧縮を考慮した特別な学習方法を実装しており、ベクトルデータベースの実行コストを大幅に削減できるとしています。この機能の詳細については、近日中に公開とのことです。 画像はhttps://txt.cohere.com/introduci

    Cohereの多言語用の埋め込みモデルを日本語で評価してみる - Ahogrammer
    sh19910711
    sh19910711 2024/04/11
    "CohereのEmbed v3: コンテンツの全体的な品質を評価 + 圧縮を考慮した特別な学習方法を実装 + ベクトルデータベースの実行コストを大幅に削減 / 日本語での評価: nDCG@10とRecall@100 + 評価用のフレームワークとしてはranx" 2023
  • 単語埋め込みを単語埋め込みに埋め込む -後編- - Sansan Tech Blog

    こんにちは、DSOC R&Dグループ インターン生の荒居です。 この記事は、単語埋め込みに単語埋め込みを埋め込む-前編-の続きの記事です。 前編では、ベースとなる 単語埋め込み になかった単語のベクトル表現を別の単語埋め込みから輸入することを実験的に行い定性的に評価をしました。 今回は同じ手法でベースとなる単語埋め込みを拡張し、文書分類のタスクを解かせてみることでその有効性の検証を行います。 振り返り 前回の記事では、2つの単語埋め込みの両方に含まれる単語のベクトル表現の対応関係を線形変換として表現し、その線形変換を片方の単語埋め込みにしか存在しない単語ベクトル表現にも適用することで、単語埋め込みの拡張を行いました。 2つの単語埋め込みの積集合を用いて単語ベクトル空間の間の変換を取得する単語ベクトル表現を別の単語埋め込みから「輸入」する 単語埋め込みの良さを評価する 単語埋め込みの良さを評

    単語埋め込みを単語埋め込みに埋め込む -後編- - Sansan Tech Blog
    sh19910711
    sh19910711 2024/04/11
    "単語埋め込みの良さ: 人間によって単語間の関係を評価する方法 (intrinsic) + 後流のタスクでの評価を持って測ろう (extrinsic) / そもそも、Livedoor ニュースコーパスは単語出現の頻度情報だけを見ても簡単に分類できる" 2019
  • GiNZAの単語分散表現にchiVeを使って精度向上のお試し - Taste of Tech Topics

    こんにちは。最近シェアハウスのネットワークをIPv6に切り替えたら快適になった@Ssk1029Takashiです。 最近は学習済み単語分散表現が日語でも充実してきており、語彙の多いもの・ドメインに特化しているものなど選択肢の幅が広がってきています。 日語処理フレームワークであるGiNZAからもデフォルトで単語分散表現が使用可能です。 今回はワークスアプリケーションさんが作成しているchiVeという学習済み単語分散表現を使って、機械学習の精度を向上できるかを見てみます。 はじめに GiNZAとは chiVeとは GiNZAから学習済み単語分散表現を使用する GiNZAからchiVeの分散表現を使用する クラス分類の精度が向上するか試してみる まとめ はじめに 単語分散表現とは単語に対して、ベクトルを埋め込む技術で、Word2Vecなどが代表的です。 すでに学習されている分散表現を使用する

    GiNZAの単語分散表現にchiVeを使って精度向上のお試し - Taste of Tech Topics
    sh19910711
    sh19910711 2024/04/08
    "chiVe: Skip-gramアルゴリズムを元に、word2vec (gensim) を使用して構築した単語分散表現 / NWJC: 約1億のウェブページ文章を含む国立国語研究所の日本語ウェブコーパス" 2020
  • Dynamic Word Embeddings for Evolving Semantic Discovery (WSDM 2018) 読んだ - 糞糞糞ネット弁慶

    概要 [1703.00607] Dynamic Word Embeddings for Evolving Semantic Discovery word embedding の時系列変化が見たい(これどこかの論文でも見た気がする). 例えば, apple という単語は昔は果物が連想されるだけだったが,今ではテクノロジー企業も連想されるだろう. 例えば, trump という人名だって「不動産」 -> 「テレビ」 -> 「共和党」と連想するものが時間と共に変化するだろう. そういうのが見たい. 問題は,従来の embedding の方法は学習時に回転を考慮しないため,異なる時点での embedding を対応付けることができない.そこで,従来手法では, 各時点での embedding を学習する 時点ごとの embedding を対応付ける alignment を解く という二段階のアプローチ

    Dynamic Word Embeddings for Evolving Semantic Discovery (WSDM 2018) 読んだ - 糞糞糞ネット弁慶
    sh19910711
    sh19910711 2024/04/07
    "word embedding の時系列変化が見たい / apple が「果物」から「技術」に移動 + amazon は「森林」から「e-コマース」に移動し,「タブレット」など経て最終的には Netflix などのコンテンツ配信領域に落ち着いて" arXiv:1703.00607 2018
  • BERTの単語ベクトルを覗いてみる - Qiita

    Googleが2018年10月に発表し、大いに話題となった自然言語処理モデルBERT。このBERTのモデルから単語ベクトルが抽出できるようなので、色々と調べてみようと思います。 BERTの単語ベクトルの特徴 単語ベクトルといえばWord2Vecですが、Word2Vecの単語ベクトルは、異なる意味の単語でも字面が同じならば全て同じ値になってしまうという欠点があります。 例えば下のような文があった場合、この文の最初の「HP(ヒューレット・パッカード)」と2つ目の「HP(ホームページ)」は別の意味を持つ単語ですが、ベクトルとしては同じになります。 HP社は、2019年11月18日に新製品をHPで発表した。 ところが、BERTの場合は、2つの「HP」のベクトルは異なる値になります。それだけではなく、下の例のような同じ意味の3つの「HP」も、すべて異なるベクトルになります。 HP社は、HP社と、HP

    BERTの単語ベクトルを覗いてみる - Qiita
    sh19910711
    sh19910711 2024/04/07
    "Word2Vec: 異なる意味の単語でも字面が同じならば全て同じ値になってしまう / BERTのベクトル: 単語の意味を区別することは難しそう + 意味を表現している成分を抽出する必要があるのかも" 2019
  • Pytorchで分散表現の学習手法であるskipgram、skipgram with negative samplingの実装 - Deep Karmaning

    1.概要 分散表現(distributed representation)の学習手法である、skipgramとskipgram with negative samplingをPytorchを使って実装したので、その紹介をしたいと思います。 2.理論 まずは 理論的な側面を簡単に紹介します。 2.1.分散表現(distributed representation)とは 分散表現は埋め込み(embedding)表現とも呼ばれたりするのですが、離散的な値を数値的な値で表現したものを指します。 言語における単語などは代表的だと思いますが、単語を単純にone hot encodingで離散的な値のまま使うと、かなり次元が高くなってしまいます。 一方で分散表現を学習することで、低次元かつ連続的な値として扱うことが可能です。 また以下の図で表現されているように、連続的な値のため類似度を計算することも容易

    Pytorchで分散表現の学習手法であるskipgram、skipgram with negative samplingの実装 - Deep Karmaning
    sh19910711
    sh19910711 2024/02/22
    "skipgram with negative sampling: 基本的なモデルのアーキテクチャは変わりません + しかし、softmaxの代わりにsigmoidを利用し、負例をボキャブラリーでの出現頻度に基づいてサンプリングしたものを使う" / 2019