natasha/natasha

Solves basic Russian NLP tasks, API for lower level Natasha projects

Natashaとは?

Natashaは、ロシア語テキストを処理するための一連のツールをまとめたPythonライブラリです。NLPパイプライン全体をカバーしています:

  • トークン化と文分割 – Razdelライブラリを使用。
  • 単語埋め込み (Word embeddings) – コンパクトな事前学習済みロシア語ベクトル (Navec)。
  • 形態素解析 – 品詞および文法的特徴 (Slovnet)。
  • 見出し語化 – 単語を辞書形式に変換 (pymorphy2を使用)。
  • 構文解析 – 各文の依存関係ツリー (Slovnet)。
  • 固有表現抽出 (NER) – 人名、場所、組織の検出 (Slovnet)。
  • エンティティの正規化と解析 – エンティティの言及を標準形式に変換し、名前のパーツを抽出。
  • ルールベースの事実抽出 – Yargyを使用 (例:日付、金額、住所)。

すべてのモデルは軽量でCPU上で動作し、本番環境での使用を想定して構築されています(サイズが小さく、メモリ消費が少なく、推論が高速)。


始め方

pip install natasha   # Python 3.7+ or PyPy3

一般的なワークフローは以下の通りです(簡略化):

from natasha import (
    Segmenter, MorphVocab, NewsEmbedding,
    NewsMorphTagger, NewsSyntaxParser, NewsNERTagger,
    NamesExtractor, Doc
)

text = "…your Russian text…"

doc = Doc(text)

# 1️⃣ トークンと文に分割
segmenter = Segmenter()
doc.segment(segmenter)

# 2️⃣ 形態素解析
morph_tagger = NewsMorphTagger(NewsEmbedding())
doc.tag_morph(morph_tagger)

# 3️⃣ 見出し語化
morph_vocab = MorphVocab()
for token in doc.tokens:
    token.lemmatize(morph_vocab)

# 4️⃣ 構文木
syntax_parser = NewsSyntaxParser(NewsEmbedding())
doc.parse_syntax(syntax_parser)

# 5️⃣ NER
ner_tagger = NewsNERTagger(NewsEmbedding())
doc.tag_ner(ner_tagger)

# 6️⃣ エンティティの正規化と解析
for span in doc.spans:
    span.normalize(morph_vocab)
    if span.type == 'PER':
        span.extract_fact(NamesExtractor(morph_vocab))

各ステップで Doc オブジェクトにプロパティ(tokens、sents、spans など)が追加され、それらを検査または視覚化できます(IpymarkupはJupyterでの見やすいレンダリングを提供します)。


Natashaの利用シーン

  • ロシア語専用プロジェクト – ロシア語のニューステキストやその他のドメインに特化しています。
  • CPUのみの環境 – モデルが小さく、GPUを必要としません。
  • 本番パイプライン – 速度、低いメモリフットプリント、安定したAPIを重視しています。
  • フルスタックソリューションが必要な場合 – 機能の一部のみが必要な場合は、個別のサブライブラリ (Razdel, Navec, Slovnet, Yargy) を選択することも可能です。

制限事項

  • モデルはニュースデータで学習されているため、大きく異なるドメインではパフォーマンスが低下する可能性があります。
  • 高レベルAPIは変更される可能性があるため、長期的な安定性が必要な場合は、低レベルのライブラリを直接インポートすることをお勧めします。
  • ロシア語のみサポートされており、多言語機能はありません。

詳細情報

  • ドキュメントと例 – docs.ipynb にあるJupyter notebook。
  • 評価の詳細 – 各コンポーネント(Razdel, Navec, Slovnet)のリンク先セクション。
  • コミュニティ – Telegramチャット、GitHub issues、および著者のラボによる商用サポート。

要約

Natashaは、ロシア語テキストのトークン化、埋め込み、形態素解析、見出し語化、構文解析、NER、ルールベースの事実抽出をまとめた、本番環境対応でCPUフレンドリーなPythonツールキットです。pip install natasha でインストールし、ステップバイステップの例に従って、生のロシア語の文を詳細に注釈付けされた言語構造に変換してください。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト