diff options
author | Paul Baltescu <pauldb89@gmail.com> | 2013-03-07 22:49:46 +0000 |
---|---|---|
committer | Paul Baltescu <pauldb89@gmail.com> | 2013-03-07 22:49:46 +0000 |
commit | 092b7cf020680e949d6956ec6ef2cf012faccd86 (patch) | |
tree | 4bc074572925a10b63928639be244a60f153f7ac /extractor/vocabulary.cc | |
parent | d7271db305bd1aeaf9c3d9ac1043546fec22a402 (diff) |
Parallelized grammar extraction.
Diffstat (limited to 'extractor/vocabulary.cc')
-rw-r--r-- | extractor/vocabulary.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/extractor/vocabulary.cc b/extractor/vocabulary.cc index 57f564d9..15795d1e 100644 --- a/extractor/vocabulary.cc +++ b/extractor/vocabulary.cc @@ -5,14 +5,18 @@ namespace extractor { Vocabulary::~Vocabulary() {} int Vocabulary::GetTerminalIndex(const string& word) { - if (!dictionary.count(word)) { - int word_id = words.size(); - dictionary[word] = word_id; - words.push_back(word); - return word_id; + int word_id = -1; + #pragma omp critical (vocabulary) + { + if (!dictionary.count(word)) { + word_id = words.size(); + dictionary[word] = word_id; + words.push_back(word); + } else { + word_id = dictionary[word]; + } } - - return dictionary[word]; + return word_id; } int Vocabulary::GetNonterminalIndex(int position) { @@ -24,11 +28,10 @@ bool Vocabulary::IsTerminal(int symbol) { } string Vocabulary::GetTerminalValue(int symbol) { - return words[symbol]; -} - -int Vocabulary::Size() { - return words.size(); + string word; + #pragma omp critical (vocabulary) + word = words[symbol]; + return word; } } // namespace extractor |