Skip to content

Commit

Permalink
Merge branch 'ltp-unittest' of https://github.com/HIT-SCIR/ltp into p…
Browse files Browse the repository at this point in the history
…arser
  • Loading branch information
ruoshui1126 committed May 8, 2014
2 parents edc5e47 + 1704112 commit ef5f462
Show file tree
Hide file tree
Showing 148 changed files with 32,459 additions and 1,157 deletions.
8 changes: 7 additions & 1 deletion examples/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
all: cws cws_cmdline multi_cws_cmdline \
pos pos_cmdline multi_pos_cmdline \
par \
ner
ner \
srl

cws: cws.cpp
g++ -o cws cws.cpp -I./ \
Expand Down Expand Up @@ -58,6 +59,10 @@ par: par.cpp
g++ -o par par.cpp -I./ \
-I../src/parser/ \
-L../lib -lparser
srl: srl.cpp
g++ -o srl srl.cpp -I./ \
-I../src/srl/ \
-L../lib -lsrl

.PHONY: clean

Expand All @@ -68,5 +73,6 @@ clean:
rm pos_cmdline
rm ner
rm par
rm srl
rm multi_cws_cmdline
rm multi_pos_cmdline
38 changes: 38 additions & 0 deletions examples/srl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <iostream>
#include <vector>

#include "SRL_DLL.h"

int main(int argc, char * argv[]) {
if (argc < 2) {
return -1;
}

SRL_LoadResource(argv[1]);

std::vector<std::string> words;
std::vector<std::string> postags;
std::vector<std::string> nes;
std::vector<std::pair<int,std::string> > parse;
std::vector< std::pair< int, std::vector< std::pair<std::string, std::pair< int, int > > > > > srl;
words.push_back("一把手"); postags.push_back("n"); nes.push_back("O"); parse.push_back(make_pair(2,"SBV"));
words.push_back("亲自"); postags.push_back("d"); nes.push_back("O"); parse.push_back(make_pair(2,"ADV"));
words.push_back("过问"); postags.push_back("v"); nes.push_back("O"); parse.push_back(make_pair(-1,"HED"));
words.push_back(""); postags.push_back("wp");nes.push_back("O"); parse.push_back(make_pair(2,"WP"));

DoSRL(words,postags,nes,parse,srl);

for(int i = 0;i<srl.size();++i) {
std::cout<<srl[i].first<<":"<<std::endl;
for(int j = 0;j<srl[i].second.size();++j) {
std::cout<<" tpye = "<<srl[i].second[j].first
<<" beg = "<<srl[i].second[j].second.first
<<" end = "<<srl[i].second[j].second.second
<<std::endl;
}
}

SRL_ReleaseResource();
return 0;
}

1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ add_subdirectory ("ner")
add_subdirectory ("parser")
add_subdirectory ("srl")
add_subdirectory ("__ltp_dll")
add_subdirectory ("unittest")

# mongoose server is not supported in windows
if (NOT WIN32)
Expand Down
1 change: 0 additions & 1 deletion src/__xml4nlp/Xml4nlp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1447,4 +1447,3 @@ int XML4NLP::ClearNote(const char *cszNoteName) {
note.nodePtr->SetAttribute(cszNoteName, "n");
return 0;
}

10 changes: 5 additions & 5 deletions src/__xml4nlp/Xml4nlp.h
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ class XML4NLP {
static const char * const TAG_PARA;
static const char * const TAG_SENT;
static const char * const TAG_WORD;
static const char * const TAG_CONT; //sent, word
static const char * const TAG_CONT; //sent, word
static const char * const TAG_POS;
static const char * const TAG_NE;
static const char * const TAG_WSD;
Expand All @@ -818,9 +818,9 @@ class XML4NLP {
static const char * const TAG_PSR_RELATE;
static const char * const TAG_SRL_ARG;
static const char * const TAG_SRL_TYPE;
static const char * const TAG_BEGIN; // cr, srl
static const char * const TAG_END; // cr, srl
static const char * const TAG_ID; // para, sent, word
static const char * const TAG_BEGIN; // cr, srl
static const char * const TAG_END; // cr, srl
static const char * const TAG_ID; // para, sent, word
};

#endif // end for __LTP_XML4NLP_H__
#endif // end for __LTP_XML4NLP_H__
6 changes: 1 addition & 5 deletions src/ner/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
include_directories (
${SOURCE_DIR}/ner
${SOURCE_DIR}/utils
${SOURCE_DIR}/utils/math)
# ${THIRDPARTY_DIR}/boost/include)
include_directories (${SOURCE_DIR}/ ${THIRDPARTY_DIR}/boost/include/)

set (ner_VERSION "0.0.1")

Expand Down
130 changes: 65 additions & 65 deletions src/ner/decoder.cpp
Original file line number Diff line number Diff line change
@@ -1,103 +1,103 @@
#include "decoder.h"
#include "ner/decoder.h"

namespace ltp {
namespace ner {

void Decoder::decode(Instance * inst) {
init_lattice(inst);
viterbi_decode(inst);
get_result(inst);
free_lattice();
init_lattice(inst);
viterbi_decode(inst);
get_result(inst);
free_lattice();
}

void Decoder::init_lattice(const Instance * inst) {
int len = inst->size();
lattice.resize(len, L);
lattice = NULL;
int len = inst->size();
lattice.resize(len, L);
lattice = NULL;
}

void Decoder::viterbi_decode(const Instance * inst) {
int len = inst->size();
for (int i = 0; i < len; ++ i) {
for (int l = 0; l < L; ++ l) {
if (i == 0) {
LatticeItem * item = new LatticeItem(i, l, inst->uni_scores[i][l], NULL);
lattice_insert(lattice[i][l], item);
} else {
for (int pl = 0; pl < L; ++ pl) {
if (false == base.legal_trans(pl, l)) {
continue;
}

double score = 0.;
const LatticeItem * prev = lattice[i-1][pl];

if (!prev) {
continue;
}

// std::cout << i << " " << pl << " " << l << std::endl;
score = inst->uni_scores[i][l] + inst->bi_scores[pl][l] + prev->score;
const LatticeItem * item = new LatticeItem(i, l, score, prev);
lattice_insert(lattice[i][l], item);
}
} // end for if i == 0
int len = inst->size();
for (int i = 0; i < len; ++ i) {
for (int l = 0; l < L; ++ l) {
if (i == 0) {
LatticeItem * item = new LatticeItem(i, l, inst->uni_scores[i][l], NULL);
lattice_insert(lattice[i][l], item);
} else {
for (int pl = 0; pl < L; ++ pl) {
if (false == base.legal_trans(pl, l)) {
continue;
}

double score = 0.;
const LatticeItem * prev = lattice[i-1][pl];

if (!prev) {
continue;
}

// std::cout << i << " " << pl << " " << l << std::endl;
score = inst->uni_scores[i][l] + inst->bi_scores[pl][l] + prev->score;
const LatticeItem * item = new LatticeItem(i, l, score, prev);
lattice_insert(lattice[i][l], item);
}
} // end for if i == 0
}
}
}

void Decoder::get_result(Instance * inst) {
int len = inst->size();
const LatticeItem * best_item = NULL;
for (int l = 0; l < L; ++ l) {
if (!lattice[len-1][l]) {
continue;
}
if (best_item == NULL || (lattice[len-1][l]->score > best_item->score)) {
best_item = lattice[len - 1][l];
}
int len = inst->size();
const LatticeItem * best_item = NULL;
for (int l = 0; l < L; ++ l) {
if (!lattice[len-1][l]) {
continue;
}
if (best_item == NULL || (lattice[len-1][l]->score > best_item->score)) {
best_item = lattice[len - 1][l];
}
}

const LatticeItem * item = best_item;
inst->predicted_tagsidx.resize(len);
const LatticeItem * item = best_item;
inst->predicted_tagsidx.resize(len);

while (item) {
inst->predicted_tagsidx[item->i] = item->l;
// std::cout << item->i << " " << item->l << std::endl;
item = item->prev;
}
while (item) {
inst->predicted_tagsidx[item->i] = item->l;
// std::cout << item->i << " " << item->l << std::endl;
item = item->prev;
}
}

void Decoder::free_lattice() {
for (int i = 0; i < lattice.nrows(); ++ i) {
for (int j = 0; j < lattice.ncols(); ++ j) {
if (lattice[i][j]) delete lattice[i][j];
}
for (int i = 0; i < lattice.nrows(); ++ i) {
for (int j = 0; j < lattice.ncols(); ++ j) {
if (lattice[i][j]) delete lattice[i][j];
}
}
}

/*void KBestDecoder::decode(Instance * inst, KBestDecodeResult & result) {
init_lattice(inst);
kbest_viterbi_decode(inst);
get_result(result);
free_lattice();
init_lattice(inst);
kbest_viterbi_decode(inst);
get_result(result);
free_lattice();
}
void KBestDecoder::init_lattice(const Instance * inst) {
int len = inst->len();
lattice.resize(len, L);
int len = inst->len();
lattice.resize(len, L);
for (int i = 0; i < len; ++ i) {
for (int l = 0; l < L; ++ l) {
lattice[i][l] = new KHeap<LatticeItem>(k);
}
for (int i = 0; i < len; ++ i) {
for (int l = 0; l < L; ++ l) {
lattice[i][l] = new KHeap<LatticeItem>(k);
}
}
}
void KBestDecoder::kbest_viterbi_decode(const Instance * inst) {
}*/


} // end for namespace ner
} // end for namespace ltp
} // end for namespace ner
} // end for namespace ltp

6 changes: 3 additions & 3 deletions src/ner/decoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

#include <iostream>
#include <vector>
#include "instance.h"
#include "mat.h"
#include "rulebase.h"
#include "ner/instance.h"
#include "ner/rulebase.h"
#include "utils/math/mat.h"

namespace ltp {
namespace ner {
Expand Down
9 changes: 4 additions & 5 deletions src/ner/extractor.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#include "extractor.h"
#include "settings.h"

#include "strutils.hpp"
#include "chartypes.hpp"
#include "ner/extractor.h"
#include "ner/settings.h"
#include "utils/strutils.hpp"
#include "utils/chartypes.hpp"

namespace ltp {
namespace ner {
Expand Down
7 changes: 3 additions & 4 deletions src/ner/extractor.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@

#include <iostream>
#include <vector>
#include "instance.h"

#include "template.hpp"
#include "strvec.hpp"
#include "ner/instance.h"
#include "utils/template.hpp"
#include "utils/strvec.hpp"

namespace ltp {
namespace ner {
Expand Down
5 changes: 2 additions & 3 deletions src/ner/featurespace.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "featurespace.h"

#include "extractor.h"
#include "ner/featurespace.h"
#include "ner/extractor.h"

namespace ltp {
namespace ner {
Expand Down
2 changes: 1 addition & 1 deletion src/ner/featurespace.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <iostream>
#include <vector>

#include "smartmap.hpp"
#include "utils/smartmap.hpp"

namespace ltp {
namespace ner {
Expand Down
37 changes: 0 additions & 37 deletions src/ner/featurevec.h

This file was deleted.

Loading

0 comments on commit ef5f462

Please sign in to comment.