タグ

tokenizerに関するsh19910711のブックマーク (42)

  • 【データ整理】Unicode正規化とMySQL COLLATION

    utf8mb4_bin はバイナリレベルで文字を比較するため当然全て異なる結果となります。 utf8mb4_general_ci は比較的よく使われるCollationですが、半角アルファベットの大文字小文字の違いが同一視されるのが特徴です。 また絵文字の区別はされないのはよく「寿司ビール問題」として有名ですね。 utf8mb4_unicode_ci は「ア」「ア」が同一されるのは良いですが、「は」「ぱ」「ば」あたりが同一視されるなど、日語を扱う上では正直使いにくいという印象です。 utf8mb4_unicode_520_ci は、utf8mb4_unicode_ci に対して絵文字が全て同一視されるのを無くしたCollationですが、utf8mb4_unicode_ciと同じく日語には不向きです。 テーブルのデフォルト Collation MySQLではテーブルを作るときにCHAR

    【データ整理】Unicode正規化とMySQL COLLATION
    sh19910711
    sh19910711 2025/10/25
    2023 / "NFD・NFCの場合は「A」「A」のように全角半角による差を吸収しない / NFDとNFCの違いは、合成文字を変換した場合に表れ / 半濁音の文字は、「結合済文字」で表す方法と「基底文字 + 結合文字」で表す方法の2通り"
  • text-embeddings-inference で日本語トークナイザーモデルの推論をする - A Day in the Life

    HuggingFace が提供している推論サーバ、text-embeddings-inference(以下TEI)は rust で書かれており、各種GPUアーキテクチャ対応の Docker コンテナも用意され、GPUアーキテクチャが FlashAttention-2 対応以降なら、推論速度も python の transformers ライブラリで動かすよりも約1.5~2倍弱の速さというかなりのパフォーマンスで、番でのハイパフォーマンス推論サーバとして重宝している。 しかしながら、日語環境での問題点の一つが rust ベースの FastTokenizer 動かせる、つまり tokenizer.json を用意しているモデルでないと利用できないことだ。日語 transformer モデルの多くが、unidic や mecab といった python で動く形態素解析辞書・ライブラリを利

    sh19910711
    sh19910711 2025/10/18
    2024 / "text-embeddings-inference: HuggingFace が提供している推論サーバ / GPUアーキテクチャが FlashAttention-2 対応以降なら、推論速度も python の transformers ライブラリで動かすよりも約1.5~2倍弱の速さ"
  • 論文要約:Multi-word Term Embeddings Improve Lexical Product Retrieval

    論文要約:Multi-word Term Embeddings Improve Lexical Product Retrieval 論文:https://arxiv.org/pdf/2406.01233 この論文を読もうとしたきっかけ セマンティック検索でファッションドメインの語を扱う方法を理解 Elasticsearch9系でrank_vectors mappingによりlate-interactionが可能になったので理解 Abstract ECにおける製品検索に特化した新しい埋め込みモデル「H1」について述べている。 H1モデルの主な特徴と利点 複数の単語からなる製品名を一つのトークンとして(つまりフレーズのように)処理できる点が大きな特徴 例えば「new balance shoes」や「gloria jeans kids wear」といった検索クエリに対して、「new balanc

    論文要約:Multi-word Term Embeddings Improve Lexical Product Retrieval
    sh19910711
    sh19910711 2025/09/28
    "Elasticsearch9系でrank_vectors mappingによりlate-interactionが可能になった / インデックス構造がトークン→商品群のため、新しい語彙(トークン)が追加されたらそれに対応する商品群を追加"
  • cc100 ja で日本語 tokenizer を huggingface tokenizers で train するメモ

    2023/09 時点で, LLM 用の主なトークナイザ(主には BPE(Byte Pair Encoding) であるが, sentencepiece. huggingface tokenizers は UNIGRAM なども対応)は以下の5つでしょうか. sentencepiece 一通りあり. protobuf を要求しつらみ 😢 tiktoken https://github.com/openai/tiktoken 高速(Rust 記述). BPE のみ? ただしトレーニング部分は無い https://github.com/openai/tiktoken/issues/25 llama.cpp https://github.com/ggerganov/llama.cpp/pull/252 C++ 記述. sentencepiece 互換のモデルロード(UNIGRAM も OK)に対

    cc100 ja で日本語 tokenizer を huggingface tokenizers で train するメモ
    sh19910711
    sh19910711 2025/09/20
    2023 / "vocab サイズを大きく取る(6 万 vocab 超え)トークナイザ + 多言語用だと, BPE ではなく Unigram 表現のほうが主流のようです(要出典)"
  • SKKに入門して日本語入力を快適にする

    はじめに 普段、 Google IME などの日語 IME を使った入力で、意図した箇所で変換してくれないことにストレスを感じていませんか? SKK ではこれにより発生する書き直しを防ぐことが出来ます。 SKK についてはニコニコ大百科に詳しく記載されているので、興味ある人はそちらを読んでください。 AquaSKK のインストール Mac で SKK を使うための選択肢として macSKK もありますが、今回はより情報が多そうな AquaSKK をインストールします。 再起動後、システム設定の キーボード > テキスト入力 > 入力ソース から AquaSKK統合 を追加すると SKK による入力が有効になります。 Windows だと CorvusSKK が人気なイメージがあります。 入力方法 SKK は Shift で変換箇所と送り仮名を明示的に指定し、Space で変換します。 例

    SKKに入門して日本語入力を快適にする
    sh19910711
    sh19910711 2025/09/20
    2024 / "Mac で SKK を使うための選択肢として macSKK もありますが、今回はより情報が多そうな AquaSKK をインストール / Shift を多様する特性上、小指の負担が大きくなるので、Shift をセミコロンなどの他のキーで代用"
  • 知識拡張型言語モデルLUKE

    言語処理学会第29回年次大会 併設ワークショップ JLR2023 (

    知識拡張型言語モデルLUKE
    sh19910711
    sh19910711 2025/09/16
    2023 / "LUKE: 単語とエンティティの文脈付きベクトルを出力 / エンティティは複数の入力トークンに分割されるため、Transformer内部でエンティティ同士の関係を捉えることが難しい"
  • 大規模同義語辞書でElasticsearchのIndex作成が重くなる問題とその対策 - Sansan Tech Blog

    こんにちは。技術部 Contract One Engineering Unit の伊藤です。Sansan株式会社で AI 契約データベース「Contract One」の開発を担当しています。 Contract Oneでは契約書検索をコア機能として提供していますが、実運用では社名の表記揺れや新旧社名による検索漏れが課題となっていました。たとえば「さんさん」と入力しても「Sansan株式会社」にヒットしてほしいですし、旧社名「三三株式会社」を検索しても新社名に紐づく契約書がヒットするようになって欲しいという要望がありました。 そこでElasticsearchの同義語検索機能を導入し、複数の表記を吸収して検索できる仕組みを追加しました。これにより検索精度は大きく改善しましたが、大規模な同義語辞書を使う中で一部性能が劣化する部分がありました。記事では、その調査過程と得られた知見を共有します。

    大規模同義語辞書でElasticsearchのIndex作成が重くなる問題とその対策 - Sansan Tech Blog
    sh19910711
    sh19910711 2025/09/03
    "N-gram は文字列を細かく分割して多数のトークンを生成します。そこに大量の同義語エントリを扱う仕組みが加わると、トークン数の増加に対して指数関数的に FST 構築のコスト(時間・CPU)が増大"
  • byte列を直接処理する言語モデル

    Table of Contents これは何?byte列をpatchに区切る具体例提案手法のメリット学習効率の向上1つの処理単位に押し込める情報量をコントロールするサブトークンの特徴の利用どのように実現したか?byte列の表現の粒度提案手法における「語彙数」の定義言語モデルのアーキテクチャ所感提案手法のアプローチはマルチバイト言語に対しても有効か?ReferenceAppendixA. byte単位の表現とn-gram表現の持ち方 Metaが2024年12月13日に公開した論文 "Byte Latent Transformer: Patches Scale Better Than Tokens" [Pagnoni, 2024] を読んだのでその内容をまとめます。 ここで掲載された図は特に説明がない限り全て[Pagnoni, 2024]からの引用で、著作権は著者らに所属します。 これは何?

    byte列を直接処理する言語モデル
    sh19910711
    sh19910711 2025/07/08
    "byte列の「予測しやすさ」に基づいて動的に処理単位を決定 / 動的に決められる処理単位を論文中ではpatchとよび、tokenとは区別 / byte列の「予測しやすさ」の評価にentropyという特徴量"
  • Elasticsearch/LuceneのAnalyzerにおけるトークングラフを理解して適合率と再現率をコントロール - Qiita

    はじめに この記事ではElasticsearch、というかLuceneのAnalyzerの挙動のうち、特にトークングラフという概念について紹介したいと思います。これについてきちんと理解すると、例えば検索時に表記揺れを許容するのか、あるいは厳密に一致したもののみにマッチさせるのかといったチューニングができるようになります。 Elasticsearchでトークングラフを利用するにはSynonym graph token filterを使います。ElasticsearchではトークングラフはクエリーAnalyzerのみ対応していることに注意してください。 トークン Elasticsearchに限らず、検索エンジンは通常内部のデータ構造として転置インデックス(Inverted index)というものを作成します。これは基的に書籍の最後にある索引と全く同じで、どの単語がドキュメントのどこに記載され

    sh19910711
    sh19910711 2025/05/20
    2023 / "トークングラフを用いると、一つの文章を意味や構造を保存しながら複数の言い換えを表現でき / 言い換えでも検索でヒットさせるようにすることができる"
  • 日本語向け教師なしキーフレーズ抽出の検証 - ABEJA Tech Blog

    ABEJAでデータサイエンティストをしている藤原です。 先月開催された 言語処理学会第31回年次大会(NLP2025) に参加し、その際に 埋め込みモデルベースの教師なしキーフレーズ抽出における長文に対する抽出精度の改善 というタイトルで発表を行いました。今回はその発表内容について改めて紹介させていただきます。 発表概要としては、日語のテキストに対して種々の教師なしキーフレーズ抽出手法を統一したインターフェースで実行できるようにツールを整備し、評価用データセットを構築して各種手法の性能比較を行いました。記事では開発したツール・評価データセットなど原稿であまり触れられなかった部分や、より詳細な実験結果についても記載します。 開発したツール・評価データセットはこちらからご利用いただけます。GitHub - flatton/keyphrase_extraction_tools はじめに キー

    日本語向け教師なしキーフレーズ抽出の検証 - ABEJA Tech Blog
    sh19910711
    sh19910711 2025/04/22
    "MDERank: 重要なフレーズほど文章から削除されると、その文章の意味が大きく変化するという仮定 + 元の文章との埋め込みの距離を算出し、距離が大きいほど重要なフレーズとみなす" doi:10.18653/v1/2022.findings-acl.34
  • 第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

    第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案

    第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
    sh19910711
    sh19910711 2025/02/26
    2015 / "N-best: 解釈によって異なる複数のパターンでの分割、複合語の分割を可能にし、再現率の向上を目指す"
  • SentencePieceでの日本語分かち書きをTransformersのパイプラインに組み込む - radiology-nlp’s blog

    背景 PyTorchでHugging Face Transformersを使って自然言語処理を行うとき,文章をモデルに入力するためにはまず単語単位に分かち書き (tokenize) しなければなりません. この前処理が思ったよりもやっかいなのです. 事前学習済みのモデルをTransformers公式から提供されているものから選んでしまえば,ここはあまり問題になりません.Transformers付属のtokenizerを使って一発で分かち書きできるからです. 実際,東北大からTransformersを通じて日語BERT事前学習済みモデルが公開されて久しいので,日語BERTモデルを使うのはだいぶ楽になりました. huggingface.co しかし,別の事前学習済みの日語BERTモデルで,Transformersのプラットフォームに載っていないものはいくつか存在します. これらのモデルを

    SentencePieceでの日本語分かち書きをTransformersのパイプラインに組み込む - radiology-nlp’s blog
    sh19910711
    sh19910711 2024/10/13
    "Transformers: アップデートが進むにつれて分かち書き処理の整備もかなり進んできた / SentencePieceを用いた分かち書きはtransformers仕様に変換できる / モデルをsentencepieceライブラリではなくtokenizersライブラリで読み込み" '21
  • Sentencepiece の分割を MeCab っぽくする - Qiita

    Sentencepieceは公開から約6年経ち、月間のpipダウンロード数が1000万を超え、開発者として嬉しい限りです。ただ、Sentencepieceを使用する際にMeCabなどの形態素解析器を前処理に使うケースが散見されます。単語分割をしたいというニーズは理解できますが、作者としてはあまり満足していません。多言語処理が一般的になり、しかもSentencepieceは言語非依存のシステムであるにもかかわらず、なぜベタな日語処理に依存するのでしょうか。このような使い方は、精度が向上するかもしれませんが、以下のようなデメリットもあります。 形態素解析が入力した空白と、元からある空白を区別できないため、分割されたデータから元の文を復元することができません。(可逆処理ではない)。 形態素解析システムに依存するため、メンテナンス性や可搬性が低下します。正しいバージョンの辞書を維持し、管理するこ

    Sentencepiece の分割を MeCab っぽくする - Qiita
    sh19910711
    sh19910711 2024/10/06
    "Sentencepieceの語彙選択にのみ MeCabを使用 / 分割時にMeCabを使用する必要がなく、Sentencepieceのモデルファイルだけで動作可能になる / MeCabの分割箇所を学習データに出現しないユニークなデリミタ文字列でエンコード"
  • 【形態素解析ツール】Juman++ ver2 の使い方

    Juman++は自然言語処理を行うにあたって必要不可欠な処理である形態素解析を行うツールです。MeCabと比べると処理速度は約1/10となりますが、より高精度の解析が可能で表記揺れや口語表現にも比較的堅牢な解析ができる印象があります。 インストール方法 ソースコードをダウンロードして手元の環境でビルドする必要があります。 対応する環境のインストール方法を参照してください。 Debian系Linux # パッケージの更新&install sudo apt update sudo apt install -y cmake g++ wget xz-utils # ソースをダウンロード wget "https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz" tar xvJf jum

    【形態素解析ツール】Juman++ ver2 の使い方
    sh19910711
    sh19910711 2024/06/19
    "Juman++: MeCabと比べると処理速度は約1/10となりますが、より高精度の解析が可能で表記揺れや口語表現にも比較的堅牢な解析ができる印象 / 伊豆踊り子で試した場合もZipfの法則が成り立つことが確認できます" 2022
  • TfidfVectorizer.fitでtokenizeとidf計算にかかる時間の計測 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    TfidfVectorizer.fitでtokenizeとidf計算にかかる時間の計測 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "なるべく高速なマージ方法を検討したく、その事前準備として、TfidfVectorizer.fitのどの工程に時間がかかっているのかを調査しよう / fitで時間がかかるのは、形態素解析(tokenize)とidfの計算" 2023
  • React + TypeScript + Vite + goya(ブラウザのみで形態素解析) - Qiita

    import { useState, useEffect } from 'react' import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' import goya_core, { parse } from "goya-core/web/goya_core"; //インポート import goya_features, { get_features } from "goya-features/web/goya_features"; //インポート function App() { const [text, setText] = useState("") const [goya, setGoya] = useState([[]]) useEffect(()

    React + TypeScript + Vite + goya(ブラウザのみで形態素解析) - Qiita
    sh19910711
    sh19910711 2024/06/15
    "Goya: Rust で書かれた日本語の形態素解析ツール + ブラウザやその他のJavaScriptランタイムで形態素解析を行うためにWebAssemblyにコンパイル"
  • kuromoji.js + UniDic で形態素解析(辞書のビルド) - Qiita

    UniDic の matrix.def のサイズが間違っていたので修正しました: 59G → 5.9G kuromoji.js (日形態素解析器 Kuromoji の JavaScript実装)と React でブラウザアプリを作っています。kuromoji.js はデフォルトでは IPADic (mecab-ipadic-20070801) を利用していますが、IPADic は現時点では更新が止まっており、辞書は新しいのがよい…… ということで、今回は UniDic 最新版(unidic-cwj-202302)を kuromoji.js 用にビルドして使ってみることにしました。 結果として、ブラウザアプリで UniDic 最新版を使って形態素解析を動かすことができました。 ただし、UniDic は IPADic に比べてデータ量が多いことに注意が必要です。パソコンのブラウザ(自分の

    kuromoji.js + UniDic で形態素解析(辞書のビルド) - Qiita
    sh19910711
    sh19910711 2024/06/13
    "kuromoji.js: デフォルトでは IPADic + IPADic は現時点では更新が止まって ~ / UniDic: IPADic に比べてデータ量が多い + スマホでは、トークナイザのロードにめちゃくちゃ時間がかかったあと、形態素解析がうまく動きませんでした"
  • darts-cloneを使って最長一致法で分かち書きしてみる - 株式会社ホクソエムのブログ

    ホクソエムサポーターの白井です。 呪術廻戦をみて喜久福がべたくなりました *1。 今回は形態素解析について深堀りしてみます。 日語の自然言語処理において、形態素解析は必ずといっていいほど通る道です。 形態素解析を必要としないSentencePieceのような深層学習向けのtokenizerも出現していますが、品詞単位で分割する形態素解析が重要であることは変わりありません。 そんなこんなで、『実践・自然言語処理シリーズ2 形態素解析の理論と実装』 (以降「形態素解析」と表記)を読んでいます。 リンク先の目次を見て分かるとおり、基礎の部分から実装まで説明されているです。 今回は4章で紹介されている darts-clone を使って、精度は粗いが高速で分かち書きができる最長一致法で、どれぐらい分かち書きが可能かを検証します。 事前知識・辞書引き darts-cloneを使ってみる 単語辞

    darts-cloneを使って最長一致法で分かち書きしてみる - 株式会社ホクソエムのブログ
    sh19910711
    sh19910711 2024/06/12
    "日本語の自然言語処理において、形態素解析は必ずといっていいほど通る道 / 最長一致法: 最初の文字から共通接頭辞検索し、一番長く一致した単語を採用する、ルールベースの分かち書き" 2020
  • pyknpで形態素解析と構文解析をする方法【python】

    はじめに こんにちは。 aiチャットボットを作る時は自然言語処理(NLP)をする必要があります。 その自然言語処理には、形態素解析や構文解析、意味解析などの工程があります。 この記事では形態素解析も構文解析も出来るpyknpの使い方を解説します。 ※インストール方法はネットに載っている情報でお願いします。 pyknpとは pyknpとは、京都大学が作ったknpとjumanをpythonで使うためのライブラリです。 因みに、knpは構文解析をするためのもので、jumanは形態素解析をするためのものです。 しかし、knpはjumanに依存しているので、knpだけで形態素解析も構文解析も出来ます(多分、コマンドラインでは構文解析しか出来ないと思います) 以下ホームページなど。 形態素解析をする方法 まず、形態素解析をする方法から説明します。 pyknpで形態素解析をする方法は二つあり、一つ目はj

    pyknpで形態素解析と構文解析をする方法【python】
    sh19910711
    sh19910711 2024/06/12
    "自然言語処理には、形態素解析や構文解析、意味解析などの工程 / pyknp: 京都大学が作ったknpとjumanをpythonで使うためのライブラリ / 形態素解析と構文解析ごとにライブラリを使わなくて良いのでとても楽"
  • 無料版Herokuで「Mecab+軽量化NEologd」を使った形態素解析に成功した

    新語などに対応したNEologd+Macabを使った形態素解析Heroku上で行うことに成功したので軽量化手法とともにご紹介します。 手順だけ教えろって方は後半を見てください。 (どうせ来月には忘れている自分のためです) NEologdはHerokuで使えない 「mecab-ipadic-neologd」とはMacabを新語などに対応させた辞書のことで、例えば通常のMecab辞書だと「鬼滅の刃」は一つの固有名詞だと認識できません。 しかしNEologdを辞書として使うとことで固有名詞として形態素解析を行ってくれます。 $ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd 小宮果穂 名詞,固有名詞,人名,一般,*,*,小宮果穂,コミヤカホ,コミヤカホ EOS 軽量化すればいい! ネット上にある殆どの記事は「無

    無料版Herokuで「Mecab+軽量化NEologd」を使った形態素解析に成功した
    sh19910711
    sh19910711 2024/06/12
    "Herokuの無料枠では容量制限500MB / しかし、公式ドキュメントにて提示されている軽量化手法を使えば制限をかいくぐって使うことが可能 / 辞書のビルド時に --eliminate-redundant-entry パラメータを渡す" 2022