⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vocabdistance.h

📁 这是一款很好用的工具包
💻 H
字号:
/* * VocabDistance.h -- *	Distance metrics over vocabularies * * Copyright (c) 2000,2004 SRI International.  All Rights Reserved. * * @(#)$Header: /home/srilm/devel/lm/src/RCS/VocabDistance.h,v 1.3 2004/08/03 23:21:31 stolcke Exp $ * */#ifndef _VocabDistance_h_#define _VocabDistance_h_#include "Vocab.h"#include "SubVocab.h"#include "VocabMultiMap.h"#include "Map2.h"class VocabDistance{public:    virtual double penalty(VocabIndex w1) = 0;	/* insertion/deletion penalty */    virtual double distance(VocabIndex w1, VocabIndex w2) = 0; /* substitution*/};/* * Binary distance */class IdentityDistance: public VocabDistance{public:    IdentityDistance(Vocab &vocab) {};    double penalty(VocabIndex w1) { return 1.0; };    double distance(VocabIndex w1, VocabIndex w2) 	{ return (w1 == w2) ? 0.0 : 1.0; };};/* * Distance constrained by sub-vocabulary membership * Return distance *	0 if words are identical, *	1 if they both belong or don't belong to SubVocab, *	and infinity otherwise. */class SubVocabDistance: public VocabDistance{public:    SubVocabDistance(Vocab &vocab, SubVocab &subVocab, double infinity = 10000)       : subVocab(subVocab), infinity(infinity) {};    double penalty(VocabIndex w1) { return 1.0; };    double distance(VocabIndex w1, VocabIndex w2) {	if (w1 == w2) return 0.0;	else if ((subVocab.getWord(w1) != 0) == (subVocab.getWord(w2) != 0))	    return 1.0;	else return infinity;    }private:    SubVocab &subVocab;    double infinity;};/* * Relative phonetic distance according to dictionary */class DictionaryDistance: public VocabDistance{public:    DictionaryDistance(Vocab &vocab, VocabMultiMap &dictionary);    double penalty(VocabIndex w1) { return 1.0; };    double distance(VocabIndex w1, VocabIndex w2);private:    VocabMultiMap &dictionary;    Map2<VocabIndex,VocabIndex,double> cache;};/* * Absolute phonetic distance */class DictionaryAbsDistance: public VocabDistance{public:    DictionaryAbsDistance(Vocab &vocab, VocabMultiMap &dictionary);    double penalty(VocabIndex w1);    double distance(VocabIndex w1, VocabIndex w2);private:    VocabIndex emptyIndex;    VocabMultiMap &dictionary;    Map2<VocabIndex,VocabIndex,double> cache;};#endif /* _VocabDistance_h_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -