mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2025-01-01 00:12:27 +03:00
Merge branch 'master' of git://github.com/moses-smt/mosesdecoder
This commit is contained in:
commit
765e789c0c
11
Jamroot
11
Jamroot
@ -89,16 +89,7 @@ project : requirements
|
||||
;
|
||||
|
||||
#Add directories here if you want their incidental targets too (i.e. tests).
|
||||
build-project lm ;
|
||||
build-project util ;
|
||||
#Trigger instllation into legacy paths.
|
||||
build-project mert ;
|
||||
build-project moses-cmd/src ;
|
||||
build-project moses-chart-cmd/src ;
|
||||
#Scripts have their own binaries.
|
||||
build-project scripts ;
|
||||
#Regression tests (only does anything if --with-regtest is passed)
|
||||
build-project regression-testing ;
|
||||
build-projects util lm mert moses-cmd/src moses-chart-cmd/src scripts regression-testing ;
|
||||
|
||||
alias programs : lm//query lm//build_binary moses-chart-cmd/src//moses_chart moses-cmd/src//programs OnDiskPt//CreateOnDiskPt OnDiskPt//queryOnDiskPt mert//programs contrib/server//mosesserver misc//programs symal phrase-extract phrase-extract//lexical-reordering phrase-extract//extract-ghkm phrase-extract//pcfg-extract phrase-extract//pcfg-score biconcor ;
|
||||
|
||||
|
311
contrib/other-builds/kbmira.xcodeproj/project.pbxproj
Normal file
311
contrib/other-builds/kbmira.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,311 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1E73031E1597355A00C0E7FB /* kbmira.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E73031D1597355A00C0E7FB /* kbmira.cpp */; };
|
||||
1EC060861597392900614957 /* libmert_lib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EC060821597386600614957 /* libmert_lib.a */; };
|
||||
1EC060B41597490F00614957 /* liblm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EC060B11597490800614957 /* liblm.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
1EC060811597386600614957 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 1EC0607A1597386500614957 /* mert_lib.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 1E2CCF3315939E2D00D858D1;
|
||||
remoteInfo = mert_lib;
|
||||
};
|
||||
1EC060841597386C00614957 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 1EC0607A1597386500614957 /* mert_lib.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 1E2CCF3215939E2D00D858D1;
|
||||
remoteInfo = mert_lib;
|
||||
};
|
||||
1EC060B01597490800614957 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 1EC060A51597490800614957 /* lm.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 1EE8C2E91476A48E002496F2;
|
||||
remoteInfo = lm;
|
||||
};
|
||||
1EC060B51597491400614957 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 1EC060A51597490800614957 /* lm.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 1EE8C2E81476A48E002496F2;
|
||||
remoteInfo = lm;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
1E43CA3E159734A5000E29D3 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1E43CA40159734A5000E29D3 /* kbmira */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = kbmira; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1E73031D1597355A00C0E7FB /* kbmira.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = kbmira.cpp; path = ../../mert/kbmira.cpp; sourceTree = "<group>"; };
|
||||
1EC0607A1597386500614957 /* mert_lib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = mert_lib.xcodeproj; sourceTree = "<group>"; };
|
||||
1EC060A51597490800614957 /* lm.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = lm.xcodeproj; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1E43CA3D159734A5000E29D3 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1EC060B41597490F00614957 /* liblm.a in Frameworks */,
|
||||
1EC060861597392900614957 /* libmert_lib.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
1E43CA35159734A5000E29D3 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EC060A51597490800614957 /* lm.xcodeproj */,
|
||||
1EC0607A1597386500614957 /* mert_lib.xcodeproj */,
|
||||
1E73031D1597355A00C0E7FB /* kbmira.cpp */,
|
||||
1E43CA41159734A5000E29D3 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1E43CA41159734A5000E29D3 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E43CA40159734A5000E29D3 /* kbmira */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1EC0607B1597386500614957 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EC060821597386600614957 /* libmert_lib.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1EC060A61597490800614957 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EC060B11597490800614957 /* liblm.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1E43CA3F159734A5000E29D3 /* kbmira */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1E43CA4A159734A5000E29D3 /* Build configuration list for PBXNativeTarget "kbmira" */;
|
||||
buildPhases = (
|
||||
1E43CA3C159734A5000E29D3 /* Sources */,
|
||||
1E43CA3D159734A5000E29D3 /* Frameworks */,
|
||||
1E43CA3E159734A5000E29D3 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
1EC060B61597491400614957 /* PBXTargetDependency */,
|
||||
1EC060851597386C00614957 /* PBXTargetDependency */,
|
||||
);
|
||||
name = kbmira;
|
||||
productName = kbmira;
|
||||
productReference = 1E43CA40159734A5000E29D3 /* kbmira */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
1E43CA37159734A5000E29D3 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1E43CA3A159734A5000E29D3 /* Build configuration list for PBXProject "kbmira" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 1E43CA35159734A5000E29D3;
|
||||
productRefGroup = 1E43CA41159734A5000E29D3 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 1EC060A61597490800614957 /* Products */;
|
||||
ProjectRef = 1EC060A51597490800614957 /* lm.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 1EC0607B1597386500614957 /* Products */;
|
||||
ProjectRef = 1EC0607A1597386500614957 /* mert_lib.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1E43CA3F159734A5000E29D3 /* kbmira */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
1EC060821597386600614957 /* libmert_lib.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libmert_lib.a;
|
||||
remoteRef = 1EC060811597386600614957 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
1EC060B11597490800614957 /* liblm.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = liblm.a;
|
||||
remoteRef = 1EC060B01597490800614957 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1E43CA3C159734A5000E29D3 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E73031E1597355A00C0E7FB /* kbmira.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
1EC060851597386C00614957 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = mert_lib;
|
||||
targetProxy = 1EC060841597386C00614957 /* PBXContainerItemProxy */;
|
||||
};
|
||||
1EC060B61597491400614957 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = lm;
|
||||
targetProxy = 1EC060B51597491400614957 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1E43CA48159734A5000E29D3 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1E43CA49159734A5000E29D3 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
LIBRARY_SEARCH_PATHS = /opt/local/lib;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
OTHER_LDFLAGS = "";
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1E43CA4B159734A5000E29D3 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lboost_program_options",
|
||||
"-lz",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1E43CA4C159734A5000E29D3 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lboost_program_options",
|
||||
"-lz",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1E43CA3A159734A5000E29D3 /* Build configuration list for PBXProject "kbmira" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1E43CA48159734A5000E29D3 /* Debug */,
|
||||
1E43CA49159734A5000E29D3 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1E43CA4A159734A5000E29D3 /* Build configuration list for PBXNativeTarget "kbmira" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1E43CA4B159734A5000E29D3 /* Debug */,
|
||||
1E43CA4C159734A5000E29D3 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 1E43CA37159734A5000E29D3 /* Project object */;
|
||||
}
|
242
contrib/other-builds/mert.xcodeproj/project.pbxproj
Normal file
242
contrib/other-builds/mert.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,242 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1E2B6ADE1593A5500028137E /* mert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2B6ADD1593A5500028137E /* mert.cpp */; };
|
||||
1E2B6B1F1593CA8A0028137E /* libmert_lib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E2B6B141593A6F30028137E /* libmert_lib.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
1E2B6B131593A6F30028137E /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 1E2B6B0F1593A6F30028137E /* mert_lib.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 1E2CCF3315939E2D00D858D1;
|
||||
remoteInfo = mert_lib;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
1EB0AF031593A2180007E2A4 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1E2B6ADD1593A5500028137E /* mert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mert.cpp; path = ../../mert/mert.cpp; sourceTree = "<group>"; };
|
||||
1E2B6B0F1593A6F30028137E /* mert_lib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = mert_lib.xcodeproj; sourceTree = "<group>"; };
|
||||
1EB0AF051593A2180007E2A4 /* mert */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mert; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1EB0AF021593A2180007E2A4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E2B6B1F1593CA8A0028137E /* libmert_lib.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
1E2B6B101593A6F30028137E /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E2B6B141593A6F30028137E /* libmert_lib.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1EB0AEFA1593A2180007E2A4 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E2B6B0F1593A6F30028137E /* mert_lib.xcodeproj */,
|
||||
1E2B6ADD1593A5500028137E /* mert.cpp */,
|
||||
1EB0AF061593A2180007E2A4 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1EB0AF061593A2180007E2A4 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EB0AF051593A2180007E2A4 /* mert */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1EB0AF041593A2180007E2A4 /* mert */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1EB0AF0F1593A2180007E2A4 /* Build configuration list for PBXNativeTarget "mert" */;
|
||||
buildPhases = (
|
||||
1EB0AF011593A2180007E2A4 /* Sources */,
|
||||
1EB0AF021593A2180007E2A4 /* Frameworks */,
|
||||
1EB0AF031593A2180007E2A4 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = mert;
|
||||
productName = mert;
|
||||
productReference = 1EB0AF051593A2180007E2A4 /* mert */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
1EB0AEFC1593A2180007E2A4 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1EB0AEFF1593A2180007E2A4 /* Build configuration list for PBXProject "mert" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 1EB0AEFA1593A2180007E2A4;
|
||||
productRefGroup = 1EB0AF061593A2180007E2A4 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 1E2B6B101593A6F30028137E /* Products */;
|
||||
ProjectRef = 1E2B6B0F1593A6F30028137E /* mert_lib.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1EB0AF041593A2180007E2A4 /* mert */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
1E2B6B141593A6F30028137E /* libmert_lib.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libmert_lib.a;
|
||||
remoteRef = 1E2B6B131593A6F30028137E /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1EB0AF011593A2180007E2A4 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E2B6ADE1593A5500028137E /* mert.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1EB0AF0D1593A2180007E2A4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "-lz";
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1EB0AF0E1593A2180007E2A4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
OTHER_LDFLAGS = "-lz";
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1EB0AF101593A2180007E2A4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1EB0AF111593A2180007E2A4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1EB0AEFF1593A2180007E2A4 /* Build configuration list for PBXProject "mert" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1EB0AF0D1593A2180007E2A4 /* Debug */,
|
||||
1EB0AF0E1593A2180007E2A4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1EB0AF0F1593A2180007E2A4 /* Build configuration list for PBXNativeTarget "mert" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1EB0AF101593A2180007E2A4 /* Debug */,
|
||||
1EB0AF111593A2180007E2A4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 1EB0AEFC1593A2180007E2A4 /* Project object */;
|
||||
}
|
607
contrib/other-builds/mert_lib.xcodeproj/project.pbxproj
Normal file
607
contrib/other-builds/mert_lib.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,607 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1E2CCFB915939E5D00D858D1 /* BleuScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF3A15939E5D00D858D1 /* BleuScorer.cpp */; };
|
||||
1E2CCFBA15939E5D00D858D1 /* BleuScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF3B15939E5D00D858D1 /* BleuScorer.h */; };
|
||||
1E2CCFBC15939E5D00D858D1 /* CderScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF3D15939E5D00D858D1 /* CderScorer.cpp */; };
|
||||
1E2CCFBD15939E5D00D858D1 /* CderScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF3E15939E5D00D858D1 /* CderScorer.h */; };
|
||||
1E2CCFBE15939E5D00D858D1 /* Data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF3F15939E5D00D858D1 /* Data.cpp */; };
|
||||
1E2CCFBF15939E5D00D858D1 /* Data.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF4015939E5D00D858D1 /* Data.h */; };
|
||||
1E2CCFC315939E5D00D858D1 /* Fdstream.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5115939E5D00D858D1 /* Fdstream.h */; };
|
||||
1E2CCFC415939E5D00D858D1 /* FeatureArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5215939E5D00D858D1 /* FeatureArray.cpp */; };
|
||||
1E2CCFC515939E5D00D858D1 /* FeatureArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5315939E5D00D858D1 /* FeatureArray.h */; };
|
||||
1E2CCFC615939E5D00D858D1 /* FeatureData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5415939E5D00D858D1 /* FeatureData.cpp */; };
|
||||
1E2CCFC715939E5D00D858D1 /* FeatureData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5515939E5D00D858D1 /* FeatureData.h */; };
|
||||
1E2CCFC815939E5D00D858D1 /* FeatureDataIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5615939E5D00D858D1 /* FeatureDataIterator.cpp */; };
|
||||
1E2CCFC915939E5D00D858D1 /* FeatureDataIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5715939E5D00D858D1 /* FeatureDataIterator.h */; };
|
||||
1E2CCFCB15939E5D00D858D1 /* FeatureStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5915939E5D00D858D1 /* FeatureStats.cpp */; };
|
||||
1E2CCFCC15939E5D00D858D1 /* FeatureStats.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5A15939E5D00D858D1 /* FeatureStats.h */; };
|
||||
1E2CCFCD15939E5D00D858D1 /* FileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5B15939E5D00D858D1 /* FileStream.cpp */; };
|
||||
1E2CCFCE15939E5D00D858D1 /* FileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5C15939E5D00D858D1 /* FileStream.h */; };
|
||||
1E2CCFCF15939E5D00D858D1 /* GzFileBuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5D15939E5D00D858D1 /* GzFileBuf.cpp */; };
|
||||
1E2CCFD015939E5D00D858D1 /* GzFileBuf.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF5E15939E5D00D858D1 /* GzFileBuf.h */; };
|
||||
1E2CCFD115939E5D00D858D1 /* HypPackEnumerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF5F15939E5D00D858D1 /* HypPackEnumerator.cpp */; };
|
||||
1E2CCFD215939E5D00D858D1 /* HypPackEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6015939E5D00D858D1 /* HypPackEnumerator.h */; };
|
||||
1E2CCFD315939E5D00D858D1 /* InterpolatedScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6115939E5D00D858D1 /* InterpolatedScorer.cpp */; };
|
||||
1E2CCFD415939E5D00D858D1 /* InterpolatedScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6215939E5D00D858D1 /* InterpolatedScorer.h */; };
|
||||
1E2CCFD715939E5D00D858D1 /* MergeScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6515939E5D00D858D1 /* MergeScorer.cpp */; };
|
||||
1E2CCFD815939E5D00D858D1 /* MergeScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6615939E5D00D858D1 /* MergeScorer.h */; };
|
||||
1E2CCFD915939E5D00D858D1 /* mert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6715939E5D00D858D1 /* mert.cpp */; };
|
||||
1E2CCFDA15939E5D00D858D1 /* MiraFeatureVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6815939E5D00D858D1 /* MiraFeatureVector.cpp */; };
|
||||
1E2CCFDB15939E5D00D858D1 /* MiraFeatureVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6915939E5D00D858D1 /* MiraFeatureVector.h */; };
|
||||
1E2CCFDC15939E5D00D858D1 /* MiraWeightVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6A15939E5D00D858D1 /* MiraWeightVector.cpp */; };
|
||||
1E2CCFDD15939E5D00D858D1 /* MiraWeightVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6B15939E5D00D858D1 /* MiraWeightVector.h */; };
|
||||
1E2CCFDE15939E5D00D858D1 /* Ngram.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6C15939E5D00D858D1 /* Ngram.h */; };
|
||||
1E2CCFE015939E5D00D858D1 /* Optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF6E15939E5D00D858D1 /* Optimizer.cpp */; };
|
||||
1E2CCFE115939E5D00D858D1 /* Optimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF6F15939E5D00D858D1 /* Optimizer.h */; };
|
||||
1E2CCFE215939E5D00D858D1 /* OptimizerFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF7015939E5D00D858D1 /* OptimizerFactory.cpp */; };
|
||||
1E2CCFE315939E5D00D858D1 /* OptimizerFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7115939E5D00D858D1 /* OptimizerFactory.h */; };
|
||||
1E2CCFE515939E5D00D858D1 /* PerScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF7315939E5D00D858D1 /* PerScorer.cpp */; };
|
||||
1E2CCFE615939E5D00D858D1 /* PerScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7415939E5D00D858D1 /* PerScorer.h */; };
|
||||
1E2CCFE715939E5D00D858D1 /* Point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF7515939E5D00D858D1 /* Point.cpp */; };
|
||||
1E2CCFE815939E5D00D858D1 /* Point.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7615939E5D00D858D1 /* Point.h */; };
|
||||
1E2CCFEA15939E5D00D858D1 /* PreProcessFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF7815939E5D00D858D1 /* PreProcessFilter.cpp */; };
|
||||
1E2CCFEB15939E5D00D858D1 /* PreProcessFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7915939E5D00D858D1 /* PreProcessFilter.h */; };
|
||||
1E2CCFED15939E5D00D858D1 /* Reference.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7B15939E5D00D858D1 /* Reference.h */; };
|
||||
1E2CCFEF15939E5D00D858D1 /* ScopedVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7D15939E5D00D858D1 /* ScopedVector.h */; };
|
||||
1E2CCFF015939E5D00D858D1 /* ScoreArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF7E15939E5D00D858D1 /* ScoreArray.cpp */; };
|
||||
1E2CCFF115939E5D00D858D1 /* ScoreArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF7F15939E5D00D858D1 /* ScoreArray.h */; };
|
||||
1E2CCFF215939E5D00D858D1 /* ScoreData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8015939E5D00D858D1 /* ScoreData.cpp */; };
|
||||
1E2CCFF315939E5D00D858D1 /* ScoreData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8115939E5D00D858D1 /* ScoreData.h */; };
|
||||
1E2CCFF415939E5D00D858D1 /* ScoreDataIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8215939E5D00D858D1 /* ScoreDataIterator.cpp */; };
|
||||
1E2CCFF515939E5D00D858D1 /* ScoreDataIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8315939E5D00D858D1 /* ScoreDataIterator.h */; };
|
||||
1E2CCFF615939E5D00D858D1 /* Scorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8415939E5D00D858D1 /* Scorer.cpp */; };
|
||||
1E2CCFF715939E5D00D858D1 /* Scorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8515939E5D00D858D1 /* Scorer.h */; };
|
||||
1E2CCFF815939E5D00D858D1 /* ScorerFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8615939E5D00D858D1 /* ScorerFactory.cpp */; };
|
||||
1E2CCFF915939E5D00D858D1 /* ScorerFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8715939E5D00D858D1 /* ScorerFactory.h */; };
|
||||
1E2CCFFA15939E5D00D858D1 /* ScoreStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8815939E5D00D858D1 /* ScoreStats.cpp */; };
|
||||
1E2CCFFB15939E5D00D858D1 /* ScoreStats.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8915939E5D00D858D1 /* ScoreStats.h */; };
|
||||
1E2CCFFC15939E5D00D858D1 /* SemposOverlapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8A15939E5D00D858D1 /* SemposOverlapping.cpp */; };
|
||||
1E2CCFFD15939E5D00D858D1 /* SemposOverlapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8B15939E5D00D858D1 /* SemposOverlapping.h */; };
|
||||
1E2CCFFE15939E5D00D858D1 /* SemposScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF8C15939E5D00D858D1 /* SemposScorer.cpp */; };
|
||||
1E2CCFFF15939E5D00D858D1 /* SemposScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8D15939E5D00D858D1 /* SemposScorer.h */; };
|
||||
1E2CD00015939E5D00D858D1 /* Singleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF8E15939E5D00D858D1 /* Singleton.h */; };
|
||||
1E2CD00215939E5D00D858D1 /* alignmentStruct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9115939E5D00D858D1 /* alignmentStruct.cpp */; };
|
||||
1E2CD00315939E5D00D858D1 /* alignmentStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9215939E5D00D858D1 /* alignmentStruct.h */; };
|
||||
1E2CD00415939E5D00D858D1 /* bestShiftStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9315939E5D00D858D1 /* bestShiftStruct.h */; };
|
||||
1E2CD00515939E5D00D858D1 /* hashMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9415939E5D00D858D1 /* hashMap.cpp */; };
|
||||
1E2CD00615939E5D00D858D1 /* hashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9515939E5D00D858D1 /* hashMap.h */; };
|
||||
1E2CD00715939E5D00D858D1 /* hashMapInfos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9615939E5D00D858D1 /* hashMapInfos.cpp */; };
|
||||
1E2CD00815939E5D00D858D1 /* hashMapInfos.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9715939E5D00D858D1 /* hashMapInfos.h */; };
|
||||
1E2CD00915939E5D00D858D1 /* hashMapStringInfos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9815939E5D00D858D1 /* hashMapStringInfos.cpp */; };
|
||||
1E2CD00A15939E5D00D858D1 /* hashMapStringInfos.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9915939E5D00D858D1 /* hashMapStringInfos.h */; };
|
||||
1E2CD00B15939E5D00D858D1 /* infosHasher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9A15939E5D00D858D1 /* infosHasher.cpp */; };
|
||||
1E2CD00C15939E5D00D858D1 /* infosHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9B15939E5D00D858D1 /* infosHasher.h */; };
|
||||
1E2CD00D15939E5D00D858D1 /* stringHasher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9C15939E5D00D858D1 /* stringHasher.cpp */; };
|
||||
1E2CD00E15939E5D00D858D1 /* stringHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9D15939E5D00D858D1 /* stringHasher.h */; };
|
||||
1E2CD00F15939E5D00D858D1 /* stringInfosHasher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCF9E15939E5D00D858D1 /* stringInfosHasher.cpp */; };
|
||||
1E2CD01015939E5D00D858D1 /* stringInfosHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCF9F15939E5D00D858D1 /* stringInfosHasher.h */; };
|
||||
1E2CD01115939E5D00D858D1 /* terAlignment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFA015939E5D00D858D1 /* terAlignment.cpp */; };
|
||||
1E2CD01215939E5D00D858D1 /* terAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFA115939E5D00D858D1 /* terAlignment.h */; };
|
||||
1E2CD01315939E5D00D858D1 /* tercalc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFA215939E5D00D858D1 /* tercalc.cpp */; };
|
||||
1E2CD01415939E5D00D858D1 /* tercalc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFA315939E5D00D858D1 /* tercalc.h */; };
|
||||
1E2CD01515939E5D00D858D1 /* terShift.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFA415939E5D00D858D1 /* terShift.cpp */; };
|
||||
1E2CD01615939E5D00D858D1 /* terShift.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFA515939E5D00D858D1 /* terShift.h */; };
|
||||
1E2CD01715939E5D00D858D1 /* tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFA615939E5D00D858D1 /* tools.cpp */; };
|
||||
1E2CD01815939E5D00D858D1 /* tools.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFA715939E5D00D858D1 /* tools.h */; };
|
||||
1E2CD01915939E5D00D858D1 /* TerScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFA815939E5D00D858D1 /* TerScorer.cpp */; };
|
||||
1E2CD01A15939E5D00D858D1 /* TerScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFA915939E5D00D858D1 /* TerScorer.h */; };
|
||||
1E2CD01C15939E5D00D858D1 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFAE15939E5D00D858D1 /* Timer.cpp */; };
|
||||
1E2CD01D15939E5D00D858D1 /* Timer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFAF15939E5D00D858D1 /* Timer.h */; };
|
||||
1E2CD01F15939E5D00D858D1 /* Types.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFB215939E5D00D858D1 /* Types.h */; };
|
||||
1E2CD02015939E5D00D858D1 /* Util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFB315939E5D00D858D1 /* Util.cpp */; };
|
||||
1E2CD02115939E5D00D858D1 /* Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFB415939E5D00D858D1 /* Util.h */; };
|
||||
1E2CD02315939E5D00D858D1 /* Vocabulary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E2CCFB615939E5D00D858D1 /* Vocabulary.cpp */; };
|
||||
1E2CD02415939E5D00D858D1 /* Vocabulary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CCFB715939E5D00D858D1 /* Vocabulary.h */; };
|
||||
1E39621B1594CFD1006FE978 /* PermutationScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E3962191594CFD1006FE978 /* PermutationScorer.cpp */; };
|
||||
1E3962201594CFF9006FE978 /* Permutation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E39621E1594CFF9006FE978 /* Permutation.cpp */; };
|
||||
1E3962211594CFF9006FE978 /* Permutation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E39621F1594CFF9006FE978 /* Permutation.h */; };
|
||||
1E3962231594D0FF006FE978 /* SentenceLevelScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E3962221594D0FF006FE978 /* SentenceLevelScorer.cpp */; };
|
||||
1E3962251594D12C006FE978 /* SentenceLevelScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E3962241594D12C006FE978 /* SentenceLevelScorer.h */; };
|
||||
1E43CA3415973474000E29D3 /* PermutationScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E43CA3315973474000E29D3 /* PermutationScorer.h */; };
|
||||
1EE52B561596B3E4006DC938 /* StatisticsBasedScorer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE52B551596B3E4006DC938 /* StatisticsBasedScorer.h */; };
|
||||
1EE52B591596B3FC006DC938 /* StatisticsBasedScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EE52B581596B3FC006DC938 /* StatisticsBasedScorer.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1E2CCF3315939E2D00D858D1 /* libmert_lib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmert_lib.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1E2CCF3A15939E5D00D858D1 /* BleuScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BleuScorer.cpp; path = ../../mert/BleuScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF3B15939E5D00D858D1 /* BleuScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BleuScorer.h; path = ../../mert/BleuScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF3D15939E5D00D858D1 /* CderScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CderScorer.cpp; path = ../../mert/CderScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF3E15939E5D00D858D1 /* CderScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CderScorer.h; path = ../../mert/CderScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF3F15939E5D00D858D1 /* Data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Data.cpp; path = ../../mert/Data.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF4015939E5D00D858D1 /* Data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Data.h; path = ../../mert/Data.h; sourceTree = "<group>"; };
|
||||
1E2CCF5115939E5D00D858D1 /* Fdstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Fdstream.h; path = ../../mert/Fdstream.h; sourceTree = "<group>"; };
|
||||
1E2CCF5215939E5D00D858D1 /* FeatureArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FeatureArray.cpp; path = ../../mert/FeatureArray.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5315939E5D00D858D1 /* FeatureArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FeatureArray.h; path = ../../mert/FeatureArray.h; sourceTree = "<group>"; };
|
||||
1E2CCF5415939E5D00D858D1 /* FeatureData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FeatureData.cpp; path = ../../mert/FeatureData.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5515939E5D00D858D1 /* FeatureData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FeatureData.h; path = ../../mert/FeatureData.h; sourceTree = "<group>"; };
|
||||
1E2CCF5615939E5D00D858D1 /* FeatureDataIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FeatureDataIterator.cpp; path = ../../mert/FeatureDataIterator.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5715939E5D00D858D1 /* FeatureDataIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FeatureDataIterator.h; path = ../../mert/FeatureDataIterator.h; sourceTree = "<group>"; };
|
||||
1E2CCF5915939E5D00D858D1 /* FeatureStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FeatureStats.cpp; path = ../../mert/FeatureStats.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5A15939E5D00D858D1 /* FeatureStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FeatureStats.h; path = ../../mert/FeatureStats.h; sourceTree = "<group>"; };
|
||||
1E2CCF5B15939E5D00D858D1 /* FileStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileStream.cpp; path = ../../mert/FileStream.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5C15939E5D00D858D1 /* FileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileStream.h; path = ../../mert/FileStream.h; sourceTree = "<group>"; };
|
||||
1E2CCF5D15939E5D00D858D1 /* GzFileBuf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GzFileBuf.cpp; path = ../../mert/GzFileBuf.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF5E15939E5D00D858D1 /* GzFileBuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GzFileBuf.h; path = ../../mert/GzFileBuf.h; sourceTree = "<group>"; };
|
||||
1E2CCF5F15939E5D00D858D1 /* HypPackEnumerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HypPackEnumerator.cpp; path = ../../mert/HypPackEnumerator.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6015939E5D00D858D1 /* HypPackEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HypPackEnumerator.h; path = ../../mert/HypPackEnumerator.h; sourceTree = "<group>"; };
|
||||
1E2CCF6115939E5D00D858D1 /* InterpolatedScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InterpolatedScorer.cpp; path = ../../mert/InterpolatedScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6215939E5D00D858D1 /* InterpolatedScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InterpolatedScorer.h; path = ../../mert/InterpolatedScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF6515939E5D00D858D1 /* MergeScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MergeScorer.cpp; path = ../../mert/MergeScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6615939E5D00D858D1 /* MergeScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MergeScorer.h; path = ../../mert/MergeScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF6715939E5D00D858D1 /* mert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mert.cpp; path = ../../mert/mert.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6815939E5D00D858D1 /* MiraFeatureVector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MiraFeatureVector.cpp; path = ../../mert/MiraFeatureVector.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6915939E5D00D858D1 /* MiraFeatureVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MiraFeatureVector.h; path = ../../mert/MiraFeatureVector.h; sourceTree = "<group>"; };
|
||||
1E2CCF6A15939E5D00D858D1 /* MiraWeightVector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MiraWeightVector.cpp; path = ../../mert/MiraWeightVector.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6B15939E5D00D858D1 /* MiraWeightVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MiraWeightVector.h; path = ../../mert/MiraWeightVector.h; sourceTree = "<group>"; };
|
||||
1E2CCF6C15939E5D00D858D1 /* Ngram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Ngram.h; path = ../../mert/Ngram.h; sourceTree = "<group>"; };
|
||||
1E2CCF6E15939E5D00D858D1 /* Optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Optimizer.cpp; path = ../../mert/Optimizer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF6F15939E5D00D858D1 /* Optimizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Optimizer.h; path = ../../mert/Optimizer.h; sourceTree = "<group>"; };
|
||||
1E2CCF7015939E5D00D858D1 /* OptimizerFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptimizerFactory.cpp; path = ../../mert/OptimizerFactory.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF7115939E5D00D858D1 /* OptimizerFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptimizerFactory.h; path = ../../mert/OptimizerFactory.h; sourceTree = "<group>"; };
|
||||
1E2CCF7315939E5D00D858D1 /* PerScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PerScorer.cpp; path = ../../mert/PerScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF7415939E5D00D858D1 /* PerScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PerScorer.h; path = ../../mert/PerScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF7515939E5D00D858D1 /* Point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Point.cpp; path = ../../mert/Point.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF7615939E5D00D858D1 /* Point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Point.h; path = ../../mert/Point.h; sourceTree = "<group>"; };
|
||||
1E2CCF7815939E5D00D858D1 /* PreProcessFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PreProcessFilter.cpp; path = ../../mert/PreProcessFilter.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF7915939E5D00D858D1 /* PreProcessFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PreProcessFilter.h; path = ../../mert/PreProcessFilter.h; sourceTree = "<group>"; };
|
||||
1E2CCF7B15939E5D00D858D1 /* Reference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Reference.h; path = ../../mert/Reference.h; sourceTree = "<group>"; };
|
||||
1E2CCF7D15939E5D00D858D1 /* ScopedVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScopedVector.h; path = ../../mert/ScopedVector.h; sourceTree = "<group>"; };
|
||||
1E2CCF7E15939E5D00D858D1 /* ScoreArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScoreArray.cpp; path = ../../mert/ScoreArray.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF7F15939E5D00D858D1 /* ScoreArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScoreArray.h; path = ../../mert/ScoreArray.h; sourceTree = "<group>"; };
|
||||
1E2CCF8015939E5D00D858D1 /* ScoreData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScoreData.cpp; path = ../../mert/ScoreData.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8115939E5D00D858D1 /* ScoreData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScoreData.h; path = ../../mert/ScoreData.h; sourceTree = "<group>"; };
|
||||
1E2CCF8215939E5D00D858D1 /* ScoreDataIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScoreDataIterator.cpp; path = ../../mert/ScoreDataIterator.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8315939E5D00D858D1 /* ScoreDataIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScoreDataIterator.h; path = ../../mert/ScoreDataIterator.h; sourceTree = "<group>"; };
|
||||
1E2CCF8415939E5D00D858D1 /* Scorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Scorer.cpp; path = ../../mert/Scorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8515939E5D00D858D1 /* Scorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Scorer.h; path = ../../mert/Scorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF8615939E5D00D858D1 /* ScorerFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScorerFactory.cpp; path = ../../mert/ScorerFactory.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8715939E5D00D858D1 /* ScorerFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScorerFactory.h; path = ../../mert/ScorerFactory.h; sourceTree = "<group>"; };
|
||||
1E2CCF8815939E5D00D858D1 /* ScoreStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScoreStats.cpp; path = ../../mert/ScoreStats.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8915939E5D00D858D1 /* ScoreStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScoreStats.h; path = ../../mert/ScoreStats.h; sourceTree = "<group>"; };
|
||||
1E2CCF8A15939E5D00D858D1 /* SemposOverlapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemposOverlapping.cpp; path = ../../mert/SemposOverlapping.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8B15939E5D00D858D1 /* SemposOverlapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemposOverlapping.h; path = ../../mert/SemposOverlapping.h; sourceTree = "<group>"; };
|
||||
1E2CCF8C15939E5D00D858D1 /* SemposScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SemposScorer.cpp; path = ../../mert/SemposScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF8D15939E5D00D858D1 /* SemposScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemposScorer.h; path = ../../mert/SemposScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCF8E15939E5D00D858D1 /* Singleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Singleton.h; path = ../../mert/Singleton.h; sourceTree = "<group>"; };
|
||||
1E2CCF9115939E5D00D858D1 /* alignmentStruct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = alignmentStruct.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9215939E5D00D858D1 /* alignmentStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alignmentStruct.h; sourceTree = "<group>"; };
|
||||
1E2CCF9315939E5D00D858D1 /* bestShiftStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bestShiftStruct.h; sourceTree = "<group>"; };
|
||||
1E2CCF9415939E5D00D858D1 /* hashMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashMap.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9515939E5D00D858D1 /* hashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashMap.h; sourceTree = "<group>"; };
|
||||
1E2CCF9615939E5D00D858D1 /* hashMapInfos.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashMapInfos.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9715939E5D00D858D1 /* hashMapInfos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashMapInfos.h; sourceTree = "<group>"; };
|
||||
1E2CCF9815939E5D00D858D1 /* hashMapStringInfos.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashMapStringInfos.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9915939E5D00D858D1 /* hashMapStringInfos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashMapStringInfos.h; sourceTree = "<group>"; };
|
||||
1E2CCF9A15939E5D00D858D1 /* infosHasher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = infosHasher.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9B15939E5D00D858D1 /* infosHasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = infosHasher.h; sourceTree = "<group>"; };
|
||||
1E2CCF9C15939E5D00D858D1 /* stringHasher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringHasher.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9D15939E5D00D858D1 /* stringHasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringHasher.h; sourceTree = "<group>"; };
|
||||
1E2CCF9E15939E5D00D858D1 /* stringInfosHasher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringInfosHasher.cpp; sourceTree = "<group>"; };
|
||||
1E2CCF9F15939E5D00D858D1 /* stringInfosHasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringInfosHasher.h; sourceTree = "<group>"; };
|
||||
1E2CCFA015939E5D00D858D1 /* terAlignment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = terAlignment.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFA115939E5D00D858D1 /* terAlignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terAlignment.h; sourceTree = "<group>"; };
|
||||
1E2CCFA215939E5D00D858D1 /* tercalc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tercalc.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFA315939E5D00D858D1 /* tercalc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tercalc.h; sourceTree = "<group>"; };
|
||||
1E2CCFA415939E5D00D858D1 /* terShift.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = terShift.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFA515939E5D00D858D1 /* terShift.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terShift.h; sourceTree = "<group>"; };
|
||||
1E2CCFA615939E5D00D858D1 /* tools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tools.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFA715939E5D00D858D1 /* tools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tools.h; sourceTree = "<group>"; };
|
||||
1E2CCFA815939E5D00D858D1 /* TerScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TerScorer.cpp; path = ../../mert/TerScorer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFA915939E5D00D858D1 /* TerScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TerScorer.h; path = ../../mert/TerScorer.h; sourceTree = "<group>"; };
|
||||
1E2CCFAE15939E5D00D858D1 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Timer.cpp; path = ../../mert/Timer.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFAF15939E5D00D858D1 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Timer.h; path = ../../mert/Timer.h; sourceTree = "<group>"; };
|
||||
1E2CCFB215939E5D00D858D1 /* Types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../../mert/Types.h; sourceTree = "<group>"; };
|
||||
1E2CCFB315939E5D00D858D1 /* Util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Util.cpp; path = ../../mert/Util.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFB415939E5D00D858D1 /* Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Util.h; path = ../../mert/Util.h; sourceTree = "<group>"; };
|
||||
1E2CCFB615939E5D00D858D1 /* Vocabulary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vocabulary.cpp; path = ../../mert/Vocabulary.cpp; sourceTree = "<group>"; };
|
||||
1E2CCFB715939E5D00D858D1 /* Vocabulary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vocabulary.h; path = ../../mert/Vocabulary.h; sourceTree = "<group>"; };
|
||||
1E3962191594CFD1006FE978 /* PermutationScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PermutationScorer.cpp; path = ../../mert/PermutationScorer.cpp; sourceTree = "<group>"; };
|
||||
1E39621E1594CFF9006FE978 /* Permutation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Permutation.cpp; path = ../../mert/Permutation.cpp; sourceTree = "<group>"; };
|
||||
1E39621F1594CFF9006FE978 /* Permutation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Permutation.h; path = ../../mert/Permutation.h; sourceTree = "<group>"; };
|
||||
1E3962221594D0FF006FE978 /* SentenceLevelScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SentenceLevelScorer.cpp; path = ../../mert/SentenceLevelScorer.cpp; sourceTree = "<group>"; };
|
||||
1E3962241594D12C006FE978 /* SentenceLevelScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentenceLevelScorer.h; path = ../../mert/SentenceLevelScorer.h; sourceTree = "<group>"; };
|
||||
1E43CA3315973474000E29D3 /* PermutationScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PermutationScorer.h; path = ../../mert/PermutationScorer.h; sourceTree = "<group>"; };
|
||||
1EE52B551596B3E4006DC938 /* StatisticsBasedScorer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatisticsBasedScorer.h; path = ../../mert/StatisticsBasedScorer.h; sourceTree = "<group>"; };
|
||||
1EE52B581596B3FC006DC938 /* StatisticsBasedScorer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StatisticsBasedScorer.cpp; path = ../../mert/StatisticsBasedScorer.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1E2CCF3015939E2D00D858D1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
1E2CCF2815939E2D00D858D1 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EE52B581596B3FC006DC938 /* StatisticsBasedScorer.cpp */,
|
||||
1EE52B551596B3E4006DC938 /* StatisticsBasedScorer.h */,
|
||||
1E3962241594D12C006FE978 /* SentenceLevelScorer.h */,
|
||||
1E3962221594D0FF006FE978 /* SentenceLevelScorer.cpp */,
|
||||
1E39621E1594CFF9006FE978 /* Permutation.cpp */,
|
||||
1E39621F1594CFF9006FE978 /* Permutation.h */,
|
||||
1E3962191594CFD1006FE978 /* PermutationScorer.cpp */,
|
||||
1E43CA3315973474000E29D3 /* PermutationScorer.h */,
|
||||
1E2CCF3A15939E5D00D858D1 /* BleuScorer.cpp */,
|
||||
1E2CCF3B15939E5D00D858D1 /* BleuScorer.h */,
|
||||
1E2CCF3D15939E5D00D858D1 /* CderScorer.cpp */,
|
||||
1E2CCF3E15939E5D00D858D1 /* CderScorer.h */,
|
||||
1E2CCF3F15939E5D00D858D1 /* Data.cpp */,
|
||||
1E2CCF4015939E5D00D858D1 /* Data.h */,
|
||||
1E2CCF5115939E5D00D858D1 /* Fdstream.h */,
|
||||
1E2CCF5215939E5D00D858D1 /* FeatureArray.cpp */,
|
||||
1E2CCF5315939E5D00D858D1 /* FeatureArray.h */,
|
||||
1E2CCF5415939E5D00D858D1 /* FeatureData.cpp */,
|
||||
1E2CCF5515939E5D00D858D1 /* FeatureData.h */,
|
||||
1E2CCF5615939E5D00D858D1 /* FeatureDataIterator.cpp */,
|
||||
1E2CCF5715939E5D00D858D1 /* FeatureDataIterator.h */,
|
||||
1E2CCF5915939E5D00D858D1 /* FeatureStats.cpp */,
|
||||
1E2CCF5A15939E5D00D858D1 /* FeatureStats.h */,
|
||||
1E2CCF5B15939E5D00D858D1 /* FileStream.cpp */,
|
||||
1E2CCF5C15939E5D00D858D1 /* FileStream.h */,
|
||||
1E2CCF5D15939E5D00D858D1 /* GzFileBuf.cpp */,
|
||||
1E2CCF5E15939E5D00D858D1 /* GzFileBuf.h */,
|
||||
1E2CCF5F15939E5D00D858D1 /* HypPackEnumerator.cpp */,
|
||||
1E2CCF6015939E5D00D858D1 /* HypPackEnumerator.h */,
|
||||
1E2CCF6115939E5D00D858D1 /* InterpolatedScorer.cpp */,
|
||||
1E2CCF6215939E5D00D858D1 /* InterpolatedScorer.h */,
|
||||
1E2CCF6515939E5D00D858D1 /* MergeScorer.cpp */,
|
||||
1E2CCF6615939E5D00D858D1 /* MergeScorer.h */,
|
||||
1E2CCF6715939E5D00D858D1 /* mert.cpp */,
|
||||
1E2CCF6815939E5D00D858D1 /* MiraFeatureVector.cpp */,
|
||||
1E2CCF6915939E5D00D858D1 /* MiraFeatureVector.h */,
|
||||
1E2CCF6A15939E5D00D858D1 /* MiraWeightVector.cpp */,
|
||||
1E2CCF6B15939E5D00D858D1 /* MiraWeightVector.h */,
|
||||
1E2CCF6C15939E5D00D858D1 /* Ngram.h */,
|
||||
1E2CCF6E15939E5D00D858D1 /* Optimizer.cpp */,
|
||||
1E2CCF6F15939E5D00D858D1 /* Optimizer.h */,
|
||||
1E2CCF7015939E5D00D858D1 /* OptimizerFactory.cpp */,
|
||||
1E2CCF7115939E5D00D858D1 /* OptimizerFactory.h */,
|
||||
1E2CCF7315939E5D00D858D1 /* PerScorer.cpp */,
|
||||
1E2CCF7415939E5D00D858D1 /* PerScorer.h */,
|
||||
1E2CCF7515939E5D00D858D1 /* Point.cpp */,
|
||||
1E2CCF7615939E5D00D858D1 /* Point.h */,
|
||||
1E2CCF7815939E5D00D858D1 /* PreProcessFilter.cpp */,
|
||||
1E2CCF7915939E5D00D858D1 /* PreProcessFilter.h */,
|
||||
1E2CCF7B15939E5D00D858D1 /* Reference.h */,
|
||||
1E2CCF7D15939E5D00D858D1 /* ScopedVector.h */,
|
||||
1E2CCF7E15939E5D00D858D1 /* ScoreArray.cpp */,
|
||||
1E2CCF7F15939E5D00D858D1 /* ScoreArray.h */,
|
||||
1E2CCF8015939E5D00D858D1 /* ScoreData.cpp */,
|
||||
1E2CCF8115939E5D00D858D1 /* ScoreData.h */,
|
||||
1E2CCF8215939E5D00D858D1 /* ScoreDataIterator.cpp */,
|
||||
1E2CCF8315939E5D00D858D1 /* ScoreDataIterator.h */,
|
||||
1E2CCF8415939E5D00D858D1 /* Scorer.cpp */,
|
||||
1E2CCF8515939E5D00D858D1 /* Scorer.h */,
|
||||
1E2CCF8615939E5D00D858D1 /* ScorerFactory.cpp */,
|
||||
1E2CCF8715939E5D00D858D1 /* ScorerFactory.h */,
|
||||
1E2CCF8815939E5D00D858D1 /* ScoreStats.cpp */,
|
||||
1E2CCF8915939E5D00D858D1 /* ScoreStats.h */,
|
||||
1E2CCF8A15939E5D00D858D1 /* SemposOverlapping.cpp */,
|
||||
1E2CCF8B15939E5D00D858D1 /* SemposOverlapping.h */,
|
||||
1E2CCF8C15939E5D00D858D1 /* SemposScorer.cpp */,
|
||||
1E2CCF8D15939E5D00D858D1 /* SemposScorer.h */,
|
||||
1E2CCF8E15939E5D00D858D1 /* Singleton.h */,
|
||||
1E2CCF9015939E5D00D858D1 /* TER */,
|
||||
1E2CCFA815939E5D00D858D1 /* TerScorer.cpp */,
|
||||
1E2CCFA915939E5D00D858D1 /* TerScorer.h */,
|
||||
1E2CCFAE15939E5D00D858D1 /* Timer.cpp */,
|
||||
1E2CCFAF15939E5D00D858D1 /* Timer.h */,
|
||||
1E2CCFB215939E5D00D858D1 /* Types.h */,
|
||||
1E2CCFB315939E5D00D858D1 /* Util.cpp */,
|
||||
1E2CCFB415939E5D00D858D1 /* Util.h */,
|
||||
1E2CCFB615939E5D00D858D1 /* Vocabulary.cpp */,
|
||||
1E2CCFB715939E5D00D858D1 /* Vocabulary.h */,
|
||||
1E2CCF3415939E2D00D858D1 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1E2CCF3415939E2D00D858D1 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E2CCF3315939E2D00D858D1 /* libmert_lib.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1E2CCF9015939E5D00D858D1 /* TER */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E2CCF9115939E5D00D858D1 /* alignmentStruct.cpp */,
|
||||
1E2CCF9215939E5D00D858D1 /* alignmentStruct.h */,
|
||||
1E2CCF9315939E5D00D858D1 /* bestShiftStruct.h */,
|
||||
1E2CCF9415939E5D00D858D1 /* hashMap.cpp */,
|
||||
1E2CCF9515939E5D00D858D1 /* hashMap.h */,
|
||||
1E2CCF9615939E5D00D858D1 /* hashMapInfos.cpp */,
|
||||
1E2CCF9715939E5D00D858D1 /* hashMapInfos.h */,
|
||||
1E2CCF9815939E5D00D858D1 /* hashMapStringInfos.cpp */,
|
||||
1E2CCF9915939E5D00D858D1 /* hashMapStringInfos.h */,
|
||||
1E2CCF9A15939E5D00D858D1 /* infosHasher.cpp */,
|
||||
1E2CCF9B15939E5D00D858D1 /* infosHasher.h */,
|
||||
1E2CCF9C15939E5D00D858D1 /* stringHasher.cpp */,
|
||||
1E2CCF9D15939E5D00D858D1 /* stringHasher.h */,
|
||||
1E2CCF9E15939E5D00D858D1 /* stringInfosHasher.cpp */,
|
||||
1E2CCF9F15939E5D00D858D1 /* stringInfosHasher.h */,
|
||||
1E2CCFA015939E5D00D858D1 /* terAlignment.cpp */,
|
||||
1E2CCFA115939E5D00D858D1 /* terAlignment.h */,
|
||||
1E2CCFA215939E5D00D858D1 /* tercalc.cpp */,
|
||||
1E2CCFA315939E5D00D858D1 /* tercalc.h */,
|
||||
1E2CCFA415939E5D00D858D1 /* terShift.cpp */,
|
||||
1E2CCFA515939E5D00D858D1 /* terShift.h */,
|
||||
1E2CCFA615939E5D00D858D1 /* tools.cpp */,
|
||||
1E2CCFA715939E5D00D858D1 /* tools.h */,
|
||||
);
|
||||
name = TER;
|
||||
path = ../../mert/TER;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
1E2CCF3115939E2D00D858D1 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E2CCFBA15939E5D00D858D1 /* BleuScorer.h in Headers */,
|
||||
1E2CCFBD15939E5D00D858D1 /* CderScorer.h in Headers */,
|
||||
1E2CCFBF15939E5D00D858D1 /* Data.h in Headers */,
|
||||
1E2CCFC315939E5D00D858D1 /* Fdstream.h in Headers */,
|
||||
1E2CCFC515939E5D00D858D1 /* FeatureArray.h in Headers */,
|
||||
1E2CCFC715939E5D00D858D1 /* FeatureData.h in Headers */,
|
||||
1E2CCFC915939E5D00D858D1 /* FeatureDataIterator.h in Headers */,
|
||||
1E2CCFCC15939E5D00D858D1 /* FeatureStats.h in Headers */,
|
||||
1E2CCFCE15939E5D00D858D1 /* FileStream.h in Headers */,
|
||||
1E2CCFD015939E5D00D858D1 /* GzFileBuf.h in Headers */,
|
||||
1E2CCFD215939E5D00D858D1 /* HypPackEnumerator.h in Headers */,
|
||||
1E2CCFD415939E5D00D858D1 /* InterpolatedScorer.h in Headers */,
|
||||
1E2CCFD815939E5D00D858D1 /* MergeScorer.h in Headers */,
|
||||
1E2CCFDB15939E5D00D858D1 /* MiraFeatureVector.h in Headers */,
|
||||
1E2CCFDD15939E5D00D858D1 /* MiraWeightVector.h in Headers */,
|
||||
1E2CCFDE15939E5D00D858D1 /* Ngram.h in Headers */,
|
||||
1E2CCFE115939E5D00D858D1 /* Optimizer.h in Headers */,
|
||||
1E2CCFE315939E5D00D858D1 /* OptimizerFactory.h in Headers */,
|
||||
1E2CCFE615939E5D00D858D1 /* PerScorer.h in Headers */,
|
||||
1E2CCFE815939E5D00D858D1 /* Point.h in Headers */,
|
||||
1E2CCFEB15939E5D00D858D1 /* PreProcessFilter.h in Headers */,
|
||||
1E2CCFED15939E5D00D858D1 /* Reference.h in Headers */,
|
||||
1E2CCFEF15939E5D00D858D1 /* ScopedVector.h in Headers */,
|
||||
1E2CCFF115939E5D00D858D1 /* ScoreArray.h in Headers */,
|
||||
1E2CCFF315939E5D00D858D1 /* ScoreData.h in Headers */,
|
||||
1E2CCFF515939E5D00D858D1 /* ScoreDataIterator.h in Headers */,
|
||||
1E2CCFF715939E5D00D858D1 /* Scorer.h in Headers */,
|
||||
1E2CCFF915939E5D00D858D1 /* ScorerFactory.h in Headers */,
|
||||
1E2CCFFB15939E5D00D858D1 /* ScoreStats.h in Headers */,
|
||||
1E2CCFFD15939E5D00D858D1 /* SemposOverlapping.h in Headers */,
|
||||
1E2CCFFF15939E5D00D858D1 /* SemposScorer.h in Headers */,
|
||||
1E2CD00015939E5D00D858D1 /* Singleton.h in Headers */,
|
||||
1E2CD00315939E5D00D858D1 /* alignmentStruct.h in Headers */,
|
||||
1E2CD00415939E5D00D858D1 /* bestShiftStruct.h in Headers */,
|
||||
1E2CD00615939E5D00D858D1 /* hashMap.h in Headers */,
|
||||
1E2CD00815939E5D00D858D1 /* hashMapInfos.h in Headers */,
|
||||
1E2CD00A15939E5D00D858D1 /* hashMapStringInfos.h in Headers */,
|
||||
1E2CD00C15939E5D00D858D1 /* infosHasher.h in Headers */,
|
||||
1E2CD00E15939E5D00D858D1 /* stringHasher.h in Headers */,
|
||||
1E2CD01015939E5D00D858D1 /* stringInfosHasher.h in Headers */,
|
||||
1E2CD01215939E5D00D858D1 /* terAlignment.h in Headers */,
|
||||
1E2CD01415939E5D00D858D1 /* tercalc.h in Headers */,
|
||||
1E2CD01615939E5D00D858D1 /* terShift.h in Headers */,
|
||||
1E2CD01815939E5D00D858D1 /* tools.h in Headers */,
|
||||
1E2CD01A15939E5D00D858D1 /* TerScorer.h in Headers */,
|
||||
1E2CD01D15939E5D00D858D1 /* Timer.h in Headers */,
|
||||
1E2CD01F15939E5D00D858D1 /* Types.h in Headers */,
|
||||
1E2CD02115939E5D00D858D1 /* Util.h in Headers */,
|
||||
1E2CD02415939E5D00D858D1 /* Vocabulary.h in Headers */,
|
||||
1E3962211594CFF9006FE978 /* Permutation.h in Headers */,
|
||||
1E3962251594D12C006FE978 /* SentenceLevelScorer.h in Headers */,
|
||||
1EE52B561596B3E4006DC938 /* StatisticsBasedScorer.h in Headers */,
|
||||
1E43CA3415973474000E29D3 /* PermutationScorer.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1E2CCF3215939E2D00D858D1 /* mert_lib */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1E2CCF3715939E2D00D858D1 /* Build configuration list for PBXNativeTarget "mert_lib" */;
|
||||
buildPhases = (
|
||||
1E2CCF2F15939E2D00D858D1 /* Sources */,
|
||||
1E2CCF3015939E2D00D858D1 /* Frameworks */,
|
||||
1E2CCF3115939E2D00D858D1 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = mert_lib;
|
||||
productName = mert_lib;
|
||||
productReference = 1E2CCF3315939E2D00D858D1 /* libmert_lib.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
1E2CCF2A15939E2D00D858D1 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1E2CCF2D15939E2D00D858D1 /* Build configuration list for PBXProject "mert_lib" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 1E2CCF2815939E2D00D858D1;
|
||||
productRefGroup = 1E2CCF3415939E2D00D858D1 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1E2CCF3215939E2D00D858D1 /* mert_lib */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1E2CCF2F15939E2D00D858D1 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E2CCFB915939E5D00D858D1 /* BleuScorer.cpp in Sources */,
|
||||
1E2CCFBC15939E5D00D858D1 /* CderScorer.cpp in Sources */,
|
||||
1E2CCFBE15939E5D00D858D1 /* Data.cpp in Sources */,
|
||||
1E2CCFC415939E5D00D858D1 /* FeatureArray.cpp in Sources */,
|
||||
1E2CCFC615939E5D00D858D1 /* FeatureData.cpp in Sources */,
|
||||
1E2CCFC815939E5D00D858D1 /* FeatureDataIterator.cpp in Sources */,
|
||||
1E2CCFCB15939E5D00D858D1 /* FeatureStats.cpp in Sources */,
|
||||
1E2CCFCD15939E5D00D858D1 /* FileStream.cpp in Sources */,
|
||||
1E2CCFCF15939E5D00D858D1 /* GzFileBuf.cpp in Sources */,
|
||||
1E2CCFD115939E5D00D858D1 /* HypPackEnumerator.cpp in Sources */,
|
||||
1E2CCFD315939E5D00D858D1 /* InterpolatedScorer.cpp in Sources */,
|
||||
1E2CCFD715939E5D00D858D1 /* MergeScorer.cpp in Sources */,
|
||||
1E2CCFD915939E5D00D858D1 /* mert.cpp in Sources */,
|
||||
1E2CCFDA15939E5D00D858D1 /* MiraFeatureVector.cpp in Sources */,
|
||||
1E2CCFDC15939E5D00D858D1 /* MiraWeightVector.cpp in Sources */,
|
||||
1E2CCFE015939E5D00D858D1 /* Optimizer.cpp in Sources */,
|
||||
1E2CCFE215939E5D00D858D1 /* OptimizerFactory.cpp in Sources */,
|
||||
1E2CCFE515939E5D00D858D1 /* PerScorer.cpp in Sources */,
|
||||
1E2CCFE715939E5D00D858D1 /* Point.cpp in Sources */,
|
||||
1E2CCFEA15939E5D00D858D1 /* PreProcessFilter.cpp in Sources */,
|
||||
1E2CCFF015939E5D00D858D1 /* ScoreArray.cpp in Sources */,
|
||||
1E2CCFF215939E5D00D858D1 /* ScoreData.cpp in Sources */,
|
||||
1E2CCFF415939E5D00D858D1 /* ScoreDataIterator.cpp in Sources */,
|
||||
1E2CCFF615939E5D00D858D1 /* Scorer.cpp in Sources */,
|
||||
1E2CCFF815939E5D00D858D1 /* ScorerFactory.cpp in Sources */,
|
||||
1E2CCFFA15939E5D00D858D1 /* ScoreStats.cpp in Sources */,
|
||||
1E2CCFFC15939E5D00D858D1 /* SemposOverlapping.cpp in Sources */,
|
||||
1E2CCFFE15939E5D00D858D1 /* SemposScorer.cpp in Sources */,
|
||||
1E2CD00215939E5D00D858D1 /* alignmentStruct.cpp in Sources */,
|
||||
1E2CD00515939E5D00D858D1 /* hashMap.cpp in Sources */,
|
||||
1E2CD00715939E5D00D858D1 /* hashMapInfos.cpp in Sources */,
|
||||
1E2CD00915939E5D00D858D1 /* hashMapStringInfos.cpp in Sources */,
|
||||
1E2CD00B15939E5D00D858D1 /* infosHasher.cpp in Sources */,
|
||||
1E2CD00D15939E5D00D858D1 /* stringHasher.cpp in Sources */,
|
||||
1E2CD00F15939E5D00D858D1 /* stringInfosHasher.cpp in Sources */,
|
||||
1E2CD01115939E5D00D858D1 /* terAlignment.cpp in Sources */,
|
||||
1E2CD01315939E5D00D858D1 /* tercalc.cpp in Sources */,
|
||||
1E2CD01515939E5D00D858D1 /* terShift.cpp in Sources */,
|
||||
1E2CD01715939E5D00D858D1 /* tools.cpp in Sources */,
|
||||
1E2CD01915939E5D00D858D1 /* TerScorer.cpp in Sources */,
|
||||
1E2CD01C15939E5D00D858D1 /* Timer.cpp in Sources */,
|
||||
1E2CD02015939E5D00D858D1 /* Util.cpp in Sources */,
|
||||
1E2CD02315939E5D00D858D1 /* Vocabulary.cpp in Sources */,
|
||||
1E39621B1594CFD1006FE978 /* PermutationScorer.cpp in Sources */,
|
||||
1E3962201594CFF9006FE978 /* Permutation.cpp in Sources */,
|
||||
1E3962231594D0FF006FE978 /* SentenceLevelScorer.cpp in Sources */,
|
||||
1EE52B591596B3FC006DC938 /* StatisticsBasedScorer.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1E2CCF3515939E2D00D858D1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1E2CCF3615939E2D00D858D1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1E2CCF3815939E2D00D858D1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1E2CCF3915939E2D00D858D1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../..,
|
||||
/opt/local/include,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1E2CCF2D15939E2D00D858D1 /* Build configuration list for PBXProject "mert_lib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1E2CCF3515939E2D00D858D1 /* Debug */,
|
||||
1E2CCF3615939E2D00D858D1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1E2CCF3715939E2D00D858D1 /* Build configuration list for PBXNativeTarget "mert_lib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1E2CCF3815939E2D00D858D1 /* Debug */,
|
||||
1E2CCF3915939E2D00D858D1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 1E2CCF2A15939E2D00D858D1 /* Project object */;
|
||||
}
|
0
contrib/web/bin/daemon.pl
Normal file → Executable file
0
contrib/web/bin/daemon.pl
Normal file → Executable file
@ -44,7 +44,7 @@ GITREPO="$MCC_GITREPO"
|
||||
# location of moses regression test data archive (assumes url at the moment)
|
||||
REGTEST_ARCHIVE="$MCC_REGTEST_ARCHIVE"
|
||||
[ -n "$REGTEST_ARCHIVE" ] \
|
||||
|| REGTEST_ARCHIVE="http://www.statmt.org/moses/reg-testing/moses-reg-test-data-10.tgz"
|
||||
|| REGTEST_ARCHIVE="http://www.statmt.org/moses/reg-testing/moses-reg-test-data-12.tgz"
|
||||
|
||||
if [ ! -d "$WORKDIR" ]; then
|
||||
mkdir "$WORKDIR" || die "Failed to create workdir $WORKDIR"
|
||||
|
@ -13,8 +13,13 @@ rule _shell ( cmd : extras * ) {
|
||||
return [ trim-nl [ SHELL $(cmd) : $(extras) ] ] ;
|
||||
}
|
||||
|
||||
cxxflags = [ os.environ "CXXFLAGS" ] ;
|
||||
cflags = [ os.environ "CFLAGS" ] ;
|
||||
ldflags = [ os.environ "LDFLAGS" ] ;
|
||||
|
||||
#Run g++ with empty main and these arguments to see if it passes.
|
||||
rule test_flags ( flags * ) {
|
||||
flags = $(cxxflags) $(ldflags) $(flags) ;
|
||||
local cmd = "bash -c \"g++ "$(flags:J=" ")" -x c++ - <<<'int main() {}' -o /dev/null >/dev/null 2>/dev/null\"" ;
|
||||
local ret = [ SHELL $(cmd) : exit-status ] ;
|
||||
if --debug-configuration in [ modules.peek : ARGV ] {
|
||||
@ -28,6 +33,14 @@ rule test_flags ( flags * ) {
|
||||
}
|
||||
}
|
||||
|
||||
rule test_header ( name ) {
|
||||
return [ test_flags "-include $(name)" ] ;
|
||||
}
|
||||
|
||||
rule test_library ( name ) {
|
||||
return [ test_flags "-l$(name)" ] ;
|
||||
}
|
||||
|
||||
{
|
||||
local cleaning = [ option.get "clean" : : yes ] ;
|
||||
cleaning ?= [ option.get "clean-all" : no : yes ] ;
|
||||
@ -60,6 +73,7 @@ if $(with-macports) {
|
||||
}
|
||||
else {
|
||||
with-boost = [ option.get "with-boost" ] ;
|
||||
with-boost ?= [ os.environ "BOOST_ROOT" ] ;
|
||||
if $(with-boost) {
|
||||
L-boost-search = -L$(with-boost)/lib" "-L$(with-boost)/lib64 ;
|
||||
boost-search = <search>$(with-boost)/lib <search>$(with-boost)/lib64 ;
|
||||
@ -134,10 +148,6 @@ rule external-lib ( name : search-path * ) {
|
||||
|
||||
requirements = ;
|
||||
{
|
||||
local cxxflags = [ os.environ "CXXFLAGS" ] ;
|
||||
local cflags = [ os.environ "CFLAGS" ] ;
|
||||
local ldflags = [ os.environ "LDFLAGS" ] ;
|
||||
|
||||
#Boost jam's static clang for Linux is buggy.
|
||||
requirements += <cxxflags>$(cxxflags) <cflags>$(cflags) <linkflags>$(ldflags) <os>LINUX,<toolset>clang:<link>shared ;
|
||||
|
||||
@ -163,9 +173,9 @@ if $(prefix) {
|
||||
prefix = $(TOP)$(GITTAG) ;
|
||||
}
|
||||
|
||||
bindir = [ option.get "bindir" : $(prefix)/bin ] ;
|
||||
libdir = [ option.get "libdir" : $(prefix)/lib ] ;
|
||||
rule install-bin-libs ( deps * ) {
|
||||
local bindir = [ option.get "bindir" : $(prefix)/bin ] ;
|
||||
local libdir = [ option.get "libdir" : $(prefix)/lib ] ;
|
||||
install prefix-bin : $(deps) : <location>$(bindir) <install-dependencies>on <install-type>EXE <link>shared:<dll-path>$(libdir) ;
|
||||
install prefix-lib : $(deps) : <location>$(libdir) <install-dependencies>on <install-type>LIB <link>shared:<dll-path>$(libdir) ;
|
||||
}
|
||||
@ -174,3 +184,9 @@ rule install-headers ( name : list * : source-root ? ) {
|
||||
source-root ?= "." ;
|
||||
install $(name) : $(list) : <location>$(includedir) <install-source-root>$(source-root) ;
|
||||
}
|
||||
|
||||
rule build-projects ( projects * ) {
|
||||
for p in $(projects) {
|
||||
build-project $(p) ;
|
||||
}
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ void BleuScorer::prepareStats(size_t sid, const string& text, ScoreStats& entry)
|
||||
entry.set(stats);
|
||||
}
|
||||
|
||||
float BleuScorer::calculateScore(const vector<int>& comps) const
|
||||
statscore_t BleuScorer::calculateScore(const vector<int>& comps) const
|
||||
{
|
||||
CHECK(comps.size() == kBleuNgramOrder * 2 + 1);
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include "Types.h"
|
||||
#include "ScoreData.h"
|
||||
#include "Scorer.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
#include "ScopedVector.h"
|
||||
|
||||
const int kBleuNgramOrder = 4;
|
||||
@ -32,7 +32,7 @@ public:
|
||||
|
||||
virtual void setReferenceFiles(const std::vector<std::string>& referenceFiles);
|
||||
virtual void prepareStats(std::size_t sid, const std::string& text, ScoreStats& entry);
|
||||
virtual float calculateScore(const std::vector<int>& comps) const;
|
||||
virtual statscore_t calculateScore(const std::vector<int>& comps) const;
|
||||
virtual std::size_t NumberOfScores() const { return 2 * kBleuNgramOrder + 1; }
|
||||
|
||||
int CalcReferenceLength(std::size_t sentence_id, std::size_t length);
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "Types.h"
|
||||
#include "Scorer.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
/**
|
||||
* CderScorer class can compute both CDER and WER metric.
|
||||
|
@ -45,6 +45,10 @@ CderScorer.cpp
|
||||
MergeScorer.cpp
|
||||
Vocabulary.cpp
|
||||
PreProcessFilter.cpp
|
||||
SentenceLevelScorer.cpp
|
||||
Permutation.cpp
|
||||
PermutationScorer.cpp
|
||||
StatisticsBasedScorer.cpp
|
||||
../util//kenutil m ..//z ;
|
||||
|
||||
exe mert : mert.cpp mert_lib ../moses/src//ThreadPool ;
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "Scorer.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
class PerScorer;
|
||||
class ScoreStats;
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "Types.h"
|
||||
#include "Scorer.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
class ScoreStats;
|
||||
|
||||
|
320
mert/Permutation.cpp
Normal file
320
mert/Permutation.cpp
Normal file
@ -0,0 +1,320 @@
|
||||
/*
|
||||
* Permutation.cpp
|
||||
* met - Minimum Error Training
|
||||
*
|
||||
* Created by Alexandra Birch 18/11/09.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include "Permutation.h"
|
||||
#include "Util.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
Permutation::Permutation(const string &alignment, const int sourceLength, const int targetLength )
|
||||
{
|
||||
if (sourceLength > 0) {
|
||||
set(alignment, sourceLength);
|
||||
}
|
||||
m_targetLength = targetLength;
|
||||
}
|
||||
|
||||
size_t Permutation::getLength() const
|
||||
{
|
||||
return int(m_array.size());
|
||||
}
|
||||
void Permutation::dump() const
|
||||
{
|
||||
int j=0;
|
||||
for (vector<int>::const_iterator i = m_array.begin(); i !=m_array.end(); i++) {
|
||||
cout << "(";
|
||||
cout << j << ":" << *i ;
|
||||
cout << "), ";
|
||||
j++;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
|
||||
//Sent alignment string
|
||||
//Eg: "0-1 0-0 1-2 3-0 4-5 6-7 "
|
||||
// Inidiviual word alignments which can be one-one,
|
||||
// or null aligned, or many-many. The format is sourcepos - targetpos
|
||||
//Its the output of the berkley aligner subtracting 1 from each number
|
||||
//sourceLength needed because last source words might not be aligned
|
||||
void Permutation::set(const string & alignment,const int sourceLength)
|
||||
{
|
||||
|
||||
//cout << "******** Permutation::set :" << alignment << ": len : " << sourceLength <<endl;
|
||||
|
||||
if(sourceLength <= 0) {
|
||||
//not found
|
||||
cerr << "Source sentence length not positive:"<< sourceLength << endl;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (alignment.length() <= 0) {
|
||||
//alignment empty - could happen but not good
|
||||
cerr << "Alignment string empty:"<< alignment << endl;
|
||||
}
|
||||
|
||||
//Tokenise on whitespace
|
||||
string buf; // Have a buffer string
|
||||
stringstream ss(alignment); // Insert the string into a stream
|
||||
vector<string> tokens; // Create vector to hold our words
|
||||
while (ss >> buf)
|
||||
tokens.push_back(buf);
|
||||
|
||||
vector<int> tempPerm(sourceLength, -1);
|
||||
//Set tempPerm to have one target position per source position
|
||||
for (size_t i=0; i<tokens.size(); i++) {
|
||||
string temp = tokens[i];
|
||||
int posDelimeter = temp.find("-");
|
||||
if(posDelimeter == int(string::npos)) {
|
||||
cerr << "Delimiter not found - :"<< tokens[i] << endl;
|
||||
exit(1);
|
||||
}
|
||||
int sourcePos = atoi((temp.substr(0, posDelimeter)).c_str());
|
||||
int targetPos = atoi((temp.substr(posDelimeter+1)).c_str());
|
||||
//cout << "SP:" << sourcePos << " TP:" << targetPos << endl;
|
||||
if (sourcePos > sourceLength) {
|
||||
cerr << "Source sentence length:" << sourceLength << " is smaller than alignment source position:" << sourcePos << endl;
|
||||
exit(1);
|
||||
}
|
||||
//If have multiple target pos aligned to one source,
|
||||
// then ignore all but first alignment
|
||||
if (tempPerm[sourcePos] == -1 || tempPerm[sourcePos] > targetPos) {
|
||||
tempPerm[sourcePos] = targetPos;
|
||||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
//Set final permutation in m_array
|
||||
//Take care of: source - null
|
||||
// multiple_source - one target
|
||||
// unaligned target
|
||||
// Input: 1-9 2-1 4-3 4-4 5-6 6-6 7-6 8-8
|
||||
// Convert source: 1 2 3 4 5 6 7 8
|
||||
// target: 9 1 -1 3 6 6 6 8 -> 8 1 2 3 4 5 6 7
|
||||
|
||||
// 1st step: Add null aligned source to previous alignment
|
||||
// target: 9 1 -1 3 6 6 6 8 -> 9 1 1 3 6 6 6 8
|
||||
int last=0;
|
||||
m_array.assign(sourceLength, -1);
|
||||
//get a searcheable index
|
||||
multimap<int, int> invMap;
|
||||
multimap<int, int>::iterator it;
|
||||
//cout << " SourceP -> TargetP " << endl;
|
||||
for (size_t i=0; i<tempPerm.size(); i++) {
|
||||
if (tempPerm[i] == -1) {
|
||||
tempPerm[i] = last;
|
||||
} else {
|
||||
last = tempPerm[i];
|
||||
}
|
||||
//cout << i << " -> " << tempPerm[i] << endl;
|
||||
//Key is target pos, value is source pos
|
||||
invMap.insert(pair<int,int>(tempPerm[i],int(i)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 2nd step: Get target into index of multimap and sort
|
||||
// Convert source: 1 2 3 4 5 6 7 8
|
||||
// target: 9 1 0 3 6 6 6 8 -> 0 1 3 6 6 6 8 9
|
||||
// source: 3 2 4 5 6 7 8 1
|
||||
int i=0;
|
||||
//cout << " TargetP => SourceP : TargetIndex " << endl;
|
||||
for ( it=invMap.begin() ; it != invMap.end(); it++ ) {
|
||||
//cout << (*it).first << " => " << (*it).second << " : " << i << endl;
|
||||
//find source position
|
||||
m_array[(*it).second] = i;
|
||||
i++;
|
||||
}
|
||||
|
||||
bool ok = checkValidPermutation(m_array);
|
||||
//dump();
|
||||
if (!ok) {
|
||||
throw runtime_error(" Created invalid permutation");
|
||||
}
|
||||
}
|
||||
|
||||
//Static
|
||||
vector<int> Permutation::invert(const vector<int> & inVector)
|
||||
{
|
||||
vector<int> outVector(inVector.size());
|
||||
for (size_t i=0; i<inVector.size(); i++) {
|
||||
outVector[inVector[i]] = int(i);
|
||||
}
|
||||
return outVector;
|
||||
}
|
||||
|
||||
//Static
|
||||
//Permutations start at 0
|
||||
bool Permutation::checkValidPermutation(vector<int> const & inVector)
|
||||
{
|
||||
vector<int> test(inVector.size(),-1);
|
||||
for (size_t i=0; i< inVector.size(); i++) {
|
||||
//No multiple entries of same value allowed
|
||||
if (test[inVector[i]] > -1) {
|
||||
cerr << "Permutation error: multiple entries of same value\n" << endl;
|
||||
return false;
|
||||
}
|
||||
test[inVector[i]] ++;
|
||||
}
|
||||
for (size_t i=0; i<inVector.size(); i++) {
|
||||
//No holes allowed
|
||||
if (test[inVector[i]] == -1) {
|
||||
cerr << "Permutation error: missing values\n" << endl;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//TODO default to HAMMING
|
||||
//Note: it returns the distance that is not normalised
|
||||
float Permutation::distance(const Permutation &permCompare, const distanceMetric_t &type) const
|
||||
{
|
||||
float score=0;
|
||||
|
||||
//cout << "*****Permutation::distance" <<endl;
|
||||
//cout << "Ref:" << endl;
|
||||
//dump();
|
||||
//cout << "Comp:" << endl;
|
||||
//permCompare.dump();
|
||||
|
||||
if (type == HAMMING_DISTANCE) {
|
||||
score = calculateHamming(permCompare);
|
||||
} else if (type == KENDALL_DISTANCE) {
|
||||
score = calculateKendall(permCompare);
|
||||
} else {
|
||||
throw runtime_error("Distance type not valid");
|
||||
}
|
||||
|
||||
float brevityPenalty = 1.0 - (float) permCompare.getTargetLength()/getTargetLength() ;//reflength divided by trans length
|
||||
if (brevityPenalty < 0.0) {
|
||||
score = score * exp(brevityPenalty);
|
||||
}
|
||||
|
||||
//cout << "Distance type:" << type << endl;
|
||||
//cout << "Score: "<< score << endl;
|
||||
return score;
|
||||
}
|
||||
|
||||
|
||||
float Permutation::calculateHamming(const Permutation & compare) const
|
||||
{
|
||||
float score=0;
|
||||
vector<int> compareArray = compare.getArray();
|
||||
if (getLength() != compare.getLength()) {
|
||||
cerr << "1stperm: " << getLength() << " 2ndperm: " << compare.getLength() << endl;
|
||||
throw runtime_error("Length of permutations not equal");
|
||||
}
|
||||
if (getLength() == 0) {
|
||||
cerr << "Empty permutation" << endl;
|
||||
return 0;
|
||||
}
|
||||
for (size_t i=0; i<getLength(); i++) {
|
||||
if (m_array[i] != compareArray[i]) {
|
||||
score++;
|
||||
}
|
||||
|
||||
}
|
||||
score = 1 - (score / getLength());
|
||||
return score;
|
||||
}
|
||||
|
||||
float Permutation::calculateKendall(const Permutation & compare) const
|
||||
{
|
||||
float score=0;
|
||||
vector<int> compareArray = compare.getArray();
|
||||
if (getLength() != compare.getLength()) {
|
||||
cerr << "1stperm: " << getLength() << " 2ndperm: " << compare.getLength() << endl;
|
||||
throw runtime_error("Length of permutations not equal");
|
||||
}
|
||||
if (getLength() == 0) {
|
||||
cerr << "Empty permutation" << endl;
|
||||
return 0;
|
||||
}
|
||||
for (size_t i=0; i<getLength(); i++) {
|
||||
for (size_t j=0; j<getLength(); j++) {
|
||||
if ((m_array[i] < m_array[j]) && (compareArray[i] > compareArray[j])) {
|
||||
score++;
|
||||
}
|
||||
}
|
||||
}
|
||||
score = (score / ((getLength()*getLength() - getLength()) /2 ) );
|
||||
//Adjusted Kendall's tau correlates better with human judgements
|
||||
score = sqrt (score);
|
||||
score = 1 - score;
|
||||
|
||||
return score;
|
||||
}
|
||||
|
||||
vector<int> Permutation::getArray() const
|
||||
{
|
||||
vector<int> ret = m_array;
|
||||
return ret;
|
||||
}
|
||||
|
||||
//Static
|
||||
//This function is called with test which is
|
||||
// the 5th field in moses nbest output when called with -include-alignment-in-n-best
|
||||
//eg. 0=0 1-2=1-2 3=3 4=4 5=5 6=6 7-9=7-8 10=9 11-13=10-11 (source-target)
|
||||
string Permutation::convertMosesToStandard(string const & alignment)
|
||||
{
|
||||
if (alignment.length() == 0) {
|
||||
cerr << "Alignment input string empty" << endl;
|
||||
}
|
||||
string working = alignment;
|
||||
string out;
|
||||
|
||||
stringstream oss;
|
||||
while (working.length() > 0) {
|
||||
string align;
|
||||
getNextPound(working,align," ");
|
||||
|
||||
//If found an alignment
|
||||
if (align.length() > 0) {
|
||||
size_t posDelimeter = align.find("=");
|
||||
if(posDelimeter== string::npos) {
|
||||
cerr << "Delimiter not found = :"<< align << endl;
|
||||
exit(0);
|
||||
}
|
||||
int firstSourcePos,lastSourcePos,firstTargetPos,lastTargetPos;
|
||||
string sourcePoss = align.substr(0, posDelimeter);
|
||||
string targetPoss = align.substr(posDelimeter+1);
|
||||
posDelimeter = sourcePoss.find("-");
|
||||
if(posDelimeter < string::npos) {
|
||||
firstSourcePos = atoi((sourcePoss.substr(0, posDelimeter)).c_str());
|
||||
lastSourcePos = atoi((sourcePoss.substr(posDelimeter+1)).c_str());
|
||||
} else {
|
||||
firstSourcePos = atoi(sourcePoss.c_str());
|
||||
lastSourcePos = firstSourcePos;
|
||||
}
|
||||
posDelimeter = targetPoss.find("-");
|
||||
if(posDelimeter < string::npos) {
|
||||
firstTargetPos = atoi((targetPoss.substr(0, posDelimeter)).c_str());
|
||||
lastTargetPos = atoi((targetPoss.substr(posDelimeter+1)).c_str());
|
||||
} else {
|
||||
firstTargetPos = atoi(targetPoss.c_str());
|
||||
lastTargetPos = firstTargetPos;
|
||||
}
|
||||
for (int i = firstSourcePos; i <= lastSourcePos; i++) {
|
||||
for (int j = firstTargetPos; j <= lastTargetPos; j++) {
|
||||
oss << i << "-" << j << " ";
|
||||
}
|
||||
}
|
||||
|
||||
} //else case where two spaces ?
|
||||
}
|
||||
out = oss.str();
|
||||
//cout << "ConverttoStandard: " << out << endl;
|
||||
|
||||
return out;
|
||||
}
|
||||
|
66
mert/Permutation.h
Normal file
66
mert/Permutation.h
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Permutation.h
|
||||
* met - Minimum Error Training
|
||||
*
|
||||
* Created by Alexandra Birch 18 Nov 2009.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PERMUTATION_H
|
||||
#define PERMUTATION_H
|
||||
|
||||
|
||||
#include <limits>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include "Util.h"
|
||||
|
||||
|
||||
class Permutation
|
||||
{
|
||||
|
||||
public:
|
||||
//Can be HAMMING_DISTANCE or KENDALLS_DISTANCE
|
||||
Permutation(const std::string &alignment = std::string(), const int sourceLength = 0, const int targetLength = 0 );
|
||||
|
||||
~Permutation() {};
|
||||
|
||||
inline void clear() {
|
||||
m_array.clear();
|
||||
}
|
||||
inline size_t size() {
|
||||
return m_array.size();
|
||||
}
|
||||
|
||||
|
||||
void set(const std::string &alignment,const int sourceLength);
|
||||
|
||||
float distance(const Permutation &permCompare, const distanceMetric_t &strategy = HAMMING_DISTANCE) const;
|
||||
|
||||
//Const
|
||||
void dump() const;
|
||||
size_t getLength() const;
|
||||
std::vector<int> getArray() const;
|
||||
int getTargetLength() const {
|
||||
return m_targetLength;
|
||||
}
|
||||
|
||||
|
||||
//Static
|
||||
static std::string convertMosesToStandard(std::string const & alignment);
|
||||
static std::vector<int> invert(std::vector<int> const & inVector);
|
||||
static bool checkValidPermutation(std::vector<int> const & inVector);
|
||||
|
||||
protected:
|
||||
std::vector<int> m_array;
|
||||
int m_targetLength;
|
||||
float calculateHamming(const Permutation & compare) const;
|
||||
float calculateKendall(const Permutation & compare) const;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
#endif
|
216
mert/PermutationScorer.cpp
Normal file
216
mert/PermutationScorer.cpp
Normal file
@ -0,0 +1,216 @@
|
||||
#include <cassert>
|
||||
#include "PermutationScorer.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
const int PermutationScorer::SCORE_PRECISION = 5;
|
||||
|
||||
PermutationScorer::PermutationScorer(const string &distanceMetric, const string &config)
|
||||
:StatisticsBasedScorer(distanceMetric,config)
|
||||
{
|
||||
//configure regularisation
|
||||
|
||||
static string KEY_REFCHOICE = "refchoice";
|
||||
static string REFCHOICE_AVERAGE = "average";
|
||||
static string REFCHOICE_CLOSEST = "closest";
|
||||
|
||||
string refchoice = getConfig(KEY_REFCHOICE,REFCHOICE_CLOSEST);
|
||||
if (refchoice == REFCHOICE_AVERAGE) {
|
||||
m_refChoiceStrategy = REFERENCE_CHOICE_AVERAGE;
|
||||
} else if (refchoice == REFCHOICE_CLOSEST) {
|
||||
m_refChoiceStrategy = REFERENCE_CHOICE_CLOSEST;
|
||||
} else {
|
||||
throw runtime_error("Unknown reference choice strategy: " + refchoice);
|
||||
}
|
||||
cerr << "Using reference choice strategy: " << refchoice << endl;
|
||||
|
||||
if (distanceMetric.compare("HAMMING") == 0) {
|
||||
m_distanceMetric = HAMMING_DISTANCE;
|
||||
} else if (distanceMetric.compare("KENDALL") == 0) {
|
||||
m_distanceMetric = KENDALL_DISTANCE;
|
||||
}
|
||||
cerr << "Using permutation distance metric: " << distanceMetric << endl;
|
||||
|
||||
//Get reference alignments from scconfig refalign option
|
||||
static string KEY_ALIGNMENT_FILES = "refalign";
|
||||
string refalign = getConfig(KEY_ALIGNMENT_FILES,"");
|
||||
//cout << refalign << endl;
|
||||
if (refalign.length() > 0) {
|
||||
string substring;
|
||||
while (!refalign.empty()) {
|
||||
getNextPound(refalign, substring, "+");
|
||||
m_referenceAlignments.push_back(substring);
|
||||
}
|
||||
}
|
||||
|
||||
//Get length of source sentences read in from scconfig source option
|
||||
// this is essential for extractor but unneccesary for mert executable
|
||||
static string KEY_SOURCE_FILE = "source";
|
||||
string sourceFile = getConfig(KEY_SOURCE_FILE,"");
|
||||
if (sourceFile.length() > 0) {
|
||||
cerr << "Loading source sentence lengths from " << sourceFile << endl;
|
||||
ifstream sourcein(sourceFile.c_str());
|
||||
if (!sourcein) {
|
||||
throw runtime_error("Unable to open: " + sourceFile);
|
||||
}
|
||||
string line;
|
||||
while (getline(sourcein,line)) {
|
||||
size_t wordNumber = 0;
|
||||
string word;
|
||||
while(!line.empty()) {
|
||||
getNextPound(line, word, " ");
|
||||
wordNumber++;
|
||||
}
|
||||
m_sourceLengths.push_back(wordNumber);
|
||||
}
|
||||
sourcein.close();
|
||||
}
|
||||
}
|
||||
|
||||
void PermutationScorer::setReferenceFiles(const vector<string>& referenceFiles)
|
||||
{
|
||||
cout << "*******setReferenceFiles" << endl;
|
||||
//make sure reference data is clear
|
||||
m_referencePerms.clear();
|
||||
|
||||
vector< vector< int> > targetLengths;
|
||||
//Just getting target length from reference text file
|
||||
for (size_t i = 0; i < referenceFiles.size(); ++i) {
|
||||
vector <int> lengths;
|
||||
cout << "Loading reference from " << referenceFiles[i] << endl;
|
||||
ifstream refin(referenceFiles[i].c_str());
|
||||
if (!refin) {
|
||||
cerr << "Unable to open: " << referenceFiles[i] << endl;
|
||||
throw runtime_error("Unable to open alignment file");
|
||||
}
|
||||
string line;
|
||||
while (getline(refin,line)) {
|
||||
int count = getNumberWords(line);
|
||||
lengths.push_back(count);
|
||||
}
|
||||
targetLengths.push_back(lengths);
|
||||
}
|
||||
|
||||
//load reference data
|
||||
//NOTE ignoring normal reference file, only using previously saved alignment reference files
|
||||
for (size_t i = 0; i < m_referenceAlignments.size(); ++i) {
|
||||
vector<Permutation> referencePerms;
|
||||
cout << "Loading reference from " << m_referenceAlignments[i] << endl;
|
||||
ifstream refin(m_referenceAlignments[i].c_str());
|
||||
if (!refin) {
|
||||
cerr << "Unable to open: " << m_referenceAlignments[i] << endl;
|
||||
throw runtime_error("Unable to open alignment file");
|
||||
}
|
||||
string line;
|
||||
size_t sid = 0; //sentence counter
|
||||
while (getline(refin,line)) {
|
||||
//cout << line << endl;
|
||||
|
||||
//Line needs to be of the format: 0-0 1-1 1-2 etc source-target
|
||||
Permutation perm(line, m_sourceLengths[sid],targetLengths[i][sid]);
|
||||
//perm.dump();
|
||||
referencePerms.push_back(perm);
|
||||
//check the source sentence length is the same for previous file
|
||||
if (perm.getLength() != m_sourceLengths[sid]) {
|
||||
cerr << "Permutation Length: " << perm.getLength() << endl;
|
||||
cerr << "Source length: " << m_sourceLengths[sid] << " for sid " << sid << endl;
|
||||
throw runtime_error("Source sentence lengths not the same: ");
|
||||
}
|
||||
|
||||
sid++;
|
||||
}
|
||||
m_referencePerms.push_back(referencePerms);
|
||||
}
|
||||
}
|
||||
|
||||
int PermutationScorer::getNumberWords (const string& text) const
|
||||
{
|
||||
int count = 0;
|
||||
string line = trimStr(text);
|
||||
if (line.length()>0) {
|
||||
int pos = line.find(" ");
|
||||
while (pos!=int(string::npos)) {
|
||||
count++;
|
||||
pos = line.find(" ",pos+1);
|
||||
}
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
void PermutationScorer::prepareStats(size_t sid, const string& text, ScoreStats& entry)
|
||||
{
|
||||
//cout << "*******prepareStats" ;
|
||||
//cout << text << endl;
|
||||
//cout << sid << endl;
|
||||
//cout << "Reference0align:" << endl;
|
||||
//m_referencePerms[0][sid].dump();
|
||||
|
||||
|
||||
string sentence = "";
|
||||
string align = text;
|
||||
size_t alignmentData = text.find("|||");
|
||||
//Get sentence and alignment parts
|
||||
if(alignmentData != string::npos) {
|
||||
getNextPound(align,sentence, "|||");
|
||||
} else {
|
||||
align = text;
|
||||
}
|
||||
int translationLength = getNumberWords(sentence);
|
||||
|
||||
|
||||
//A vector of Permutations for each sentence
|
||||
vector< vector<Permutation> > nBestPerms;
|
||||
float distanceValue;
|
||||
|
||||
//need to create permutations for each nbest line
|
||||
string standardFormat = Permutation::convertMosesToStandard(align);
|
||||
Permutation perm(standardFormat, m_sourceLengths[sid],translationLength);
|
||||
//perm.dump();
|
||||
|
||||
if (m_refChoiceStrategy == REFERENCE_CHOICE_AVERAGE) {
|
||||
float total = 0;
|
||||
for (size_t i = 0; i < m_referencePerms.size(); ++i) {
|
||||
float dist = perm.distance(m_referencePerms[i][sid], m_distanceMetric);
|
||||
total += dist;
|
||||
//cout << "Ref number: " << i << " distance: " << dist << endl;
|
||||
}
|
||||
float mean = (float)total/m_referencePerms.size();
|
||||
//cout << "MultRef strategy AVERAGE: total " << total << " mean " << mean << " number " << m_referencePerms.size() << endl;
|
||||
distanceValue = mean;
|
||||
} else if (m_refChoiceStrategy == REFERENCE_CHOICE_CLOSEST) {
|
||||
float max_val = 0;
|
||||
|
||||
for (size_t i = 0; i < m_referencePerms.size(); ++i) {
|
||||
//look for the closest reference
|
||||
float value = perm.distance(m_referencePerms[i][sid], m_distanceMetric);
|
||||
//cout << "Ref number: " << i << " distance: " << value << endl;
|
||||
if (value > max_val) {
|
||||
max_val = value;
|
||||
}
|
||||
}
|
||||
distanceValue = max_val;
|
||||
//cout << "MultRef strategy CLOSEST: max_val " << distanceValue << endl;
|
||||
} else {
|
||||
throw runtime_error("Unsupported reflength strategy");
|
||||
}
|
||||
|
||||
//SCOREROUT eg: 0.04546
|
||||
ostringstream tempStream;
|
||||
tempStream.precision(SCORE_PRECISION);
|
||||
tempStream << distanceValue;
|
||||
string str = tempStream.str();
|
||||
entry.set(str);
|
||||
|
||||
//cout << tempStream.str();
|
||||
}
|
||||
|
||||
//Will just be final score
|
||||
statscore_t PermutationScorer::calculateScore(const vector<int>& comps) const
|
||||
{
|
||||
//cerr << "*******PermutationScorer::calculateScore" ;
|
||||
//cerr << " " << comps[0] << endl;
|
||||
return comps[0];
|
||||
}
|
||||
|
65
mert/PermutationScorer.h
Normal file
65
mert/PermutationScorer.h
Normal file
@ -0,0 +1,65 @@
|
||||
#ifndef __PERMUTATIONSCORER_H__
|
||||
#define __PERMUTATIONSCORER_H__
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <iterator>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <limits.h>
|
||||
#include "Types.h"
|
||||
#include "ScoreData.h"
|
||||
#include "Scorer.h"
|
||||
#include "Permutation.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
/**
|
||||
* Permutation
|
||||
**/
|
||||
class PermutationScorer: public StatisticsBasedScorer
|
||||
{
|
||||
|
||||
public:
|
||||
PermutationScorer(const std::string &distanceMetric = "HAMMING",
|
||||
const std::string &config = std::string());
|
||||
void setReferenceFiles(const std::vector<std::string>& referenceFiles);
|
||||
void prepareStats(size_t sid, const std::string& text, ScoreStats& entry);
|
||||
static const int SCORE_PRECISION;
|
||||
|
||||
size_t NumberOfScores() const {
|
||||
//cerr << "PermutationScorer number of scores: 1" << endl;
|
||||
return 1;
|
||||
};
|
||||
bool useAlignment() const {
|
||||
//cout << "PermutationScorer::useAlignment returning true" << endl;
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
protected:
|
||||
statscore_t calculateScore(const std::vector<int>& scores) const;
|
||||
PermutationScorer(const PermutationScorer&);
|
||||
~PermutationScorer() {};
|
||||
PermutationScorer& operator=(const PermutationScorer&);
|
||||
int getNumberWords (const std::string & line) const;
|
||||
|
||||
distanceMetricReferenceChoice_t m_refChoiceStrategy;
|
||||
distanceMetric_t m_distanceMetric;
|
||||
|
||||
// data extracted from reference files
|
||||
// A vector of permutations for each reference file
|
||||
std::vector< std::vector<Permutation> > m_referencePerms;
|
||||
std::vector<size_t> m_sourceLengths;
|
||||
std::vector<std::string> m_referenceAlignments;
|
||||
|
||||
private:
|
||||
};
|
||||
//TODO need to read in floats for scores - necessary for selecting mean reference strategy and for BLEU?
|
||||
|
||||
|
||||
#endif //__PERMUTATIONSCORER_H
|
||||
|
140
mert/Scorer.cpp
140
mert/Scorer.cpp
@ -8,36 +8,6 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace {
|
||||
|
||||
//regularisation strategies
|
||||
inline float score_min(const statscores_t& scores, size_t start, size_t end)
|
||||
{
|
||||
float min = numeric_limits<float>::max();
|
||||
for (size_t i = start; i < end; ++i) {
|
||||
if (scores[i] < min) {
|
||||
min = scores[i];
|
||||
}
|
||||
}
|
||||
return min;
|
||||
}
|
||||
|
||||
inline float score_average(const statscores_t& scores, size_t start, size_t end)
|
||||
{
|
||||
if ((end - start) < 1) {
|
||||
// this shouldn't happen
|
||||
return 0;
|
||||
}
|
||||
float total = 0;
|
||||
for (size_t j = start; j < end; ++j) {
|
||||
total += scores[j];
|
||||
}
|
||||
|
||||
return total / (end - start);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Scorer::Scorer(const string& name, const string& config)
|
||||
: m_name(name),
|
||||
m_vocab(mert::VocabularyFactory::GetVocabulary()),
|
||||
@ -160,110 +130,10 @@ string Scorer::applyFilter(const string& sentence) const
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
StatisticsBasedScorer::StatisticsBasedScorer(const string& name, const string& config)
|
||||
: Scorer(name,config) {
|
||||
//configure regularisation
|
||||
static string KEY_TYPE = "regtype";
|
||||
static string KEY_WINDOW = "regwin";
|
||||
static string KEY_CASE = "case";
|
||||
static string TYPE_NONE = "none";
|
||||
static string TYPE_AVERAGE = "average";
|
||||
static string TYPE_MINIMUM = "min";
|
||||
static string TRUE = "true";
|
||||
static string FALSE = "false";
|
||||
|
||||
string type = getConfig(KEY_TYPE,TYPE_NONE);
|
||||
if (type == TYPE_NONE) {
|
||||
m_regularization_type = NONE;
|
||||
} else if (type == TYPE_AVERAGE) {
|
||||
m_regularization_type = AVERAGE;
|
||||
} else if (type == TYPE_MINIMUM) {
|
||||
m_regularization_type = MINIMUM;
|
||||
} else {
|
||||
throw runtime_error("Unknown scorer regularisation strategy: " + type);
|
||||
}
|
||||
// cerr << "Using scorer regularisation strategy: " << type << endl;
|
||||
|
||||
const string& window = getConfig(KEY_WINDOW, "0");
|
||||
m_regularization_window = atoi(window.c_str());
|
||||
// cerr << "Using scorer regularisation window: " << m_regularization_window << endl;
|
||||
|
||||
const string& preserve_case = getConfig(KEY_CASE,TRUE);
|
||||
if (preserve_case == TRUE) {
|
||||
m_enable_preserve_case = true;
|
||||
} else if (preserve_case == FALSE) {
|
||||
m_enable_preserve_case = false;
|
||||
}
|
||||
// cerr << "Using case preservation: " << m_enable_preserve_case << endl;
|
||||
float Scorer::score(const candidates_t& candidates) const {
|
||||
diffs_t diffs;
|
||||
statscores_t scores;
|
||||
score(candidates, diffs, scores);
|
||||
return scores[0];
|
||||
}
|
||||
|
||||
void StatisticsBasedScorer::score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores) const
|
||||
{
|
||||
if (!m_score_data) {
|
||||
throw runtime_error("Score data not loaded");
|
||||
}
|
||||
// calculate the score for the candidates
|
||||
if (m_score_data->size() == 0) {
|
||||
throw runtime_error("Score data is empty");
|
||||
}
|
||||
if (candidates.size() == 0) {
|
||||
throw runtime_error("No candidates supplied");
|
||||
}
|
||||
int numCounts = m_score_data->get(0,candidates[0]).size();
|
||||
vector<int> totals(numCounts);
|
||||
for (size_t i = 0; i < candidates.size(); ++i) {
|
||||
ScoreStats stats = m_score_data->get(i,candidates[i]);
|
||||
if (stats.size() != totals.size()) {
|
||||
stringstream msg;
|
||||
msg << "Statistics for (" << "," << candidates[i] << ") have incorrect "
|
||||
<< "number of fields. Found: " << stats.size() << " Expected: "
|
||||
<< totals.size();
|
||||
throw runtime_error(msg.str());
|
||||
}
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
totals[k] += stats.get(k);
|
||||
}
|
||||
}
|
||||
scores.push_back(calculateScore(totals));
|
||||
|
||||
candidates_t last_candidates(candidates);
|
||||
// apply each of the diffs, and get new scores
|
||||
for (size_t i = 0; i < diffs.size(); ++i) {
|
||||
for (size_t j = 0; j < diffs[i].size(); ++j) {
|
||||
size_t sid = diffs[i][j].first;
|
||||
size_t nid = diffs[i][j].second;
|
||||
size_t last_nid = last_candidates[sid];
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
int diff = m_score_data->get(sid,nid).get(k)
|
||||
- m_score_data->get(sid,last_nid).get(k);
|
||||
totals[k] += diff;
|
||||
}
|
||||
last_candidates[sid] = nid;
|
||||
}
|
||||
scores.push_back(calculateScore(totals));
|
||||
}
|
||||
|
||||
// Regularisation. This can either be none, or the min or average as described in
|
||||
// Cer, Jurafsky and Manning at WMT08.
|
||||
if (m_regularization_type == NONE || m_regularization_window <= 0) {
|
||||
// no regularisation
|
||||
return;
|
||||
}
|
||||
|
||||
// window size specifies the +/- in each direction
|
||||
statscores_t raw_scores(scores); // copy scores
|
||||
for (size_t i = 0; i < scores.size(); ++i) {
|
||||
size_t start = 0;
|
||||
if (i >= m_regularization_window) {
|
||||
start = i - m_regularization_window;
|
||||
}
|
||||
const size_t end = min(scores.size(), i + m_regularization_window + 1);
|
||||
if (m_regularization_type == AVERAGE) {
|
||||
scores[i] = score_average(raw_scores,start,end);
|
||||
} else {
|
||||
scores[i] = score_min(raw_scores,start,end);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <limits>
|
||||
#include "Types.h"
|
||||
#include "ScoreData.h"
|
||||
|
||||
@ -18,6 +19,8 @@ class Vocabulary;
|
||||
|
||||
} // namespace mert
|
||||
|
||||
enum ScorerRegularisationStrategy {REG_NONE, REG_AVERAGE, REG_MINIMUM};
|
||||
|
||||
/**
|
||||
* Superclass of all scorers and dummy implementation.
|
||||
*
|
||||
@ -77,12 +80,7 @@ class Scorer
|
||||
* Calculate the score of the sentences corresponding to the list of candidate
|
||||
* indices. Each index indicates the 1-best choice from the n-best list.
|
||||
*/
|
||||
float score(const candidates_t& candidates) const {
|
||||
diffs_t diffs;
|
||||
statscores_t scores;
|
||||
score(candidates, diffs, scores);
|
||||
return scores[0];
|
||||
}
|
||||
float score(const candidates_t& candidates) const;
|
||||
|
||||
const std::string& getName() const {
|
||||
return m_name;
|
||||
@ -165,34 +163,35 @@ class Scorer
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Abstract base class for Scorers that work by adding statistics across all
|
||||
* outout sentences, then apply some formula, e.g., BLEU, PER.
|
||||
*/
|
||||
class StatisticsBasedScorer : public Scorer
|
||||
{
|
||||
public:
|
||||
StatisticsBasedScorer(const std::string& name, const std::string& config);
|
||||
virtual ~StatisticsBasedScorer() {}
|
||||
virtual void score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores) const;
|
||||
namespace {
|
||||
|
||||
//regularisation strategies
|
||||
inline float score_min(const statscores_t& scores, size_t start, size_t end)
|
||||
{
|
||||
float min = std::numeric_limits<float>::max();
|
||||
for (size_t i = start; i < end; ++i) {
|
||||
if (scores[i] < min) {
|
||||
min = scores[i];
|
||||
}
|
||||
}
|
||||
return min;
|
||||
}
|
||||
|
||||
inline float score_average(const statscores_t& scores, size_t start, size_t end)
|
||||
{
|
||||
if ((end - start) < 1) {
|
||||
// this shouldn't happen
|
||||
return 0;
|
||||
}
|
||||
float total = 0;
|
||||
for (size_t j = start; j < end; ++j) {
|
||||
total += scores[j];
|
||||
}
|
||||
|
||||
return total / (end - start);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
protected:
|
||||
|
||||
enum RegularisationType {
|
||||
NONE,
|
||||
AVERAGE,
|
||||
MINIMUM
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate the actual score.
|
||||
*/
|
||||
virtual statscore_t calculateScore(const std::vector<int>& totals) const = 0;
|
||||
|
||||
// regularisation
|
||||
RegularisationType m_regularization_type;
|
||||
std::size_t m_regularization_window;
|
||||
};
|
||||
|
||||
#endif // MERT_SCORER_H_
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "MergeScorer.h"
|
||||
#include "InterpolatedScorer.h"
|
||||
#include "SemposScorer.h"
|
||||
#include "PermutationScorer.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
@ -21,6 +22,7 @@ vector<string> ScorerFactory::getTypes() {
|
||||
types.push_back(string("WER"));
|
||||
types.push_back(string("MERGE"));
|
||||
types.push_back(string("SEMPOS"));
|
||||
types.push_back(string("LRSCORE"));
|
||||
return types;
|
||||
}
|
||||
|
||||
@ -40,6 +42,8 @@ Scorer* ScorerFactory::getScorer(const string& type, const string& config) {
|
||||
return new SemposScorer(config);
|
||||
} else if (type == "MERGE") {
|
||||
return new MergeScorer(config);
|
||||
} else if (type == "LRSCORE") {
|
||||
return new PermutationScorer(config);
|
||||
} else {
|
||||
if (type.find(',') != string::npos) {
|
||||
return new InterpolatedScorer(type, config);
|
||||
|
@ -15,6 +15,7 @@
|
||||
// However, currently SemposScorer uses a bunch of typedefs, which are
|
||||
// used in SemposScorer as well as inherited SemposOverlapping classes.
|
||||
#include "SemposOverlapping.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
/**
|
||||
* This class represents sempos based metrics.
|
||||
|
102
mert/SentenceLevelScorer.cpp
Normal file
102
mert/SentenceLevelScorer.cpp
Normal file
@ -0,0 +1,102 @@
|
||||
//
|
||||
// SentenceLevelScorer.cpp
|
||||
// mert_lib
|
||||
//
|
||||
// Created by Hieu Hoang on 22/06/2012.
|
||||
// Copyright 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include "SentenceLevelScorer.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
/** The sentence level scores have already been calculated, just need to average them
|
||||
and include the differences. Allows scores which are floats **/
|
||||
void SentenceLevelScorer::score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores)
|
||||
{
|
||||
//cout << "*******SentenceLevelScorer::score" << endl;
|
||||
if (!m_score_data) {
|
||||
throw runtime_error("Score data not loaded");
|
||||
}
|
||||
//calculate the score for the candidates
|
||||
if (m_score_data->size() == 0) {
|
||||
throw runtime_error("Score data is empty");
|
||||
}
|
||||
if (candidates.size() == 0) {
|
||||
throw runtime_error("No candidates supplied");
|
||||
}
|
||||
int numCounts = m_score_data->get(0,candidates[0]).size();
|
||||
vector<float> totals(numCounts);
|
||||
for (size_t i = 0; i < candidates.size(); ++i) {
|
||||
//cout << " i " << i << " candi " << candidates[i] ;
|
||||
ScoreStats stats = m_score_data->get(i,candidates[i]);
|
||||
if (stats.size() != totals.size()) {
|
||||
stringstream msg;
|
||||
msg << "Statistics for (" << "," << candidates[i] << ") have incorrect "
|
||||
<< "number of fields. Found: " << stats.size() << " Expected: "
|
||||
<< totals.size();
|
||||
throw runtime_error(msg.str());
|
||||
}
|
||||
//Add up scores for all sentences, would normally be just one score
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
totals[k] += stats.get(k);
|
||||
//cout << " stats " << stats.get(k) ;
|
||||
}
|
||||
//cout << endl;
|
||||
}
|
||||
//take average
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
//cout << "totals = " << totals[k] << endl;
|
||||
//cout << "cand = " << candidates.size() << endl;
|
||||
totals[k] /= candidates.size();
|
||||
//cout << "finaltotals = " << totals[k] << endl;
|
||||
}
|
||||
|
||||
scores.push_back(calculateScore(totals));
|
||||
|
||||
candidates_t last_candidates(candidates);
|
||||
//apply each of the diffs, and get new scores
|
||||
for (size_t i = 0; i < diffs.size(); ++i) {
|
||||
for (size_t j = 0; j < diffs[i].size(); ++j) {
|
||||
size_t sid = diffs[i][j].first;
|
||||
size_t nid = diffs[i][j].second;
|
||||
//cout << "sid = " << sid << endl;
|
||||
//cout << "nid = " << nid << endl;
|
||||
size_t last_nid = last_candidates[sid];
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
float diff = m_score_data->get(sid,nid).get(k)
|
||||
- m_score_data->get(sid,last_nid).get(k);
|
||||
//cout << "diff = " << diff << endl;
|
||||
totals[k] += diff/candidates.size();
|
||||
//cout << "totals = " << totals[k] << endl;
|
||||
}
|
||||
last_candidates[sid] = nid;
|
||||
}
|
||||
scores.push_back(calculateScore(totals));
|
||||
}
|
||||
|
||||
//regularisation. This can either be none, or the min or average as described in
|
||||
//Cer, Jurafsky and Manning at WMT08
|
||||
if (_regularisationStrategy == REG_NONE || _regularisationWindow <= 0) {
|
||||
//no regularisation
|
||||
return;
|
||||
}
|
||||
|
||||
//window size specifies the +/- in each direction
|
||||
statscores_t raw_scores(scores);//copy scores
|
||||
for (size_t i = 0; i < scores.size(); ++i) {
|
||||
size_t start = 0;
|
||||
if (i >= _regularisationWindow) {
|
||||
start = i - _regularisationWindow;
|
||||
}
|
||||
size_t end = min(scores.size(), i + _regularisationWindow+1);
|
||||
if (_regularisationStrategy == REG_AVERAGE) {
|
||||
scores[i] = score_average(raw_scores,start,end);
|
||||
} else {
|
||||
scores[i] = score_min(raw_scores,start,end);
|
||||
}
|
||||
}
|
||||
}
|
83
mert/SentenceLevelScorer.h
Normal file
83
mert/SentenceLevelScorer.h
Normal file
@ -0,0 +1,83 @@
|
||||
//
|
||||
// SentenceLevelScorer.h
|
||||
// mert_lib
|
||||
//
|
||||
// Created by Hieu Hoang on 22/06/2012.
|
||||
// Copyright 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef mert_lib_SentenceLevelScorer_h
|
||||
#define mert_lib_SentenceLevelScorer_h
|
||||
|
||||
#include "Scorer.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <vector>
|
||||
#include <boost/spirit/home/support/detail/lexer/runtime_error.hpp>
|
||||
|
||||
/**
|
||||
* Abstract base class for scorers that work by using sentence level
|
||||
* statistics eg. permutation distance metrics **/
|
||||
class SentenceLevelScorer : public Scorer
|
||||
{
|
||||
|
||||
public:
|
||||
SentenceLevelScorer(const std::string& name, const std::string& config): Scorer(name,config) {
|
||||
//configure regularisation
|
||||
static std::string KEY_TYPE = "regtype";
|
||||
static std::string KEY_WINDOW = "regwin";
|
||||
static std::string KEY_CASE = "case";
|
||||
static std::string TYPE_NONE = "none";
|
||||
static std::string TYPE_AVERAGE = "average";
|
||||
static std::string TYPE_MINIMUM = "min";
|
||||
static std::string TRUE = "true";
|
||||
static std::string FALSE = "false";
|
||||
|
||||
std::string type = getConfig(KEY_TYPE,TYPE_NONE);
|
||||
if (type == TYPE_NONE) {
|
||||
_regularisationStrategy = REG_NONE;
|
||||
} else if (type == TYPE_AVERAGE) {
|
||||
_regularisationStrategy = REG_AVERAGE;
|
||||
} else if (type == TYPE_MINIMUM) {
|
||||
_regularisationStrategy = REG_MINIMUM;
|
||||
} else {
|
||||
throw boost::lexer::runtime_error("Unknown scorer regularisation strategy: " + type);
|
||||
}
|
||||
std::cerr << "Using scorer regularisation strategy: " << type << std::endl;
|
||||
|
||||
std::string window = getConfig(KEY_WINDOW,"0");
|
||||
_regularisationWindow = atoi(window.c_str());
|
||||
std::cerr << "Using scorer regularisation window: " << _regularisationWindow << std::endl;
|
||||
|
||||
std::string preservecase = getConfig(KEY_CASE,TRUE);
|
||||
if (preservecase == TRUE) {
|
||||
m_enable_preserve_case = true;
|
||||
} else if (preservecase == FALSE) {
|
||||
m_enable_preserve_case = false;
|
||||
}
|
||||
std::cerr << "Using case preservation: " << m_enable_preserve_case << std::endl;
|
||||
|
||||
|
||||
}
|
||||
~SentenceLevelScorer() {};
|
||||
virtual void score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores);
|
||||
|
||||
//calculate the actual score
|
||||
virtual statscore_t calculateScore(const std::vector<statscore_t>& totals) {
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
//regularisation
|
||||
ScorerRegularisationStrategy _regularisationStrategy;
|
||||
size_t _regularisationWindow;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
119
mert/StatisticsBasedScorer.cpp
Normal file
119
mert/StatisticsBasedScorer.cpp
Normal file
@ -0,0 +1,119 @@
|
||||
//
|
||||
// StatisticsBasedScorer.cpp
|
||||
// mert_lib
|
||||
//
|
||||
// Created by Hieu Hoang on 23/06/2012.
|
||||
// Copyright 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
StatisticsBasedScorer::StatisticsBasedScorer(const string& name, const string& config)
|
||||
: Scorer(name,config) {
|
||||
//configure regularisation
|
||||
static string KEY_TYPE = "regtype";
|
||||
static string KEY_WINDOW = "regwin";
|
||||
static string KEY_CASE = "case";
|
||||
static string TYPE_NONE = "none";
|
||||
static string TYPE_AVERAGE = "average";
|
||||
static string TYPE_MINIMUM = "min";
|
||||
static string TRUE = "true";
|
||||
static string FALSE = "false";
|
||||
|
||||
string type = getConfig(KEY_TYPE,TYPE_NONE);
|
||||
if (type == TYPE_NONE) {
|
||||
m_regularization_type = NONE;
|
||||
} else if (type == TYPE_AVERAGE) {
|
||||
m_regularization_type = AVERAGE;
|
||||
} else if (type == TYPE_MINIMUM) {
|
||||
m_regularization_type = MINIMUM;
|
||||
} else {
|
||||
throw runtime_error("Unknown scorer regularisation strategy: " + type);
|
||||
}
|
||||
// cerr << "Using scorer regularisation strategy: " << type << endl;
|
||||
|
||||
const string& window = getConfig(KEY_WINDOW, "0");
|
||||
m_regularization_window = atoi(window.c_str());
|
||||
// cerr << "Using scorer regularisation window: " << m_regularization_window << endl;
|
||||
|
||||
const string& preserve_case = getConfig(KEY_CASE,TRUE);
|
||||
if (preserve_case == TRUE) {
|
||||
m_enable_preserve_case = true;
|
||||
} else if (preserve_case == FALSE) {
|
||||
m_enable_preserve_case = false;
|
||||
}
|
||||
// cerr << "Using case preservation: " << m_enable_preserve_case << endl;
|
||||
}
|
||||
|
||||
void StatisticsBasedScorer::score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores) const
|
||||
{
|
||||
if (!m_score_data) {
|
||||
throw runtime_error("Score data not loaded");
|
||||
}
|
||||
// calculate the score for the candidates
|
||||
if (m_score_data->size() == 0) {
|
||||
throw runtime_error("Score data is empty");
|
||||
}
|
||||
if (candidates.size() == 0) {
|
||||
throw runtime_error("No candidates supplied");
|
||||
}
|
||||
int numCounts = m_score_data->get(0,candidates[0]).size();
|
||||
vector<int> totals(numCounts);
|
||||
for (size_t i = 0; i < candidates.size(); ++i) {
|
||||
ScoreStats stats = m_score_data->get(i,candidates[i]);
|
||||
if (stats.size() != totals.size()) {
|
||||
stringstream msg;
|
||||
msg << "Statistics for (" << "," << candidates[i] << ") have incorrect "
|
||||
<< "number of fields. Found: " << stats.size() << " Expected: "
|
||||
<< totals.size();
|
||||
throw runtime_error(msg.str());
|
||||
}
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
totals[k] += stats.get(k);
|
||||
}
|
||||
}
|
||||
scores.push_back(calculateScore(totals));
|
||||
|
||||
candidates_t last_candidates(candidates);
|
||||
// apply each of the diffs, and get new scores
|
||||
for (size_t i = 0; i < diffs.size(); ++i) {
|
||||
for (size_t j = 0; j < diffs[i].size(); ++j) {
|
||||
size_t sid = diffs[i][j].first;
|
||||
size_t nid = diffs[i][j].second;
|
||||
size_t last_nid = last_candidates[sid];
|
||||
for (size_t k = 0; k < totals.size(); ++k) {
|
||||
int diff = m_score_data->get(sid,nid).get(k)
|
||||
- m_score_data->get(sid,last_nid).get(k);
|
||||
totals[k] += diff;
|
||||
}
|
||||
last_candidates[sid] = nid;
|
||||
}
|
||||
scores.push_back(calculateScore(totals));
|
||||
}
|
||||
|
||||
// Regularisation. This can either be none, or the min or average as described in
|
||||
// Cer, Jurafsky and Manning at WMT08.
|
||||
if (m_regularization_type == NONE || m_regularization_window <= 0) {
|
||||
// no regularisation
|
||||
return;
|
||||
}
|
||||
|
||||
// window size specifies the +/- in each direction
|
||||
statscores_t raw_scores(scores); // copy scores
|
||||
for (size_t i = 0; i < scores.size(); ++i) {
|
||||
size_t start = 0;
|
||||
if (i >= m_regularization_window) {
|
||||
start = i - m_regularization_window;
|
||||
}
|
||||
const size_t end = min(scores.size(), i + m_regularization_window + 1);
|
||||
if (m_regularization_type == AVERAGE) {
|
||||
scores[i] = score_average(raw_scores,start,end);
|
||||
} else {
|
||||
scores[i] = score_min(raw_scores,start,end);
|
||||
}
|
||||
}
|
||||
}
|
45
mert/StatisticsBasedScorer.h
Normal file
45
mert/StatisticsBasedScorer.h
Normal file
@ -0,0 +1,45 @@
|
||||
//
|
||||
// StatisticsBasedScorer.h
|
||||
// mert_lib
|
||||
//
|
||||
// Created by Hieu Hoang on 23/06/2012.
|
||||
// Copyright 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef mert_lib_StatisticsBasedScorer_h
|
||||
#define mert_lib_StatisticsBasedScorer_h
|
||||
|
||||
#include "Scorer.h"
|
||||
/**
|
||||
* Abstract base class for Scorers that work by adding statistics across all
|
||||
* outout sentences, then apply some formula, e.g., BLEU, PER.
|
||||
*/
|
||||
class StatisticsBasedScorer : public Scorer
|
||||
{
|
||||
public:
|
||||
StatisticsBasedScorer(const std::string& name, const std::string& config);
|
||||
virtual ~StatisticsBasedScorer() {}
|
||||
virtual void score(const candidates_t& candidates, const diffs_t& diffs,
|
||||
statscores_t& scores) const;
|
||||
|
||||
protected:
|
||||
|
||||
enum RegularisationType {
|
||||
NONE,
|
||||
AVERAGE,
|
||||
MINIMUM
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate the actual score.
|
||||
*/
|
||||
virtual statscore_t calculateScore(const std::vector<int>& totals) const = 0;
|
||||
|
||||
// regularisation
|
||||
RegularisationType m_regularization_type;
|
||||
std::size_t m_regularization_window;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -6,7 +6,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "Types.h"
|
||||
#include "Scorer.h"
|
||||
#include "StatisticsBasedScorer.h"
|
||||
|
||||
class ScoreStats;
|
||||
|
||||
|
@ -39,4 +39,7 @@ typedef std::vector<ScoreArray> scoredata_t;
|
||||
typedef std::map<std::size_t, std::string> idx2name;
|
||||
typedef std::map<std::string, std::size_t> name2idx;
|
||||
|
||||
typedef enum { HAMMING_DISTANCE=0, KENDALL_DISTANCE } distanceMetric_t;
|
||||
typedef enum { REFERENCE_CHOICE_AVERAGE=0, REFERENCE_CHOICE_CLOSEST } distanceMetricReferenceChoice_t;
|
||||
|
||||
#endif // MERT_TYPE_H_
|
||||
|
@ -116,6 +116,15 @@ inline FeatureStatsType ConvertStringToFeatureStatsType(const std::string &str)
|
||||
return ConvertCharToFeatureStatsType(str.c_str());
|
||||
}
|
||||
|
||||
inline std::string trimStr(const std::string& Src, const std::string& c = " \r\n")
|
||||
{
|
||||
size_t p2 = Src.find_last_not_of(c);
|
||||
if (p2 == std::string::npos) return std::string();
|
||||
size_t p1 = Src.find_first_not_of(c);
|
||||
if (p1 == std::string::npos) p1 = 0;
|
||||
return Src.substr(p1, (p2-p1)+1);
|
||||
}
|
||||
|
||||
// Utilities to measure decoding time
|
||||
void ResetUserTime();
|
||||
void PrintUserTime(const std::string &message);
|
||||
|
@ -27,6 +27,9 @@
|
||||
#include "Util.h"
|
||||
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Moses
|
||||
{
|
||||
@ -38,25 +41,32 @@ std::auto_ptr<RuleTableLoader> RuleTableLoaderFactory::Create(
|
||||
{
|
||||
InputFileStream input(path);
|
||||
std::string line;
|
||||
std::getline(input, line);
|
||||
std::vector<std::string> tokens;
|
||||
Tokenize(tokens, line);
|
||||
if (tokens.size() == 1) {
|
||||
if (tokens[0] == "1") {
|
||||
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderCompact());
|
||||
bool cont = std::getline(input, line);
|
||||
|
||||
if (cont) {
|
||||
std::vector<std::string> tokens;
|
||||
Tokenize(tokens, line);
|
||||
if (tokens.size() == 1) {
|
||||
if (tokens[0] == "1") {
|
||||
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderCompact());
|
||||
}
|
||||
std::stringstream msg;
|
||||
msg << "Unsupported compact rule table format: " << tokens[0];
|
||||
UserMessage::Add(msg.str());
|
||||
return std::auto_ptr<RuleTableLoader>();
|
||||
}
|
||||
else if (tokens[0] == "[X]" && tokens[1] == "|||") {
|
||||
return std::auto_ptr<RuleTableLoader>(new
|
||||
RuleTableLoaderHiero());
|
||||
|
||||
}
|
||||
std::stringstream msg;
|
||||
msg << "Unsupported compact rule table format: " << tokens[0];
|
||||
UserMessage::Add(msg.str());
|
||||
return std::auto_ptr<RuleTableLoader>();
|
||||
}
|
||||
else if (tokens[0] == "[X]" && tokens[1] == "|||") {
|
||||
return std::auto_ptr<RuleTableLoader>(new
|
||||
RuleTableLoaderHiero());
|
||||
|
||||
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderStandard());
|
||||
}
|
||||
else
|
||||
{ // empty phrase table
|
||||
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderStandard());
|
||||
}
|
||||
|
||||
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderStandard());
|
||||
}
|
||||
|
||||
} // namespace Moses
|
||||
|
@ -57,7 +57,7 @@ void PhraseDictionaryALSuffixArray::InitializeForInput(InputType const& source)
|
||||
// populate with rules for this sentence
|
||||
long translationId = source.GetTranslationId();
|
||||
|
||||
string grammarFile = GetFilePath() + "/grammar.out." + SPrint(translationId);
|
||||
string grammarFile = GetFilePath() + "/grammar.out." + SPrint(translationId) + ".gz";
|
||||
|
||||
// data from file
|
||||
InputFileStream inFile(grammarFile);
|
||||
|
@ -5,16 +5,14 @@ use strict;
|
||||
# if your tests need a new version of the test data, increment this
|
||||
# and make sure that a moses-regression-tests-vX.Y is available for
|
||||
# download from statmt.org (redpony AT umd dot edu for more info)
|
||||
use constant TESTING_DATA_VERSION => '12';
|
||||
|
||||
# find the data directory in a few likely locations and make sure
|
||||
# that it is the correct version
|
||||
sub find_data_directory
|
||||
{
|
||||
my ($test_script_root, $data_dir) = @_;
|
||||
my $data_version = TESTING_DATA_VERSION;
|
||||
my @ds = ();
|
||||
my $mrtp = "moses-reg-test-data-$data_version";
|
||||
my $mrtp = "moses-reg-test-data";
|
||||
push @ds, $data_dir if defined $data_dir;
|
||||
push @ds, "$test_script_root/$mrtp";
|
||||
push @ds, "/export/ws06osmt/regression-testing/$mrtp";
|
||||
@ -41,9 +39,7 @@ standard locations: $test_script_root, /tmp, or /var/tmp with these
|
||||
commands:
|
||||
|
||||
cd <DESIRED_INSTALLATION_DIRECTORY>
|
||||
wget http://www.statmt.org/moses/reg-testing/moses-reg-test-data-$data_version.tgz
|
||||
tar xzf moses-reg-test-data-$data_version.tgz
|
||||
rm moses-reg-test-data-$data_version.tgz
|
||||
git clone https://github.com/hieuhoang/moses-reg-test-data.git
|
||||
|
||||
EOT
|
||||
exit 1;
|
||||
|
@ -332,6 +332,13 @@ build-biconcor
|
||||
default-name: model/biconcor
|
||||
ignore-unless: biconcor
|
||||
error: usage
|
||||
build-suffix-array
|
||||
in: word-alignment corpus
|
||||
out: phrase-translation-table
|
||||
default-name: model/suffix-array
|
||||
ignore-unless: suffix-array
|
||||
error: usage
|
||||
|
||||
build-lex-trans
|
||||
in: word-alignment corpus
|
||||
out: lexical-translation-table
|
||||
@ -362,6 +369,7 @@ extract-phrases
|
||||
out: extracted-phrases
|
||||
rerun-on-change: max-phrase-length translation-factors reordering-factors hierarchical-rule-set extract-settings training-options script use-ghkm
|
||||
default-name: model/extract
|
||||
ignore-if: suffix-array
|
||||
build-reordering
|
||||
in: extracted-phrases
|
||||
out: reordering-table
|
||||
@ -373,6 +381,7 @@ build-ttable
|
||||
out: phrase-translation-table
|
||||
rerun-on-change: translation-factors hierarchical-rule-set score-settings training-options script EVALUATION:report-precision-by-coverage include-word-alignment-in-rules
|
||||
default-name: model/phrase-table
|
||||
ignore-if: suffix-array
|
||||
build-generation
|
||||
in: corpus
|
||||
out: generation-table
|
||||
@ -820,6 +829,6 @@ analysis-precision
|
||||
|
||||
[REPORTING] single
|
||||
report
|
||||
in: EVALUATION:nist-bleu-score EVALUATION:nist-bleu-c-score EVALUATION:bolt-bleu-score EVALUATION:bolt-bleu-c-score EVALUATION:multi-bleu-score EVALUATION:multi-bleu-c-score EVALUATION:meteor-score EVALUATION:ter-score EVALUATION:wer-score EVALUATION:ibm-bleu-score EVALUATION:ibm-bleu-c-score EVALUATION:analysis EVALUATION:analysis-coverage EVALUATION:analysis-prec TRAINING:biconcor-model
|
||||
in: EVALUATION:nist-bleu-score EVALUATION:nist-bleu-c-score EVALUATION:bolt-bleu-score EVALUATION:bolt-bleu-c-score EVALUATION:multi-bleu-score EVALUATION:multi-bleu-c-score EVALUATION:meteor-score EVALUATION:ter-score EVALUATION:wer-score EVALUATION:ibm-bleu-score EVALUATION:ibm-bleu-c-score EVALUATION:analysis EVALUATION:analysis-coverage EVALUATION:analysis-prec TRAINING:biconcor-model
|
||||
out: report
|
||||
default-name: evaluation/report
|
||||
|
@ -916,6 +916,10 @@ sub define_step {
|
||||
elsif ($DO_STEP[$i] eq 'TRAINING:build-biconcor') {
|
||||
&define_training_build_biconcor($i);
|
||||
}
|
||||
elsif ($DO_STEP[$i] eq 'TRAINING:build-suffix-array') {
|
||||
&define_training_build_suffix_array($i);
|
||||
}
|
||||
|
||||
elsif ($DO_STEP[$i] eq 'TRAINING:build-lex-trans') {
|
||||
&define_training_build_lex_trans($i);
|
||||
}
|
||||
@ -1632,6 +1636,24 @@ sub define_training_symmetrize_giza {
|
||||
&create_step($step_id,$cmd);
|
||||
}
|
||||
|
||||
sub define_training_build_suffix_array {
|
||||
my ($step_id) = @_;
|
||||
|
||||
my $scripts = &check_and_get("GENERAL:moses-script-dir");
|
||||
|
||||
my ($model, $aligned,$corpus) = &get_output_and_input($step_id);
|
||||
my $sa_exec_dir = &check_and_get("TRAINING:suffix-array");
|
||||
my $input_extension = &check_backoff_and_get("TRAINING:input-extension");
|
||||
my $output_extension = &check_backoff_and_get("TRAINING:output-extension");
|
||||
my $method = &check_and_get("TRAINING:alignment-symmetrization-method");
|
||||
|
||||
my $glue_grammar_file = &versionize(&long_file_name("glue-grammar","model",""));
|
||||
|
||||
my $cmd = "$scripts/training/wrappers/adam-suffix-array/suffix-array-create.sh $sa_exec_dir $corpus.$input_extension $corpus.$output_extension $aligned.$method $model $glue_grammar_file";
|
||||
|
||||
&create_step($step_id,$cmd);
|
||||
}
|
||||
|
||||
sub define_training_build_biconcor {
|
||||
my ($step_id) = @_;
|
||||
|
||||
@ -1748,18 +1770,35 @@ sub define_training_build_custom_generation {
|
||||
sub define_training_create_config {
|
||||
my ($step_id) = @_;
|
||||
|
||||
my ($config,
|
||||
$reordering_table,$phrase_translation_table,$generation_table,@LM)
|
||||
= &get_output_and_input($step_id);
|
||||
my ($config,$reordering_table,$phrase_translation_table,$generation_table,@LM)
|
||||
= &get_output_and_input($step_id);
|
||||
|
||||
my $cmd = &get_training_setting(9);
|
||||
|
||||
# get model, and whether suffix array is used. Determines the pt implementation.
|
||||
my $hierarchical = &get("TRAINING:hierarchical-rule-set");
|
||||
my $sa_exec_dir = &get("TRAINING:suffix-array");
|
||||
|
||||
my ($ptImpl, $numFF);
|
||||
if ($hierarchical) {
|
||||
if ($sa_exec_dir) {
|
||||
$ptImpl = 10; # suffix array
|
||||
$numFF = 7;
|
||||
}
|
||||
else {
|
||||
$ptImpl = 6; # in-mem SCFG
|
||||
}
|
||||
}
|
||||
else {
|
||||
$ptImpl = 0; # phrase-based
|
||||
}
|
||||
|
||||
# additional settings for factored models
|
||||
$cmd .= &get_table_name_settings("translation-factors","phrase-translation-table",$phrase_translation_table);
|
||||
$cmd .= &get_table_name_settings("reordering-factors","reordering-table",$reordering_table)
|
||||
if $reordering_table;
|
||||
$cmd .= &get_table_name_settings("generation-factors","generation-table",$generation_table)
|
||||
if $generation_table;
|
||||
my $ptCmd = "$phrase_translation_table:$ptImpl";
|
||||
$ptCmd .= ":$numFF" if defined($numFF);
|
||||
$cmd .= &get_table_name_settings("translation-factors","phrase-translation-table",$ptCmd);
|
||||
$cmd .= &get_table_name_settings("reordering-factors","reordering-table",$reordering_table) if $reordering_table;
|
||||
$cmd .= &get_table_name_settings("generation-factors","generation-table",$generation_table) if $generation_table;
|
||||
$cmd .= "-config $config ";
|
||||
|
||||
my $decoding_graph_backoff = &get("TRAINING:decoding-graph-backoff");
|
||||
@ -2139,8 +2178,7 @@ sub define_tuningevaluation_filter {
|
||||
my $dir = &check_and_get("GENERAL:working-dir");
|
||||
my $tuning_flag = !defined($set);
|
||||
|
||||
my ($filter_dir,
|
||||
$input,$phrase_translation_table,$reordering_table) = &get_output_and_input($step_id);
|
||||
my ($filter_dir,$input,$phrase_translation_table,$reordering_table) = &get_output_and_input($step_id);
|
||||
|
||||
my $binarizer = &get("GENERAL:ttable-binarizer");
|
||||
my $hierarchical = &get("TRAINING:hierarchical-rule-set");
|
||||
@ -2164,10 +2202,31 @@ sub define_tuningevaluation_filter {
|
||||
$settings .= " -Binarizer \"$binarizer\"" if $binarizer;
|
||||
$settings .= " --Hierarchical" if &get("TRAINING:hierarchical-rule-set");
|
||||
|
||||
# get model, and whether suffix array is used. Determines the pt implementation.
|
||||
my $sa_exec_dir = &get("TRAINING:suffix-array");
|
||||
|
||||
my ($ptImpl, $numFF);
|
||||
if ($hierarchical) {
|
||||
if ($sa_exec_dir) {
|
||||
$ptImpl = 10; # suffix array
|
||||
$numFF = 7;
|
||||
}
|
||||
else {
|
||||
$ptImpl = 6; # in-mem SCFG
|
||||
}
|
||||
}
|
||||
else {
|
||||
$ptImpl = 0; # phrase-based
|
||||
}
|
||||
|
||||
# create pseudo-config file
|
||||
my $config = $tuning_flag ? "$dir/tuning/moses.table.ini.$VERSION" : "$dir/evaluation/$set.moses.table.ini.$VERSION";
|
||||
my $cmd = &get_training_setting(9);
|
||||
$cmd .= &get_table_name_settings("translation-factors","phrase-translation-table",$phrase_translation_table);
|
||||
|
||||
my $ptCmd = "$phrase_translation_table:$ptImpl";
|
||||
$ptCmd .= ":$numFF" if defined($numFF);
|
||||
$cmd .= &get_table_name_settings("translation-factors","phrase-translation-table", $ptCmd);
|
||||
|
||||
$cmd .= &get_table_name_settings("reordering-factors","reordering-table",$reordering_table)
|
||||
if $reordering_table;
|
||||
# additional settings for hierarchical models
|
||||
@ -2184,9 +2243,21 @@ sub define_tuningevaluation_filter {
|
||||
$cmd .= "-config $config\n";
|
||||
|
||||
# filter command
|
||||
$cmd .= "$scripts/training/filter-model-given-input.pl";
|
||||
$cmd .= " $filter_dir $config $input_filter $settings\n";
|
||||
|
||||
my $sa_exec_dir = &get("TRAINING:suffix-array");
|
||||
if ($sa_exec_dir) {
|
||||
# suffix array
|
||||
$cmd .= "$scripts/training/wrappers/adam-suffix-array/suffix-array-extract.sh $sa_exec_dir $phrase_translation_table $input_filter $filter_dir \n";
|
||||
|
||||
my $escaped_filter_dir = $filter_dir;
|
||||
$escaped_filter_dir =~ s/\//\\\\\//g;
|
||||
$cmd .= "cat $config | sed s/10\\ 0\\ 0\\ 7.*/10\\ 0\\ 0\\ 7\\ $escaped_filter_dir/g > $filter_dir/moses.ini \n";
|
||||
}
|
||||
else {
|
||||
# normal phrase table
|
||||
$cmd .= "$scripts/training/filter-model-given-input.pl";
|
||||
$cmd .= " $filter_dir $config $input_filter $settings\n";
|
||||
}
|
||||
|
||||
# clean-up
|
||||
$cmd .= "rm $config";
|
||||
|
||||
|
@ -149,7 +149,6 @@ sub train_recase_model {
|
||||
else {
|
||||
$cmd .= " --lm 0:3:$DIR/cased.srilm.gz:0";
|
||||
}
|
||||
$cmd .= " -scripts-root-dir $SCRIPTS_ROOT_DIR" if $SCRIPTS_ROOT_DIR;
|
||||
$cmd .= " -config $CONFIG" if $CONFIG;
|
||||
print STDERR $cmd."\n";
|
||||
system($cmd) == 0 || die("Recaser model training failed with error " . ($? >> 8) . "\n");
|
||||
|
@ -1839,13 +1839,27 @@ sub create_ini {
|
||||
$basic_weight_count++ if defined($_SCORE_OPTIONS) && $_SCORE_OPTIONS =~ /LowCountFeature/; # low count feature
|
||||
$basic_weight_count++ if $_PCFG;
|
||||
foreach my $f (split(/\+/,$___TRANSLATION_FACTORS)) {
|
||||
$num_of_ttables++;
|
||||
my $ff = $f;
|
||||
$ff =~ s/\-/ /;
|
||||
my $file = "$___MODEL_DIR/".($_HIERARCHICAL?"rule-table":"phrase-table").($___NOT_FACTORED ? "" : ".$f").".gz";
|
||||
$file = shift @SPECIFIED_TABLE if scalar(@SPECIFIED_TABLE);
|
||||
my $phrase_table_impl = ($_HIERARCHICAL ? 6 : 0);
|
||||
print INI "$phrase_table_impl $ff $basic_weight_count $file\n";
|
||||
$num_of_ttables++;
|
||||
my $ff = $f;
|
||||
$ff =~ s/\-/ /;
|
||||
my $file = "$___MODEL_DIR/".($_HIERARCHICAL?"rule-table":"phrase-table").($___NOT_FACTORED ? "" : ".$f").".gz";
|
||||
my $phrase_table_impl = ($_HIERARCHICAL? 6 : 0);
|
||||
|
||||
if (scalar(@SPECIFIED_TABLE)) {
|
||||
$file = shift @SPECIFIED_TABLE;
|
||||
my @toks = split(/:/,$file);
|
||||
$file = $toks[0];
|
||||
$phrase_table_impl = $toks[1];
|
||||
|
||||
if (@toks == 3) {
|
||||
$basic_weight_count = $toks[2];
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
|
||||
print INI "$phrase_table_impl $ff $basic_weight_count $file\n";
|
||||
}
|
||||
if ($_GLUE_GRAMMAR) {
|
||||
&full_path(\$___GLUE_GRAMMAR_FILE);
|
||||
|
33
scripts/training/wrappers/adam-suffix-array/suffix-array-create.sh
Executable file
33
scripts/training/wrappers/adam-suffix-array/suffix-array-create.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
# execute: ~/workspace/bin/moses-smt/scripts/training/wrappers/suffix-array-create.sh $SA_EXEC_DIR $SOURCE_CORPUS $TARGET_CORPUS $ALIGNMENT $SA_OUTPUT
|
||||
|
||||
# eg.
|
||||
#SA_EXEC_DIR=/Users/hieuhoang/workspace/github/cdec/sa-extract
|
||||
#SOURCE_CORPUS=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/training/corpus.2.fr
|
||||
#TARGET_CORPUS=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/training/corpus.2.en
|
||||
#ALIGNMENT=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/model/aligned.3.grow-diag-final-and
|
||||
#SA_OUTPUT=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/model/suffix-array.3
|
||||
|
||||
|
||||
SA_EXEC_DIR=$1
|
||||
SOURCE_CORPUS=$2
|
||||
TARGET_CORPUS=$3
|
||||
ALIGNMENT=$4
|
||||
SA_OUTPUT=$5
|
||||
GLUE_GRAMMAR=$6
|
||||
|
||||
mkdir $SA_OUTPUT
|
||||
|
||||
rm -rf $SA_OUTPUT/bitext
|
||||
|
||||
pushd .
|
||||
cd $SA_EXEC_DIR
|
||||
|
||||
./sa-compile.pl -output $SA_OUTPUT -b bitext_name=$SOURCE_CORPUS,$TARGET_CORPUS -a alignment_name=$ALIGNMENT > $SA_OUTPUT/extract.ini
|
||||
|
||||
popd
|
||||
|
||||
echo "<s> [X] ||| <s> [S] ||| 1 ||| ||| 0\n" > $GLUE_GRAMMAR
|
||||
echo "[X][S] </s> [X] ||| [X][S] </s> [S] ||| 1 ||| 0-0 ||| 0\n" >> $GLUE_GRAMMAR
|
||||
echo "[X][S] [X][X] [X] ||| [X][S] [X][X] [S] ||| 2.718 ||| 0-0 1-1 ||| 0\n" >> $GLUE_GRAMMAR
|
25
scripts/training/wrappers/adam-suffix-array/suffix-array-extract.sh
Executable file
25
scripts/training/wrappers/adam-suffix-array/suffix-array-extract.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# execute: ~/workspace/bin/moses-smt/scripts/training/wrappers/adam-suffix-array/suffix-array-extract.sh $SA_EXEC_DIR $MODEL_DIR $INPUT_FILE $OUTPUT_DIR
|
||||
|
||||
# eg.
|
||||
#SA_EXEC_DIR=/Users/hieuhoang/workspace/github/cdec/sa-extract
|
||||
#MODEL_DIR=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/model/suffix-array.3
|
||||
#INPUT_FILE=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/tuning/input.lc.2
|
||||
#OUTPUT_DIR=/Users/hieuhoang/workspace/data/europarl/exp/fr-en/tuning/filtered.sa.3
|
||||
|
||||
SA_EXEC_DIR=$1
|
||||
MODEL_DIR=$2
|
||||
INPUT_FILE=$3
|
||||
OUTPUT_DIR=$4
|
||||
|
||||
mkdir $OUTPUT_DIR
|
||||
|
||||
pushd .
|
||||
cd $OUTPUT_DIR
|
||||
|
||||
cat $INPUT_FILE | $SA_EXEC_DIR/escape-testset.pl | $SA_EXEC_DIR/extractor.py -c $MODEL_DIR/extract.ini
|
||||
gzip $OUTPUT_DIR/grammar.out.*
|
||||
|
||||
popd
|
||||
|
@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# execute: ~/workspace/bin/moses-smt/scripts/training/wrappers/suffix-array-create.sh $SA_EXEC_DIR $SOURCE_CORPUS $TARGET_CORPUS $ALIGNMENT $SA_OUTPUT
|
||||
|
||||
|
||||
SA_EXEC_DIR=$1
|
||||
SOURCE_CORPUS=$2
|
||||
TARGET_CORPUS=$3
|
||||
ALIGNMENT=$4
|
||||
SA_OUTPUT=$5
|
||||
|
||||
mkdir $SA_OUTPUT
|
||||
|
||||
rm -rf $SA_OUTPUT/bitext
|
||||
|
||||
pushd .
|
||||
cd $SA_EXEC_DIR
|
||||
|
||||
./sa-compile.pl -output $SA_OUTPUT -b bitext_name=$SOURCE_CORPUS,$TARGET_CORPUS -a alignment_name=$ALIGNMENT > $SA_OUTPUT/extract.ini
|
||||
|
||||
popd
|
||||
|
@ -1,18 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# execute: ~/workspace/bin/moses-smt/scripts/training/wrappers/suffix-array-extract.sh $SA_EXEC_DIR $MODEL_DIR $INPUT_FILE $OUTPUT_DIR
|
||||
|
||||
SA_EXEC_DIR=$1
|
||||
MODEL_DIR=$2
|
||||
INPUT_FILE=$3
|
||||
OUTPUT_DIR=$4
|
||||
|
||||
mkdir $OUTPUT_DIR
|
||||
|
||||
pushd .
|
||||
cd $OUTPUT_DIR
|
||||
|
||||
$SA_EXEC_DIR/extractor.py -c $MODEL_DIR/extract.ini < $INPUT_FILE
|
||||
|
||||
popd
|
||||
|
Loading…
Reference in New Issue
Block a user