catalyst ist eine C#-Bibliothek zur Verarbeitung natürlicher Sprache, die auf Geschwindigkeit ausgelegt ist. Inspiriert durch das Design von spaCy bietet es vorab trainierte Modelle, sofort einsatzbereite Unterstützung für das Training von Wort- und Dokumenteinbettungen sowie flexible Entitätserkennungsmodelle.
Alle sprachspezifischen Daten und Modelle werden als NuGet-Pakete bereitgestellt, alle Pakete finden Sie hier.
Die neuen Modelle werden auf der neuesten Version von Universal Dependencies v2.7 trainiert.
Wir haben außerdem die Option zum Speichern und Laden von Modellen mithilfe von Streams hinzugefügt:
// 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 ) ;
}
Die Verwendung von catalyst ist so einfach wie die Installation des NuGet-Pakets und die Einrichtung des Speichers für die Verwendung unseres Online-Repositorys. Auf diese Weise werden Modelle verzögert entweder von der Festplatte geladen oder aus unserem Online-Repository heruntergeladen. Schauen Sie sich auch einige der Beispielprojekte an, um weitere Beispiele für die Verwendung catalyst zu erhalten.
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 ( ) ) ;
Sie können auch die verzögerte C#-Auswertung und die native Multithreading-Unterstützung nutzen, um eine große Anzahl von Dokumenten parallel zu verarbeiten:
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 ( ) ) ;
}
}
Das Trainieren eines neuen FastText word2vec-Einbettungsmodells ist so einfach:
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 ( ) ;
Für eine schnelle Einbettungssuche haben wir außerdem eine C#-Version des „Hierarchical Navigable Small World“ (HNSW)-Algorithmus auf NuGet veröffentlicht, die auf unserem Fork von Microsofts HNSW.Net basiert. Wir haben außerdem eine C#-Version des UMAP-Algorithmus (Uniform Manifold Approximation and Projection) zur Dimensionsreduzierung auf GitHub und NuGet veröffentlicht.
Dokumentation | |
---|---|
Beitragen | So tragen Sie zur catalyst -Codebasis bei. |
Proben | Beispielprojekte zur Demonstration catalyst |
Treten Sie unserem Gitter-Kanal bei |