catalyst est une bibliothèque de traitement du langage naturel C# conçue pour la vitesse. Inspiré par la conception de spaCy, il apporte des modèles pré-entraînés, une prise en charge prête à l'emploi pour l'entraînement de l'intégration de mots et de documents, ainsi que des modèles flexibles de reconnaissance d'entités.
Toutes les données et modèles spécifiques à la langue sont fournis sous forme de packages NuGet, vous pouvez trouver tous les packages ici.
Les nouveaux modèles sont formés sur la dernière version de Universal Dependencies v2.7.
Nous avons également ajouté la possibilité de stocker et de charger des modèles à l'aide de flux :
// 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 ) ;
}
Utiliser catalyst est aussi simple que d'installer son package NuGet et de configurer le stockage pour utiliser notre référentiel en ligne. De cette façon, les modèles seront chargés paresseux soit à partir du disque, soit téléchargés depuis notre référentiel en ligne. Consultez également certains exemples de projets pour plus d'exemples sur la façon d'utiliser 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 ( ) ) ;
Vous pouvez également profiter de l’évaluation paresseuse de C# et de la prise en charge native du multithreading pour traiter un grand nombre de documents en parallèle :
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 ( ) ) ;
}
}
La formation d'un nouveau modèle d'intégration FastText word2vec est aussi simple que ceci :
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 ( ) ;
Pour une recherche d'intégration rapide, nous avons également publié une version C# de l'algorithme « Hierarchical Navigable Small World » (HNSW) sur NuGet, basé sur notre fork de HNSW.Net de Microsoft. Nous avons également publié une version C# de l'algorithme « Uniform Manifold Approximation and Projection » (UMAP) pour la réduction de dimensionnalité sur GitHub et sur NuGet.
Documentation | |
---|---|
Contribuer | Comment contribuer à la base de code catalyst . |
Échantillons | Exemples de projets démontrant les capacités catalyst |
Rejoignez notre chaîne gitter |