Skip to content
Snippets Groups Projects
Commit 454d807c authored by Alexis Nasr's avatar Alexis Nasr
Browse files

Merge branch 'johannes' into 'master'

Johannes

See merge request !9
parents 8328bb18 b6d49a3f
No related branches found
No related tags found
1 merge request!9Johannes
Showing
with 493 additions and 175 deletions
...@@ -28,6 +28,9 @@ The basic procedure to build and install macaon from sources is the following. ...@@ -28,6 +28,9 @@ The basic procedure to build and install macaon from sources is the following.
or or
sudo apt-get install openjdk-7-jdk sudo apt-get install openjdk-7-jdk
Attention: if you have libpython2.7-dev and libpython3.X-dev installed, cmake will choose the latter
in this case the generated libraries for Python will only work with Python 3
- Build the sources with: - Build the sources with:
make make
- Install macaon - Install macaon
......
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
sudo make install
cmake ..
make
sudo make install
...@@ -3,122 +3,29 @@ if(MACA_EXPORT) ...@@ -3,122 +3,29 @@ if(MACA_EXPORT)
FIND_PACKAGE(SWIG) FIND_PACKAGE(SWIG)
if (SWIG_FOUND) if (SWIG_FOUND)
FIND_PACKAGE(PythonLibs) FIND_PACKAGE(PythonLibs)
if(PYTHONLIBS_FOUND) if(PYTHONLIBS_FOUND)
set(SOURCES src/maca_export.i) message(STATUS "OK: PythonLibs ${PYTHONLIBS_VERSION_STRING} found. Run your python scripts with python ${PYTHONLIBS_VERSION_STRING}!")
set(PYTHON_MODULE_NAME Macaon)
include_directories(${PYTHON_INCLUDE_PATH})
include_directories(../maca_trans_parser/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
#message(eeeeeeeeeeee ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_py.cc
COMMAND swig -python -c++ -o maca_export_py.cc ../../maca_export/src/maca_export.i
)
# Specify the lib
add_library(${PYTHON_MODULE_NAME} SHARED
maca_export_py.cc
src/maca_trans_tagger_export.cc
src/maca_lemmatizer_export.cc
src/maca_trans_parser_export.cc
)
set_target_properties(${PYTHON_MODULE_NAME} PROPERTIES PREFIX _)
target_link_libraries(${PYTHON_MODULE_NAME} transparse maca_common perceptron)
else()
message("pythonlibs not installed on your system")
endif() endif()
FIND_PACKAGE(Java 1.7) FIND_PACKAGE(Java 1.7)
# if (Java_FOUND OR JAVA_FOUND)
# message(STATUS "OK: Java ${Java_VERSION_STRING} found")
FIND_PACKAGE(JNI) FIND_PACKAGE(JNI)
if (JNI_FOUND AND (Java_FOUND OR JAVA_FOUND)) # if (JNI_FOUND)
set(JAVA_MODULE_NAME Macaon) # message(STATUS "OK: JNI found")
set(JAVA_LIBRARY MacaonJava) # endif()
set(JAVA_CLASS_TAGGER MacaonTransTagger) # endif()
set(JAVA_CLASS_LEMMATIZER MacaonTransLemmatizer)
set(JAVA_CLASS_TRANSPARSER MacaonTransParser)
set(JAVA_PACKAGE lif)
set(JAR_FILENAME macaon)
#set(ADDITIONNAL_JAVA_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/MacaonTransParserWrapper.java)
# Add include directories
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
# Run swig executable to generate java code
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_java.cc
COMMAND swig -java -package ${JAVA_PACKAGE} -c++ -o maca_export_java.cc ../../maca_export/src/maca_export.i
)
add_library(${JAVA_LIBRARY} SHARED
maca_export_java.cc
src/maca_trans_tagger_export.cc
src/maca_lemmatizer_export.cc
src/maca_trans_parser_export.cc
)
target_link_libraries(${JAVA_LIBRARY} transparse maca_common perceptron) add_subdirectory(tagger)
add_subdirectory(lemmatizer)
add_subdirectory(parser)
string(REGEX REPLACE "[.]" "/" JAVA_PACKAGE_DIR ${JAVA_PACKAGE})
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND mkdir -p ${JAVA_PACKAGE_DIR}
COMMAND ${Java_JAVAC_EXECUTABLE} -encoding utf8 -d ${CMAKE_CURRENT_BINARY_DIR} #${JAVA_PACKAGE_DIR}
${JAVA_MODULE_NAME}JNI.java
${JAVA_CLASS_TAGGER}.java
${JAVA_CLASS_LEMMATIZER}.java
${JAVA_CLASS_TRANSPARSER}.java
${JAVA_MODULE_NAME}.java
${ADDITIONNAL_JAVA_FILES}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS_TRANSPARSER}.java ${JAVA_CLASS_TAGGER}.java ${JAVA_CLASS_LEMMATIZER}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
)
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND ${Java_JAR_EXECUTABLE} -cvf ${JAR_FILENAME}.jar -C ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_PACKAGE_DIR}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS_TRANSPARSER}.java ${JAVA_CLASS_TAGGER}.java ${JAVA_CLASS_LEMMATIZER}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
#WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building ${JAR_FILENAME}"
VERBATIM
)
else()
message("Java JNI support not installed")
endif()
else() else()
message("swig >= 3.0 not installed on your system") message("swig >= 3.0 not installed on your system")
endif() endif()
add_subdirectory(src)
set(TESTSOURCES
src/maca_lemmatizer_export.cc
src/maca_trans_parser_export.cc
src/maca_trans_tagger_export.cc
)
# #compiling library
# include_directories(src)
# add_library(swigtransparse ${TESOURCES})
#target_link_libraries(transparse perceptron)
add_executable(testcxx ./src/test.cc ${TESTSOURCES})
target_link_libraries(testcxx perceptron)
target_link_libraries(testcxx transparse)
target_link_libraries(testcxx maca_common)
# install (TARGETS testcxx DESTINATION bin)
endif() endif()
Using the libraries for python and java
Attention: if you have libpython2.7-dev and libpython3.X-dev installed, cmake will choose the latter
in this case the generated libraries for Python will only work with Python 3
set environment variable MACAON_DIR
export MACAON_DIR=/home/jeuh6401/SemanticData/macaon/maca_data2
Adapt the lines like mt = MacaonTagger.MacaonTransTagger("fr", "fr/eval/wplgfs.mcd")
then:
cd maca_data2
../macaon2/maca_export/example/example.py
another test programme:
cd maca_data2
../macaon2/build/maca_export/src/testcxx jh-seq jh-seq/eval/wplgfs.mcd ../macaon2/maca_export/src/test-0.mcf
import lif.*; import lif.*;
/** example to use the macaon parser with java /** example to use the macaon parser with java
compile (in maca_data2) compile (in maca_data2)
javac -cp ../macaon2/build_debug/maca_export/macaon.jar ../macaon2/maca_export/example/example.java javac -cp ../macaon2/build/maca_export/tagger/macaontagger.jar:../macaon2/build/maca_export/lemmatizer/macaonlemmatizer.jar:../macaon2/build/maca_export/parser/macaonparser.jar ../macaon2/maca_export/example/example.java
run run
java -cp ../macaon2/build_debug/maca_export/macaon.jar:../macaon2/maca_export/example -Djava.library.path=../macaon2/build_debug/maca_export/ example java -cp ../macaon2/build/maca_export/tagger/macaontagger.jar:../macaon2/build/maca_export/lemmatizer/macaonlemmatizer.jar:../macaon2/build/maca_export/parser/macaonparser.jar:../macaon2/maca_export/example -Djava.library.path=../macaon2/build/maca_export/tagger:../macaon2/build/maca_export/lemmatizer:../macaon2/build/maca_export/parser example
make jar
jar -cf ../macaon2/maca_export/example/macaon.jar -C ../macaon2/maca_export/example example.class
*/ */
public class example { public class example {
public static void main(String []args) { MacaonTransTagger mt;
System.loadLibrary("MacaonJava"); // use libMacaonExport.so MacaonTransLemmatizer ml;
MacaonTransParser mp;
public example(String lg, String mcd, boolean loadlibraries) {
if (loadlibraries) {
System.loadLibrary("MacaonTransTaggerJava"); // use libMacaonTransTaggerJava.so
System.loadLibrary("MacaonTransLemmatizerJava");
System.loadLibrary("MacaonTransParserJava");
}
mt = new MacaonTransTagger(lg, mcd);
ml = new MacaonTransLemmatizer(lg, mcd);
mp = new MacaonTransParser(lg, mcd);
}
public void test1() {
/* StringBuilder mcf1 = new StringBuilder("La D le\n"); /* StringBuilder mcf1 = new StringBuilder("La D le\n");
mcf1.append("pose N pose\n"); mcf1.append("pose N pose\n");
mcf1.append("d' P de\n"); mcf1.append("d' P de\n");
...@@ -52,14 +73,35 @@ public class example { ...@@ -52,14 +73,35 @@ public class example {
mcf1.append("usagers\n"); mcf1.append("usagers\n");
mcf1.append(".\n"); mcf1.append(".\n");
MacaonTransTagger mt = new MacaonTransTagger("jh-seq", "jh-seq/eval/wplgfs.mcd");
MacaonTransLemmatizer ml = new MacaonTransLemmatizer("jh-seq", "jh-seq/eval/wplgfs.mcd");
MacaonTransParser mp = new MacaonTransParser("jh-seq", "jh-seq/eval/wplgfs.mcd");
String tags = mt.tagmcf(mcf1.toString()); String tags = mt.tagmcf(mcf1.toString());
System.out.println(tags); System.out.println(tags);
String lemmas = ml.lemmatizemcf(tags); String lemmas = ml.lemmatizemcf(tags);
System.out.println(lemmas); System.out.println(lemmas);
System.out.println(mp.parsemcf(lemmas)); System.out.println(mp.parsemcf(lemmas));
}
public String tag(String text) {
String t = text.replaceAll("([\\.,\\?;:!/])", " $1 ");
String [] elems = t.split("[\\s]+");
StringBuilder mcf1 = new StringBuilder();
for (String elem : elems) {
mcf1.append(elem).append('\n');
}
//System.out.println(mcf1);
String tags = mt.tagmcf(mcf1.toString());
//System.out.println(tags);
String lemmas = ml.lemmatizemcf(tags);
return lemmas;
}
public static void main(String []args) {
example ex = new example("jh-seq", "jh-seq/eval/wplgfs.mcd", true);
ex.test1();
//String res = ex.tag("la souris mange.");
//System.out.println(res);
} }
} }
...@@ -6,15 +6,20 @@ import os ...@@ -6,15 +6,20 @@ import os
currentdir = os.path.dirname(os.path.abspath(__file__)) currentdir = os.path.dirname(os.path.abspath(__file__))
import sys import sys
sys.path.append(currentdir + "/../../build_debug/maca_export")
sys.path.append(currentdir + "/../../build/maca_export/tagger")
sys.path.append(currentdir + "/../../build/maca_export/lemmatizer")
sys.path.append(currentdir + "/../../build/maca_export/parser")
import Macaon
import MacaonTagger
import MacaonLemmatizer
import MacaonParser
# for this example you should be in maca_data2 # for this example you should be in maca_data2
mt = Macaon.MacaonTransTagger("jh-seq", "jh-seq/eval/wplgfs.mcd") mt = MacaonTagger.MacaonTransTagger("jh-seq", "jh-seq/eval/wplgfs.mcd")
ml = Macaon.MacaonTransLemmatizer("jh-seq", "jh-seq/eval/wplgfs.mcd") ml = MacaonLemmatizer.MacaonTransLemmatizer("jh-seq", "jh-seq/eval/wplgfs.mcd")
mp = Macaon.MacaonTransParser("jh-seq", "jh-seq/eval/wplgfs.mcd") mp = MacaonParser.MacaonTransParser("jh-seq", "jh-seq/eval/wplgfs.mcd")
mcf="""La mcf="""La
grosse grosse
...@@ -92,8 +97,8 @@ lemmas = ml.lemmatizemcf(tags) ...@@ -92,8 +97,8 @@ lemmas = ml.lemmatizemcf(tags)
print lemmas print lemmas
print mp.parsemcf(lemmas) print mp.parsemcf(lemmas)
del mp
del ml
del mt del mt
del ml
del mp
set(SOURCES maca_export_lemmatizer.i)
if(PYTHONLIBS_FOUND)
set(PYTHON_LEMMATIZER_NAME MacaonLemmatizer)
include_directories(${PYTHON_INCLUDE_PATH})
include_directories(../../maca_lemmatizer/src)
include_directories(../../maca_common/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
#message(eeeeeeeeeeee ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_lemmatizer_py.cc
COMMAND swig -python -c++ -o maca_export_lemmatizer_py.cc ../../../maca_export/lemmatizer/maca_export_lemmatizer.i
)
# Specify the lib
add_library(${PYTHON_LEMMATIZER_NAME} SHARED
maca_export_lemmatizer_py.cc
maca_lemmatizer_export.cc
../../maca_lemmatizer/src/context.c
)
set_target_properties(${PYTHON_LEMMATIZER_NAME} PROPERTIES PREFIX _)
target_link_libraries(${PYTHON_LEMMATIZER_NAME} transparse maca_common)
else()
message("pythonlibs not installed on your system")
endif()
if (JNI_FOUND AND (Java_FOUND OR JAVA_FOUND))
set(JAVA_MODULE_NAME MacaonLemmatizer)
set(JAVA_LIBRARY MacaonTransLemmatizerJava)
set(JAVA_CLASS MacaonTransLemmatizer)
set(JAVA_PACKAGE lif)
set(JAR_FILENAME macaonlemmatizer)
# Add include directories
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
# Run swig executable to generate java code
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_lemmatizer_java.cc
COMMAND swig -java -package ${JAVA_PACKAGE} -c++ -o maca_export_lemmatizer_java.cc ../../../maca_export/lemmatizer/maca_export_lemmatizer.i
)
add_library(${JAVA_LIBRARY} SHARED
maca_export_lemmatizer_java.cc
maca_lemmatizer_export.cc
../../maca_lemmatizer/src/context.c
)
target_link_libraries(${JAVA_LIBRARY} transparse maca_common)
string(REGEX REPLACE "[.]" "/" JAVA_PACKAGE_DIR ${JAVA_PACKAGE})
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND mkdir -p ${JAVA_PACKAGE_DIR}
COMMAND ${Java_JAVAC_EXECUTABLE} -encoding utf8 -d ${CMAKE_CURRENT_BINARY_DIR} #${JAVA_PACKAGE_DIR}
${JAVA_MODULE_NAME}JNI.java
${JAVA_CLASS}.java
${JAVA_MODULE_NAME}.java
${ADDITIONNAL_JAVA_FILES}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
)
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND ${Java_JAR_EXECUTABLE} -cvf ${JAR_FILENAME}.jar -C ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_PACKAGE_DIR}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
#WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building ${JAR_FILENAME}"
VERBATIM
)
else()
message("Java JNI support not installed")
endif()
%module Macaon %module MacaonLemmatizer
%{ %{
#include <maca_trans_tagger_export.h>
#include <maca_lemmatizer_export.h> #include <maca_lemmatizer_export.h>
#include <maca_trans_parser_export.h>
%} %}
class MacaonTransTagger {
public:
MacaonTransTagger(char *lg, char *mcd);
~MacaonTransTagger();
const char *tagmcf(const char *mcf);
};
class MacaonTransLemmatizer { class MacaonTransLemmatizer {
public: public:
MacaonTransLemmatizer(char *lg, char *mcd); MacaonTransLemmatizer(char *lg, char *mcd);
...@@ -21,10 +11,3 @@ class MacaonTransLemmatizer { ...@@ -21,10 +11,3 @@ class MacaonTransLemmatizer {
const char *lemmatizemcf(const char *mcf); const char *lemmatizemcf(const char *mcf);
}; };
class MacaonTransParser {
public:
MacaonTransParser(char *lg, char *mcd);
~MacaonTransParser();
const char *parsemcf(const char *mcf);
};
#include <stdio.h> #include <cstdio>
#include <string.h> #include <cstring>
#include <iostream>
#ifdef __cplusplus //#ifdef __cplusplus
extern "C"{ //extern "C"{
#endif //#endif
#include "context.h"
#include "feat_fct.h"
#include "config2feat_vec.h"
#include "feature_table.h"
#include "dico.h" #include "dico.h"
#include "word.h"
#include "util.h"
#ifdef __cplusplus //#ifdef __cplusplus
} //}
#endif //#endif
#include "maca_lemmatizer_export.h" #include "maca_lemmatizer_export.h"
MacaonTransLemmatizer::MacaonTransLemmatizer(char *lg, char *mcd) { MacaonTransLemmatizer::MacaonTransLemmatizer(char *lg, char *mcd) {
char * argv[] = { (char *)"initParser", char * argv[] = { (char *)"initParser",
(char *)"-L", lg, (char *)"-L", lg,
(char *)"-C", mcd, (char *)"-C", mcd,
0 0
}; };
ctx = context_read_options(5, argv); ctx = context_read_options(5, argv);
form_pos_ht = hash_new(1000000); form_pos_ht = hash_new(1000000);
//maca_lemmatizer_check_options(ctx); //maca_lemmatizer_check_options(ctx);
maca_lemmatizer_set_linguistic_resources_filenames(ctx); maca_lemmatizer_set_linguistic_resources_filenames(ctx);
lemma_array = read_fplm_file(ctx->fplm_filename, form_pos_ht, ctx->debug_mode, &lemma_array_size); lemma_array = read_fplm_file(ctx->fplm_filename, form_pos_ht, ctx->debug_mode, &lemma_array_size);
resultstring = NULL; resultstring = NULL;
} }
MacaonTransLemmatizer::~MacaonTransLemmatizer() { MacaonTransLemmatizer::~MacaonTransLemmatizer() {
......
//#ifdef __cplusplus
//extern "C"{
//#endif
#include "context.h" #include "context.h"
#include "../../../maca_trans_parser/src/config.h"
#include "word.h"
//#ifdef __cplusplus
//}
//#endif
class MacaonTransLemmatizer { class MacaonTransLemmatizer {
public: public:
......
if(PYTHONLIBS_FOUND)
set(SOURCES maca_export_parser.i)
set(PYTHON_PARSER_NAME MacaonParser)
include_directories(${PYTHON_INCLUDE_PATH})
include_directories(../../maca_trans_parser/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
#message(eeeeeeeeeeee ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_parser_py.cc
COMMAND swig -python -c++ -o maca_export_parser_py.cc ../../../maca_export/parser/maca_export_parser.i
)
# Specify the lib
add_library(${PYTHON_PARSER_NAME} SHARED
maca_export_parser_py.cc
maca_trans_parser_export.cc
)
set_target_properties(${PYTHON_PARSER_NAME} PROPERTIES PREFIX _)
target_link_libraries(${PYTHON_PARSER_NAME} transparse maca_common perceptron)
else()
message("pythonlibs not installed on your system")
endif()
if (JNI_FOUND AND (Java_FOUND OR JAVA_FOUND))
set(JAVA_MODULE_NAME MacaonParser)
set(JAVA_LIBRARY MacaonTransParserJava)
set(JAVA_CLASS MacaonTransParser)
set(JAVA_PACKAGE lif)
set(JAR_FILENAME macaonparser)
# Add include directories
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
# Run swig executable to generate java code
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_parser_java.cc
COMMAND swig -java -package ${JAVA_PACKAGE} -c++ -o maca_export_parser_java.cc ../../../maca_export/parser/maca_export_parser.i
)
add_library(${JAVA_LIBRARY} SHARED
maca_export_parser_java.cc
maca_trans_parser_export.cc
)
target_link_libraries(${JAVA_LIBRARY} transparse maca_common perceptron)
string(REGEX REPLACE "[.]" "/" JAVA_PACKAGE_DIR ${JAVA_PACKAGE})
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND mkdir -p ${JAVA_PACKAGE_DIR}
COMMAND ${Java_JAVAC_EXECUTABLE} -encoding utf8 -d ${CMAKE_CURRENT_BINARY_DIR} #${JAVA_PACKAGE_DIR}
${JAVA_MODULE_NAME}JNI.java
${JAVA_CLASS}.java
${JAVA_MODULE_NAME}.java
${ADDITIONNAL_JAVA_FILES}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
)
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND ${Java_JAR_EXECUTABLE} -cvf ${JAR_FILENAME}.jar -C ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_PACKAGE_DIR}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
#WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building ${JAR_FILENAME}"
VERBATIM
)
else()
message("Java JNI support not installed")
endif()
%module MacaonParser
%{
#include <maca_trans_parser_export.h>
%}
class MacaonTransParser {
public:
MacaonTransParser(char *lg, char *mcd);
~MacaonTransParser();
const char *parsemcf(const char *mcf);
};
#include <stdio.h> #include <cstdio>
#include <string.h> #include <cstring>
#ifdef __cplusplus //#ifdef __cplusplus
extern "C"{ //extern "C"{
#endif //#endif
#include "context.h"
#include "simple_decoder_parser_arc_eager.h" #include "simple_decoder_parser_arc_eager.h"
#include "movement_parser_arc_eager.h" #include "movement_parser_arc_eager.h"
#include "feat_fct.h" #include "feat_fct.h"
#include "config2feat_vec.h" #include "config2feat_vec.h"
#include "feature_table.h" #include "feature_table.h"
#include "dico.h" #include "dico.h"
#ifdef __cplusplus //#ifdef __cplusplus
} //}
#endif //#endif
#include "maca_trans_parser_export.h" #include "maca_trans_parser_export.h"
...@@ -37,7 +37,7 @@ MacaonTransParser::MacaonTransParser(char *lg, char *mcd) { ...@@ -37,7 +37,7 @@ MacaonTransParser::MacaonTransParser(char *lg, char *mcd) {
set_linguistic_resources_filenames_parser(ctx); set_linguistic_resources_filenames_parser(ctx);
ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose); ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio); ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose); mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose);
......
//#ifdef __cplusplus
//extern "C"{
//#endif
#include "context.h" #include "context.h"
#include "config.h"
//#ifdef __cplusplus
//}
//#endif
class MacaonTransParser { class MacaonTransParser {
......
include_directories(../../maca_trans_parser/src)
include_directories(../../maca_lemmatizer/src)
include_directories(../../maca_common/include)
include_directories(../tagger)
include_directories(../lemmatizer)
include_directories(../parser)
add_executable(testcxx
test.cc
../tagger/maca_trans_tagger_export.cc
../lemmatizer/maca_lemmatizer_export.cc
../parser/maca_trans_parser_export.cc)
target_link_libraries(testcxx transparse maca_common perceptron openblas)
## install (TARGETS testcxx DESTINATION bin)
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
#include "maca_trans_tagger_export.h" #include "maca_trans_tagger_export.h"
// test programme to be able using valgrind on the exported part of macaon // test programme to be able using valgrind on the exported part of macaon
// run (in maca_data2)
/**
../macaon2/build/maca_export/src/testcxx jh-seq jh-seq/eval/wplgfs.mcd ../macaon2/maca_export/src/test.mcf
*/
using namespace std ; using namespace std ;
...@@ -15,8 +19,8 @@ int main(int argc, char *argv[]) { ...@@ -15,8 +19,8 @@ int main(int argc, char *argv[]) {
return 1; return 1;
} }
//MacaonTransTagger *mt = new MacaonTransTagger(argv[1], argv[2]); MacaonTransTagger *mt = new MacaonTransTagger(argv[1], argv[2]);
//MacaonTransLemmatizer *ml = new MacaonTransLemmatizer(argv[1], argv[2]); MacaonTransLemmatizer *ml = new MacaonTransLemmatizer(argv[1], argv[2]);
MacaonTransParser *mp = new MacaonTransParser(argv[1], argv[2]); MacaonTransParser *mp = new MacaonTransParser(argv[1], argv[2]);
ifstream ifp(argv[3]); ifstream ifp(argv[3]);
...@@ -27,13 +31,15 @@ int main(int argc, char *argv[]) { ...@@ -27,13 +31,15 @@ int main(int argc, char *argv[]) {
text += line + "\n"; text += line + "\n";
} }
//const char *tags = mt->tagmcf(text.c_str()); const char *tags = mt->tagmcf(text.c_str());
//const char *lemmas = ml->lemmatizemcf(tags); //cout << tags << endl;
//const char *deps = mp->parsemcf(lemmas); const char *lemmas = ml->lemmatizemcf(tags);
const char *deps = mp->parsemcf(text.c_str()); const char *deps = mp->parsemcf(lemmas);
//const char *deps = mp->parsemcf(text.c_str());
cout << deps << endl; cout << deps << endl;
delete mt;
delete ml;
delete mp; delete mp;
//delete ml;
//delete mt;
} }
La D le
pose N pos
d' P de
un D un
panneau N panneau
stop N stop
paraît V paraître
être V être
la D le
formule N formule
la D le
mieux ADV mieux
adaptée A adapté
pour P pour
assurer V assurer
la D le
sécurité N sécurité
des P+D de
usagers N usager
. PONCT .
\ No newline at end of file
set(SOURCES maca_export_tagger.i)
if(PYTHONLIBS_FOUND)
set(PYTHON_TAGGER_NAME MacaonTagger)
include_directories(${PYTHON_INCLUDE_PATH})
include_directories(../../maca_trans_parser/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
#message(eeeeeeeeeeee ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_tagger_py.cc
COMMAND swig -python -c++ -o maca_export_tagger_py.cc ../../../maca_export/tagger/maca_export_tagger.i
)
# Specify the lib
add_library(${PYTHON_TAGGER_NAME} SHARED
maca_export_tagger_py.cc
maca_trans_tagger_export.cc
)
set_target_properties(${PYTHON_TAGGER_NAME} PROPERTIES PREFIX _)
target_link_libraries(${PYTHON_TAGGER_NAME} transparse maca_common perceptron)
else()
message("pythonlibs not installed on your system")
endif()
if (JNI_FOUND AND (Java_FOUND OR JAVA_FOUND))
set(JAVA_MODULE_NAME MacaonTagger)
set(JAVA_LIBRARY MacaonTransTaggerJava)
set(JAVA_CLASS MacaonTransTagger)
set(JAVA_PACKAGE lif)
set(JAR_FILENAME macaontagger)
# Add include directories
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
# Run swig executable to generate java code
add_custom_command(
DEPENDS ${SOURCES}
OUTPUT maca_export_tagger_java.cc
COMMAND swig -java -package ${JAVA_PACKAGE} -c++ -o maca_export_tagger_java.cc ../../../maca_export/tagger/maca_export_tagger.i
)
add_library(${JAVA_LIBRARY} SHARED
maca_export_tagger_java.cc
maca_trans_tagger_export.cc
)
target_link_libraries(${JAVA_LIBRARY} transparse maca_common perceptron)
string(REGEX REPLACE "[.]" "/" JAVA_PACKAGE_DIR ${JAVA_PACKAGE})
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND mkdir -p ${JAVA_PACKAGE_DIR}
COMMAND ${Java_JAVAC_EXECUTABLE} -encoding utf8 -d ${CMAKE_CURRENT_BINARY_DIR} #${JAVA_PACKAGE_DIR}
${JAVA_MODULE_NAME}JNI.java
${JAVA_CLASS}.java
${JAVA_MODULE_NAME}.java
${ADDITIONNAL_JAVA_FILES}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
)
add_custom_command(
TARGET ${JAVA_LIBRARY} POST_BUILD
COMMAND ${Java_JAR_EXECUTABLE} -cvf ${JAR_FILENAME}.jar -C ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_PACKAGE_DIR}
DEPENDS ${JAVA_MODULE_NAME}JNI.java ${JAVA_CLASS}.java ${JAVA_MODULE_NAME}.java ${ADDITIONNAL_JAVA_FILES}
#WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building ${JAR_FILENAME}"
VERBATIM
)
else()
message("Java JNI support not installed")
endif()
%module MacaonTagger
%{
#include <maca_trans_tagger_export.h>
%}
class MacaonTransTagger {
public:
MacaonTransTagger(char *lg, char *mcd);
~MacaonTransTagger();
const char *tagmcf(const char *mcf);
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment