catalyst es una biblioteca de procesamiento de lenguaje natural C# diseñada para ofrecer velocidad. Inspirado en el diseño de spaCy, ofrece modelos previamente entrenados, soporte listo para usar para entrenar incrustaciones de palabras y documentos y modelos flexibles de reconocimiento de entidades.
Todos los datos y modelos específicos del idioma se proporcionan como paquetes NuGet; puede encontrar todos los paquetes aquí.
Los nuevos modelos están entrenados en la última versión de Universal Dependencies v2.7.
También agregamos la opción de almacenar y cargar modelos usando transmisiones:
// 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 ) ;
}
Usar catalyst es tan simple como instalar su paquete NuGet y configurar el almacenamiento para usar nuestro repositorio en línea. De esta manera, los modelos se cargarán de forma diferida desde el disco o se descargarán desde nuestro repositorio en línea. Consulte también algunos de los proyectos de muestra para obtener más ejemplos sobre cómo utilizar 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 ( ) ) ;
También puede aprovechar la evaluación diferida de C# y el soporte nativo de subprocesos múltiples para procesar una gran cantidad de documentos en paralelo:
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 ( ) ) ;
}
}
Entrenar un nuevo modelo de incrustación de FastText word2vec es tan simple como esto:
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 ( ) ;
Para una búsqueda de integración rápida, también hemos lanzado una versión C# del algoritmo "Hierarchical Navigable Small World" (HNSW) en NuGet, basado en nuestra bifurcación de HNSW.Net de Microsoft. También hemos lanzado una versión C# del algoritmo "Uniform Manifold Approximation and Projection" (UMAP) para la reducción de dimensionalidad en GitHub y NuGet.
Documentación | |
---|---|
Contribuir | Cómo contribuir al código base catalyst . |
Muestras | Proyectos de muestra que demuestran capacidades catalyst . |
Únete a nuestro canal gitter |