interpretations.cpp
1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "interpretations.hpp"
#include "Tagset.hpp"
using namespace std;
Interpretation::Interpretation()
: lemma(), tag(), nameClassifier() {
}
Interpretation::Interpretation(const Lemma& lemma, const int tag, const int name)
: lemma(lemma), tag(tag), nameClassifier(name) {
}
StringInterpretation::StringInterpretation(
const string& lemma,
const string& tag,
const string& name)
: lemma(lemma), tag(tag), name(name) {
}
string StringInterpretation::toString() const {
std::stringstream ss;
ss << lemma << ":" << tag << ":" << name;
return ss.str();
}
string LemmaConverter::convertLemma(
const string& orth,
const Lemma& lemma) const {
string res(orth);
res.erase(
res.end() - lemma.suffixToCut,
res.end());
res.append(lemma.suffixToAdd);
return res;
}
InterpretationsConverter::InterpretationsConverter(const unsigned char* data)
: tagset(Tagset(data)) {
}
StringInterpretation InterpretationsConverter::convertInterpretation(
const string& orth,
const Interpretation& interp) const {
string lemma = this->lemmaConverter.convertLemma(orth, interp.lemma);
const string& tag = this->tagset.getTag(interp.tag);
const string& name = this->tagset.getName(interp.nameClassifier);
return StringInterpretation(lemma, tag, name);
}