catalyst — это библиотека обработки естественного языка C#, созданная для повышения скорости. Вдохновленный дизайном SpaCy, он предлагает предварительно обученные модели, готовую поддержку для обучения встраиванию слов и документов, а также гибкие модели распознавания сущностей.
Все данные и модели для конкретного языка предоставляются в виде пакетов NuGet. Все пакеты можно найти здесь.
Новые модели обучены на последней версии Universal Dependency v2.7.
Мы также добавили возможность хранить и загружать модели с помощью потоков:
// 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 ) ;
}
Использовать catalyst так же просто, как установить его пакет NuGet и настроить хранилище для использования нашего онлайн-репозитория. Таким образом, модели будут загружаться либо с диска, либо из нашего онлайн-репозитория. Ознакомьтесь также с некоторыми примерами проектов, чтобы узнать больше о том, как использовать 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 ( ) ) ;
Вы также можете воспользоваться преимуществами отложенных вычислений C# и встроенной поддержки многопоточности для параллельной обработки большого количества документов:
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 ( ) ) ;
}
}
Обучение новой модели внедрения FastText word2vec происходит так же просто:
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 ( ) ;
Для быстрого встраивания поиска мы также выпустили версию C# алгоритма «Hierarchical Navigable Small World» (HNSW) на NuGet, основанную на нашем ответвлении Microsoft HNSW.Net. Мы также выпустили версию C# алгоритма «Uniform Manifold Approximation and Projection» (UMAP) для уменьшения размерности на GitHub и NuGet.
Документация | |
---|---|
Способствовать | Как внести свой вклад в кодовую базу catalyst . |
Образцы | Примеры проектов, демонстрирующих возможности catalyst |
Присоединяйтесь к нашему каналу Gitter |