catalyst é uma biblioteca de processamento de linguagem natural C# desenvolvida para ser rápida. Inspirado no design do spaCy, ele traz modelos pré-treinados, suporte pronto para uso para treinamento de incorporação de palavras e documentos e modelos flexíveis de reconhecimento de entidades.
Todos os dados e modelos específicos da linguagem são fornecidos como pacotes NuGet. Você pode encontrar todos os pacotes aqui.
Os novos modelos são treinados na versão mais recente do Universal Dependencies v2.7.
Também adicionamos a opção de armazenar e carregar modelos usando streams:
// 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 é tão simples quanto instalar seu pacote NuGet e configurar o armazenamento para usar nosso repositório online. Dessa forma, os modelos serão carregados lentamente do disco ou baixados de nosso repositório online. Confira também alguns dos exemplos de projetos para mais exemplos de como usar 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 ( ) ) ;
Você também pode aproveitar a avaliação lenta do C# e o suporte nativo a multithreading para processar um grande número de documentos em 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 ( ) ) ;
}
}
Treinar um novo modelo de incorporação FastText word2vec é tão simples quanto isto:
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 pesquisa de incorporação rápida, também lançamos uma versão C# do algoritmo "Hierarchical Navigable Small World" (HNSW) no NuGet, com base em nosso fork do HNSW.Net da Microsoft. Também lançamos uma versão C# do algoritmo "Uniform Manifold approximation and Projection" (UMAP) para redução de dimensionalidade no GitHub e no NuGet.
Documentação | |
---|---|
Contribuir | Como contribuir para a base de código catalyst . |
Amostras | Exemplos de projetos que demonstram capacidades catalyst |
Junte-se ao nosso canal gitter |