LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
ner.h
Go to the documentation of this file.
1// Copyright 2021 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6#ifndef DEEPLIMA_NER_H
7#define DEEPLIMA_NER_H
8
9#include "config.h"
10
11#include "nets/birnn_seq_cls.h"
12
13#if DEEPLIMA_INFERENCE_ENGINE == IE_TORCH
14
15//#include "torch_wrp/dict_vectorizer.h"
16//#include "static_graph/dict.h"
17
18#endif
19
20#if DEEPLIMA_INFERENCE_ENGINE == IE_EIGEN
21
23#include "eigen_wrp/embd_dict.h"
26
27#endif
28
31#include "feat_extractors.h"
32
33namespace deeplima
34{
35namespace tagging
36{
37
38#if DEEPLIMA_INFERENCE_ENGINE == IE_TORCH
39
40namespace torch_impl
41{
42 //typedef impl::SegmentationInferenceWrapper<train::BiRnnClassifierForSegmentationImpl> Model;
43 //typedef DictVectorizer<DictsHolder, UInt64Dict, TorchMatrix<int64_t>> EmbdVectorizer;
44
45} // namespace torch_impl
46
47#elif DEEPLIMA_INFERENCE_ENGINE == IE_EIGEN
48
49namespace eigen_impl
50{
51 template <typename AuxScalar=float>
52 class Model : public impl::TaggingInferenceWrapper<BiRnnEigenInferenceForTagging<AuxScalar>>
53 {};
54
55 typedef DictEmbdVectorizer<EmbdUInt64FloatHolder, EmbdUInt64Float, eigen_wrp::EigenMatrixXf> EmbdVectorizer;
56 /*typedef WordSeqEmbdVectorizer<token_buffer_t,
57 TokenStrFeatExtractor<token_buffer_t::token_t>,
58 TokenUIntFeatExtractor<token_buffer_t::token_t>,
59 eigen_wrp::EigenMatrixXf> FeaturesVectorizer;*/
60
61 template <class TokenVector, class Token>
62 class FeaturesVectorizer:
63 public vectorizers::WordSeqEmbdVectorizer<TokenVector,
64 TokenStrFeatExtractor<Token>,
65 TokenUIntFeatExtractor<Token>,
66 eigen_wrp::EigenMatrixXf::matrix_t,
67 Eigen::Index>
68 {};
69
70 template <class TokenVector, class Token>
71 class FeaturesVectorizerWithCache:
72 public vectorizers::WordSeqEmbdVectorizerWithCache<TokenVector,
73 TokenStrFeatExtractor<Token>,
74 TokenUIntFeatExtractor<Token>,
75 eigen_wrp::EigenMatrixXf::matrix_t,
76 Eigen::Index>
77 {};
78
79 template <class Model, class TokenVector, class Token>
80 class FeaturesVectorizerWithPrecomputing:
81 public vectorizers::WordSeqEmbdVectorizerWithPrecomputing<Model,
82 TokenVector,
83 TokenStrFeatExtractor<Token>,
84 TokenUIntFeatExtractor<Token>,
85 eigen_wrp::EigenMatrixXf::matrix_t,
86 Eigen::Index>
87 {};
88
89} // namespace eigen_impl
90
91#else
92#error Unknown inference engine
93#endif
94
95namespace impl
96{
97#if DEEPLIMA_INFERENCE_ENGINE == IE_TORCH
98
99 //typedef torch_impl::Model Model;
100 //typedef torch_impl::EmbdVectorizer EmbdVectorizer;
101
102#elif DEEPLIMA_INFERENCE_ENGINE == IE_EIGEN
103
104 template <typename AuxScalar=float>
105 class Model : public eigen_impl::Model<AuxScalar>
106 {};
107
108 template <class TokenVector, class Token>
109 class FeaturesVectorizer: public eigen_impl::FeaturesVectorizer<TokenVector, Token> {};
110
111 template <class TokenVector, class Token>
112 class FeaturesVectorizerWithCache: public eigen_impl::FeaturesVectorizerWithCache<TokenVector, Token> {};
113
114 template <class Model, class TokenVector, class Token>
115 class FeaturesVectorizerWithPrecomputing: public eigen_impl::FeaturesVectorizerWithPrecomputing<Model, TokenVector, Token> {};
116
117 typedef eigen_wrp::EigenMatrixXf BaseMatrix;
118
119#else
120#error Unknown inference engine
121#endif
122
127 template <typename AuxScalar=float>
128 class EntityTaggingClassifier: public RnnSequenceClassifier<Model<AuxScalar>, BaseMatrix, uint8_t>
129 {
130 public:
132 RnnSequenceClassifier<Model<AuxScalar>, BaseMatrix, uint8_t>()
133 {
134 }
135
136 // EntityTaggingClassifier(uint32_t max_feat,
137 // uint32_t overlap,
138 // uint32_t num_slots,
139 // uint32_t slot_len,
140 // uint32_t num_threads) :
141 // RnnSequenceClassifier<Model<AuxScalar>, BaseMatrix, uint8_t>(
142 // max_feat, overlap, num_slots, slot_len, num_threads)
143 // {
144 // }
145
146 virtual ~EntityTaggingClassifier() = default;
147 };
148
149} // namespace impl
150
151} // namespace tagging
152} // namespace deeplima
153
154#endif
Handles multithreading.
A kind of RnnSequenceClassifier, used for named entities tagging (?), but also the parent of TaggingI...
Definition ner.h:129
BiRnnAndDeepBiaffineAttentionEigenInference Model
Definition graph_dp.h:27
DictEmbdVectorizer< EmbdUInt64FloatHolder, EmbdUInt64Float, eigen_wrp::EigenMatrixXf > EmbdVectorizer
Definition graph_dp.h:28