catalyst adalah pustaka Pemrosesan Bahasa Alami C# yang dibuat untuk kecepatan. Terinspirasi oleh desain spaCy, spaCy menghadirkan model terlatih, dukungan siap pakai untuk pelatihan penyematan kata dan dokumen, dan model pengenalan entitas yang fleksibel.
Semua data dan model khusus bahasa disediakan sebagai paket NuGet, Anda dapat menemukan semua paket di sini.
Model baru dilatih pada rilis terbaru Universal Dependencies v2.7.
Kami juga menambahkan opsi untuk menyimpan dan memuat model menggunakan aliran:
// 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 ) ;
}
Menggunakan catalyst semudah menginstal Paket NuGet, dan mengatur penyimpanan untuk menggunakan repositori online kami. Dengan cara ini, model akan lambat dimuat baik dari disk atau diunduh dari repositori online kami. Lihat juga beberapa contoh proyek untuk contoh lebih lanjut tentang cara menggunakan 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 ( ) ) ;
Anda juga dapat memanfaatkan evaluasi malas C# dan dukungan multi-threading asli untuk memproses sejumlah besar dokumen secara paralel:
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 ( ) ) ;
}
}
Melatih model penyematan FastText word2vec baru semudah ini:
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 ( ) ;
Untuk penelusuran penyematan yang cepat, kami juga telah merilis versi C# dari algoritme "Hierarchical Navigable Small World" (HNSW) di NuGet, berdasarkan fork kami di HNSW.Net Microsoft. Kami juga telah merilis algoritma "Uniform Manifold Approximation and Projection" (UMAP) versi C# untuk pengurangan dimensi di GitHub dan NuGet.
Dokumentasi | |
---|---|
Menyumbang | Bagaimana berkontribusi pada basis kode catalyst . |
Sampel | Contoh proyek yang menunjukkan kemampuan catalyst |
Bergabunglah dengan saluran gitter kami |