catalyst
1.0.0
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 ( ) ;
为了快速嵌入搜索,我们还在 NuGet 上发布了“分层可导航小世界”(HNSW) 算法的 C# 版本,该算法基于我们的 Microsoft HNSW.Net 分支。我们还在 GitHub 和 NuGet 上发布了用于降维的“统一流形逼近和投影”(UMAP) 算法的 C# 版本。
文档 | |
---|---|
贡献 | 如何为catalyst代码库做出贡献。 |
样品 | 展示catalyst能力的示例项目 |
加入我们的 gitter 频道 |