タグ

ブックマーク / hironsan.hatenablog.com (16)

  • 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
  • 多言語E5をファインチューニングして検索性能を向上させる - Ahogrammer

    多言語のテキスト埋め込み用のモデルであるMultilingual-E5[1]をファインチューニングして、検索性能が向上するか否かを日語のデータセット検証してみました。結果としては、ファインチューニングすることで、OpenAItext-embedding-ada-002を上回る性能を確認できました。なお、E5については以下の記事で解説しているので、必要に応じて参照してください。 hironsan.hatenablog.com 記事の構成は次のとおりです。 実験設定 実験結果 参考資料 実験設定 今回の実験では、多言語E5をファインチューニングして得られたモデルをベクトル検索に使うことで、検索性能がどのように変化するかを検証します。多言語E5にはbaseとlargeの2つのモデルがあるので、これらをファインチューニングする前後の検索性能を測定することにします。また、比較用のモデルとしてO

    多言語E5をファインチューニングして検索性能を向上させる - Ahogrammer
    sh19910711
    sh19910711 2024/04/05
    "Multilingual-E5: 多言語のテキスト埋め込み + ファインチューニングすることで、OpenAIのtext-embedding-ada-002を上回る性能 / SentenceTransformersのMultipleNegativesRankingLoss: 正しいQAペアを正例、それ以外の組み合わせを負例として使う" 2023
  • LangChain Templatesを使って研究アシスタントをサクッと作る - Ahogrammer

    最近はLangChain Templates[1]を使って、LangChainベースのアプリケーションを簡単に作れるようになっていますが、テンプレートのリストを何気なく見ていたら、GPT Researcher[2]を基にした研究アシスタント[3]のテンプレートがありました。仕事で似たような機能を作っていたこともあり、興味深い内容だったので、この記事ではLangChain Templatesを活用し、研究アシスタントを作成する方法を紹介します。 研究アシスタントの例。リサーチクエスチョンを入力すると、文書を検索し、レポートにまとめてくれる。 研究アシスタントのアーキテクチャは以下のとおりです。大きくは、ユーザーが入力したリサーチクエスチョンから検索クエリを生成し、各クエリで検索した情報を要約してから結合し、レポートを生成しています。要約を結合してからLLMに入力しているため、それなりに長いコ

    LangChain Templatesを使って研究アシスタントをサクッと作る - Ahogrammer
    sh19910711
    sh19910711 2024/04/05
    "LangChain Templates: RAGやOpenAI Functionsを使った情報抽出、エージェントなどをコマンド1つで作成 + ブラウザからその動作を確認 / 研究アシスタントは、リサーチクエスチョンを入力すると、文書を検索し、レポートにまとめ" 2023
  • ナレッジグラフを用いたRAGの改善 - Ahogrammer

    RAG(Retrieval Augmented Generation)は大規模言語モデル(LLM)の性能を改善するための手法の1つであり、質問に対する回答を生成する際に、外部知識源から情報を取り込みます。 これにより、LLM 自体で学習できる情報量に制限されることなく、より正確で詳細な回答を生成することができます。 よく使われているRAGでは、外部知識源として検索エンジンにテキストをインデックスしておき、質問に関連するテキストをベクトル検索や全文検索を用いて取得します。しかし、構造化データを扱うことには苦労するため、質問によっては回答が不十分、あるいはまったく回答できないことに繋がります。 これらの問題を克服するために、ナレッジグラフを用いたRAGが構築されることがあります。ナレッジグラフでは、エンティティとその間の関係がグラフ構造で表現されており、単純な検索を用いた場合には回答できないよ

    ナレッジグラフを用いたRAGの改善 - Ahogrammer
    sh19910711
    sh19910711 2024/03/22
    "GraphCypherQAChain: 与えられた質問に基づいたCypherクエリの生成、ナレッジグラフへの問い合わせ、問い合わせ結果を用いた回答の生成をしてくれます / 単純な検索を用いた場合には回答できないような複雑な質問にも対応"
  • 固有表現認識にはどのサブワードの分散表現が有効なのか? - Ahogrammer

    ACL 2019より以下の論文を紹介。 Sequence Tagging with Contextual and Non-Contextual Subword Representations: A Multilingual Evaluation この論文では、2つの系列ラベリングタスク(固有表現認識と品詞タグ付け)に対して、3つのサブワードの分散表現(FastText、BPEmb、BERT)のどれが有効なのかを調査している。最近の自然言語処理タスクでは事前学習済みの分散表現が使われる。特に2018年以降はELMoやBERTなどの文脈を考慮した分散表現が使われるようになってきている。しかし、どの分散表現を使うのが良いのか包括的に調査した研究はなく、実務者が分散表現の選択を行うのを難しくしている。そういうわけで、265言語に対して調査を行った。 調査の結果、以下の示唆を得られた。 大規模データ

    固有表現認識にはどのサブワードの分散表現が有効なのか? - Ahogrammer
    sh19910711
    sh19910711 2024/03/09
    "サブワードの分散表現: FastText、BPEmb、BERT / 低リソースな場合、サブワードのボキャブラリ数は小さい方が良い / BPEに文字分散表現を組み合わせるとFastTextなどと比べて性能が向上" arXiv:1906.01569 2019
  • はじめての出版、地獄秘話 - Ahogrammer

    先月2月27日に、書籍『機械学習・深層学習による自然言語処理入門』を発売させていただきました。タイミングを逃して、Twitterやブログで告知することもなかったのですが、気持ちを整理するために、記事では出版の経緯からまとめてみます。キラキラした感じで書いても面白くないと思うので、ドロドロした感じで書いていきます。 機械学習・深層学習による自然言語処理入門 きっかけは上司からの紹介 書籍執筆のきっかけは上司からの「自然言語処理の執筆依頼が来ているがどうか?」という話でした。それまでにも、ありがたいことに、いくつかの出版社から執筆依頼はあったのですが、提案された企画の内容を書くことに気が進まなかったため、すべて断っていました。ただ今回は、いつもブログに書いてる自然言語処理の話だったので、話を聞いてみることに決めました。 そこから1度、担当編集者に弊社に打ち合わせに来ていただき、内容やボリュ

    はじめての出版、地獄秘話 - Ahogrammer
    sh19910711
    sh19910711 2022/10/01
    2020 / "執筆自体は業務時間内で行えるように会社と調整しました。これが後で社内手続き地獄に繋がるわけですが / はじめては単著じゃないほうが良いと思った / 執筆と業務を切り替えるのには膨大なエネルギーが必要"
  • 『機械学習エンジニアのためのTransformers』が出ます - Ahogrammer

    このたび、オライリー・ジャパンより、『Natural Language Processing with Transformers』の翻訳書である『機械学習エンジニアのためのTransformers』を出ることになりました。素直にタイトルを訳すと、『Transformersによる自然言語処理』のようになると思うのですが、1文字違いのが出ていたので、このようなタイトルになっています。Amazonだと8月5日に発売のようです。表紙の鳥はゴシキセイガイインコで、オセアニアに生息しています。 『機械学習エンジニアのためのTransformers』が届きました🤗 来週発売です。 pic.twitter.com/6R2dYh7X7D— Hironsan (@Hironsan13) 2022年7月28日 書はTransformersの開発元であるHugging Faceの開発者たちによって執筆された

    『機械学習エンジニアのためのTransformers』が出ます - Ahogrammer
    sh19910711
    sh19910711 2022/08/12
    "『Natural Language Processing with Transformers』の翻訳書 / Hugging Faceの開発者たちによって執筆 / モデルの高速化技術、ゼロショット学習や少数事例学習、多言語転移やドメイン適応について / 表紙の鳥: オセアニアに生息"
  • Tweetから薬の副作用に関する分類と抽出を行う手法 - Ahogrammer

    ACL 2019より以下の論文を紹介。 HITSZ-ICRC: A Report for SMM4H Shared Task 2019-Automatic Classification and Extraction of Adverse Effect Mentions in Tweets この論文は、Tweet中に出現する薬の副作用に関するメンションの分類と抽出を行う手法を提案している。背景として、投薬治療後の主な死亡原因に薬の副作用が関係しており、その監視が重要な点を挙げている。最近ではSNSに薬の効果が投稿されるので、それを監視に役立てるという話になる。関連するシェアドタスクとして「ヘルスアプリケーションのためのソーシャルメディアマイニング(SMM4H)」があり、この論文ではその内の2つのタスク(副作用の分類と抽出)に取り組んでいる。結果として、分類では最高性能(F1で0.6457)、

    sh19910711
    sh19910711 2022/03/03
    "BERTから得られたベクトルと知識ベースから得られた特徴ベクトルを結合したベクトルを使って分類 / 知識ベースから薬とその副作用のペアを抽出し、それがTweetに含まれているか否かという2値の特徴 / Chen et al., 2019"
  • ディープラーニングで作る固有表現認識器 - Ahogrammer

    固有表現認識は自然言語処理の基礎技術であり、様々なタスクの要素技術として使われます。たとえば、情報抽出や対話システム、質問応答といった応用システムの中で固有表現認識は使われることがあります。また、関係認識やEntity Linkingといった基礎技術で使われることもあります。 従来の固有表現認識では、言語に特有な特徴や外部知識に依存した手法が使われていました。これらの手法では、特徴を人間が定義することで、高性能な認識を実現していました。ただ、言語依存の特徴を使うため、モデルを新しい言語に対して適用する際のコストが高くなる問題があります。 記事では、ディープラーニングを使って言語的な特徴や外部知識に依存しない固有表現認識器を作成します。文は以下の内容で構成されています。 実装するモデルの説明 モデルの実装 モデルの学習 全体のコードは以下のGitHubリポジトリにあります。スターしていた

    ディープラーニングで作る固有表現認識器 - Ahogrammer
    sh19910711
    sh19910711 2021/12/12
    "「首相」という単語があればその前に来るのは人である可能性が高い + 逆順の入力をすると認識し易い場面が多い / 単語は日々増え続け、未知語が増え続けているのに対し、文字はほとんど増えない / Lample"
  • 実践!固有表現認識 ~Flairを使って最先端の固有表現認識を体験しよう~ - Ahogrammer

    自然言語処理の分野で昔から研究され、実際に使われている技術として固有表現認識があります。固有表現認識は、テキスト中で固有表現が出現する位置を特定し、人名や地名などのラベルを付与するタスクです。情報抽出や質問応答、対話システムなどへの幅広い応用が可能なため、今でも盛んに研究され、使われている技術です。記事では、日語の固有表現認識をFlairと呼ばれるPythonパッケージを使って実現する方法について紹介します。 準備 記事では Flair を使って固有表現認識のモデルを学習させます。Flairは最先端の自然言語処理のモデルを簡単に使い始められる形で提供してくれているパッケージです。その中で提供されている機能として、固有表現認識や品詞タグ付け、文書分類のモデルを学習するための機能があります。使い始めるために、以下のようにしてFlairをインストールしておく必要があります。 $ pip i

    実践!固有表現認識 ~Flairを使って最先端の固有表現認識を体験しよう~ - Ahogrammer
    sh19910711
    sh19910711 2021/09/20
    "今回は、2018年にAkbikらがContextual String Embeddings for Sequence Labelingという論文の中で提案したモデルを実装 / 文字ベースの言語モデルを使って単語分散表現を構築し、それを使ってラベルを予測"
  • テキストの構造化を支える技術 -概要編- - Ahogrammer

    最近、情報抽出、特にOpen Information Extraction(OpenIE)という分野について勉強しています。せっかく勉強しているので、学んだ内容について何回かに分けて紹介していこうと思います。第一回目の今回は、OpenIEという分野の概要について紹介し、OpenIEのきっかけとなったシステムであるTextRunnerとその仕組みについて説明します。 Open Information Extractionとは? OpenIEについて述べる前に、まずは伝統的な情報抽出について述べておきましょう。情報抽出は非構造化データであるテキストを構造化された表現に変換するタスクです*1。情報抽出で抽出される情報は関係のタプルの形(arg1, rel, arg2)で表現されます。このタプルは関係を示すフレーズ(rel)とその対象であるエンティティ(args)から成ります。一般的な処理の流れと

    テキストの構造化を支える技術 -概要編- - Ahogrammer
  • Wikipediaの前処理はもうやめて「Wiki-40B」を使う - Ahogrammer

    最近の自然言語処理では、大規模なテキストから単語の分散表現や言語モデルを学習させて使っています。学習する際のテキストとしては、分量や利用しやすさの都合からWikipediaが選ばれることが多いですが、その前処理は意外と面倒で時間のかかる作業です。そこで、記事では比較的最近リリースされた前処理済みのデータセット「Wiki-40B」とその使い方を紹介します。 Wiki-40Bとは? Wiki-40Bは、40言語以上のWikipediaを前処理して作られたデータセットです。このデータセットは言語ごとに学習/検証/テスト用に分かれているので、単語分散表現や言語モデルの学習・評価に使えます。言語ごとの対応状況については、以下のページを参照するとよいでしょう。 wiki40b | TensorFlow Datasets 前処理としては、大きくは以下の2つに分けられます。 ページのフィルタリング ペー

    Wikipediaの前処理はもうやめて「Wiki-40B」を使う - Ahogrammer
  • 単語分散表現の信頼性を考慮した固有表現認識 - Ahogrammer

    ACL 2019より以下の論文を紹介。 Reliability-aware Dynamic Feature Composition for Name Tagging この論文では、単語分散表現の信頼性を考慮した固有表現認識を行うモデルを提案している。単語分散表現は広く使われているが、低頻度語や未知語のように文脈が十分に存在しない単語の場合はその信頼性は頻出語と比べて低い。しかし、現在のモデルはすべての分散表現を等しく重み付けしているため、それによって性能を損なっている可能性がある。そこでこの論文では、単語の出現頻度を基に分散表現の信頼性を計算し、モデルに組み込んでいる。実験の結果、従来より良い結果を得られた。 以前から知られているが、現在の固有表現認識のモデルは未知語に弱いという課題がある。たとえば、以下の例を考えてみよう。 例: 先日の雨で鬼難橋が流された。 「鬼難橋」というのは私が作っ

    単語分散表現の信頼性を考慮した固有表現認識 - Ahogrammer
  • Object2vecの新機能を使って文の分散表現を計算する - Ahogrammer

    前回の記事では、日語文の分散表現を計算するためのデータセットを作成した。 hironsan.hatenablog.com 今回は、先日、SageMakerのObject2vecに追加された機能を使って文の分散表現を計算する。追加された機能には、ネガティブサンプリングの自動化、重み共有、学習の高速化が含まれている。いったん分散表現を計算できると、それを使って文をクラスタリングしたり、分類や回帰といった下流のタスクで使うことができる。 ここで、Object2vecのアーキテクチャについて簡単に説明しておこう。AWSの公式ブログによると、Object2vecのアーキテクチャは以下のようになっている。 参照: https://aws.amazon.com/jp/blogs/machine-learning/introduction-to-amazon-sagemaker-object2vec/

    Object2vecの新機能を使って文の分散表現を計算する - Ahogrammer
  • 日本語版text8コーパスを作って分散表現を学習する - Ahogrammer

    単語の分散表現を学習させる際、Wikipedia ほどのサイズが必要ないときに使われるコーパスとして text8 があります。 text8 は、Wikipedia に対してクリーニング等の処理をした後、100MB分切り出して作成されています。 text8 は前処理済みで簡単に使えるので、チュートリアル等でよく利用されています。 text8 は便利なのですが、英語にしか対応していないのが欠点でした。 そのため今回は、text8 の日語版(もどき)を作ってみました。 前処理済みなので、ダウンロードしたらすぐに使うことができます。 作成したコーパスは以下のリポジトリからダウンロードできます。スターしていただけると励みになりますm(_ _)m Hironsan/ja.text8 記事では、日語版 text8 コーパスの作成方法を説明し、作成したコーパスを使って分散表現を学習します。 次の3つ

    日本語版text8コーパスを作って分散表現を学習する - Ahogrammer
  • gensimを使ってKerasのEmbedding層を取得する - Ahogrammer

    2017/06/21にリリースされた gensim 2.2.0 から Keras との統合機能が導入されました。 具体的には、Word2vec の Keras 用ラッパが導入されました。 これにより、gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取得できるようになりました。 記事では、実際に gensim の Keras 統合機能を試してどのようなものなのか確認してみたいと思います。 実装 今回は、Word2vec の Keras 用ラッパーを使って、モデルを実装していきたいと思います。 具体的には 20NewsGroupsデータセットを用いて文書分類タスクに使用する例を示します。 以下の手順で実装していきます。 必要なライブラリのインストール Word2vec の学習と Embedding層の取得 モデルの構築 インストー

    gensimを使ってKerasのEmbedding層を取得する - Ahogrammer
    sh19910711
    sh19910711 2019/02/05
    “gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取得できる”
  • 1