catalyst速度を重視して構築された C# 自然言語処理ライブラリです。 spaCy の設計に触発されており、事前トレーニングされたモデル、単語とドキュメントの埋め込みをトレーニングするためのすぐに使用できるサポート、および柔軟なエンティティ認識モデルを提供します。
すべての言語固有のデータとモデルは NuGet パッケージとして提供されます。すべてのパッケージはここで見つけることができます。
新しいモデルは、Universal dependency v2.7 の最新リリースでトレーニングされています。
ストリームを使用してモデルを保存およびロードするオプションも追加しました。
// Creates and stores the model
var isApattern = new PatternSpotter ( Language . English , 0 , tag : " is-a-pattern " , captureTag : " IsA " ) ;
isApattern . NewPattern (
" Is+Noun " ,
mp => mp . Add (
new PatternUnit ( P . Single ( ) . WithToken ( " is " ) . WithPOS ( PartOfSpeech . VERB ) ) ,
new PatternUnit ( P . Multiple ( ) . WithPOS ( PartOfSpeech . NOUN , PartOfSpeech . PROPN , PartOfSpeech . AUX , PartOfSpeech . DET , PartOfSpeech . ADJ ) )
) ) ;
using ( var f = File . OpenWrite ( " my-pattern-spotter.bin " ) )
{
await isApattern . StoreAsync ( f ) ;
}
// Load the model back from disk
var isApattern2 = new PatternSpotter ( Language . English , 0 , tag : " is-a-pattern " , captureTag : " IsA " ) ;
using ( var f = File . OpenRead ( " my-pattern-spotter.bin " ) )
{
await isApattern2 . LoadAsync ( f ) ;
}
catalystの使用は、NuGet パッケージをインストールし、オンライン リポジトリを使用するようにストレージを設定するだけで簡単です。このようにして、モデルはディスクから遅延ロードされるか、オンライン リポジトリからダウンロードされます。 catalystの使用方法に関するその他の例については、いくつかのサンプル プロジェクトも確認してください。
catalyst . Models . English . Register ( ) ; //You need to pre-register each language (and install the respective NuGet Packages)
Storage . Current = new DiskStorage ( " catalyst -models " ) ;
var nlp = await Pipeline . ForAsync ( Language . English ) ;
var doc = new Document ( " The quick brown fox jumps over the lazy dog " , Language . English ) ;
nlp . ProcessSingle ( doc ) ;
Console . WriteLine ( doc . ToJson ( ) ) ;
C# の遅延評価とネイティブ マルチスレッド サポートを利用して、多数のドキュメントを並行して処理することもできます。
var docs = GetDocuments ( ) ;
var parsed = nlp . Process ( docs ) ;
DoSomething ( parsed ) ;
IEnumerable < IDocument > GetDocuments ( )
{
//Generates a few documents, to demonstrate multi-threading & lazy evaluation
for ( int i = 0 ; i < 1000 ; i ++ )
{
yield return new Document ( " The quick brown fox jumps over the lazy dog " , Language . English ) ;
}
}
void DoSomething ( IEnumerable < IDocument > docs )
{
foreach ( var doc in docs )
{
Console . WriteLine ( doc . ToJson ( ) ) ;
}
}
新しい FastText word2vec 埋め込みモデルのトレーニングは次のように簡単です。
var nlp = await Pipeline . ForAsync ( Language . English ) ;
var ft = new FastText ( Language . English , 0 , " wiki-word2vec " ) ;
ft . Data . Type = FastText . ModelType . CBow ;
ft . Data . Loss = FastText . LossType . NegativeSampling ;
ft . Train ( nlp . Process ( GetDocs ( ) ) ) ;
ft . StoreAsync ( ) ;
高速な埋め込み検索のために、Microsoft の HNSW.Net のフォークをベースにした「Hierarchical Navigable Small World」(HNSW) アルゴリズムの C# バージョンも NuGet でリリースしました。また、次元削減のための「均一多様体近似および射影」(UMAP) アルゴリズムの C# バージョンを GitHub と NuGet でリリースしました。
ドキュメント | |
---|---|
貢献する | catalystコードベースに貢献する方法。 |
サンプル | catalyst機能を実証するサンプル プロジェクト |
gitter チャンネルに参加してください |