Blame view
tools/sctk-2.4.10/src/asclite/core/alignedsegment.h
3.21 KB
8dcb6dfcb first commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
/* * ASCLITE * Author: Jerome Ajot, Jon Fiscus, Nicolas Radde, Chris Laprun * * This software was developed at the National Institute of Standards and Technology by * employees of the Federal Government in the course of their official duties. Pursuant * to title 17 Section 105 of the United States Code this software is not subject to * copyright protection and is in the public domain. ASCLITE is an experimental system. * NIST assumes no responsibility whatsoever for its use by other parties, and makes no * guarantees, expressed or implied, about its quality, reliability, or any other * characteristic. We would appreciate acknowledgement if the software is used. * * THIS SOFTWARE IS PROVIDED "AS IS." With regard to this software, NIST MAKES NO EXPRESS * OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING MERCHANTABILITY, * OR FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef ALIGNEDSEGMENT_H #define ALIGNEDSEGMENT_H #include "stdinc.h" #include "segment.h" #include "tokenalignment.h" /** * Represent the collection of TokenAlignment for a segment. */ class AlignedSegment { public: AlignedSegment(Segment* referenceSegment); ~AlignedSegment(); /** * Retrieve the (index+1)th token alignment. */ TokenAlignment* GetTokenAlignmentAt(size_t index) { return m_tokenAlignments[index]; } /** * Return the count of TokenAlignment */ size_t GetTokenAlignmentCount() { return m_tokenAlignments.size(); } /** * Add a TokenAlignment to the AlignedSegment */ void AddTokenAlignment(TokenAlignment* ta); /** * Retrieve the reference segment associated with this AlignedSegment. */ Segment* GetReferenceSegment() { return m_referenceSegment; } /** Specifies that the given hypothesis Token is the alignment for the system * identified with the given key for the given reference Token. * @param reference the reference Token * @param hypKey the string identifying the system which output is being aligned * @param hypothesis the system Token being aligned to the reference * @return an int < 0 if the addition was not successful, 0 if the addition * had already been done previously */ int AddTokenAlignment(Token* reference, const string& hypKey, Token* hypothesis); /** Retrieves the TokenAlignment associated to the specified reference Token * or NULL if no such TokenAlignment exists. * @param reference the reference Token which associated TokenAlignment is to be retrieved */ TokenAlignment* GetTokenAlignmentFor(Token* reference) { return GetTokenAlignmentFor(reference, false); } /** Returns a string representation of this AlignedSegment */ string ToString(); void SetSegGrpID(ulint _id) { m_SegGrpID = _id; } ulint GetSegGrpID() { return m_SegGrpID; }; private: vector< TokenAlignment* > m_tokenAlignments; Segment* m_referenceSegment; map< Token*, TokenAlignment* > m_refToAlignments; ulint m_SegGrpID; TokenAlignment* GetTokenAlignmentFor(Token* ref, const bool& create); }; #endif |