catalyst 속도를 위해 만들어진 C# 자연어 처리 라이브러리입니다. spaCy의 디자인에서 영감을 받은 이 제품은 사전 훈련된 모델, 단어 및 문서 임베딩 훈련을 위한 기본 지원, 유연한 엔터티 인식 모델을 제공합니다.
모든 언어별 데이터 및 모델은 NuGet 패키지로 제공되며 여기에서 모든 패키지를 찾을 수 있습니다.
새 모델은 최신 릴리스인 Universal 종속성 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 ( ) ;
빠른 임베딩 검색을 위해 Microsoft HNSW.Net 포크를 기반으로 NuGet에서 "Hierarchical Navigable Small World"(HNSW) 알고리즘의 C# 버전도 출시했습니다. 또한 GitHub 및 NuGet에서 차원 축소를 위한 "UMAP(Uniform Manifold Approximation and Projection)" 알고리즘의 C# 버전을 출시했습니다.
선적 서류 비치 | |
---|---|
기여하다 | catalyst 코드베이스에 기여하는 방법. |
샘플 | catalyst 기능을 보여주는 샘플 프로젝트 |
Gitter 채널에 가입하세요 |