HowManyAreAnalyzed(): use status_user_agent to report progress
[linguistica.git] / Morpheme.cpp
blobb497187d0a4d63ff025b6bf82f61f8787c124e85
1 // Implementation of CMorpheme, CMorphemeListViewItem methods
2 // Copyright © 2009 The University of Chicago
3 #include "Morpheme.h"
5 #include <cmath>
6 #include <QString>
7 #include "MorphemeCollection.h"
8 #include "log2.h"
10 CMorphemeListViewItem::CMorphemeListViewItem( Q3ListView *parent,
11 QString label1,
12 CMorpheme* morpheme )
13 : Q3ListViewItem( parent, label1 )
15 m_morpheme = morpheme;
18 QString CMorphemeListViewItem::key( int column, bool ascending ) const
20 if( m_morpheme )
22 QString string = "";
23 switch( column )
25 case 1:
26 string = QString("%1").arg( m_morpheme->GetILogProb(), 10 );
27 return string;
28 case 2:
29 string = QString("%1").arg( m_morpheme->GetMorphemeCount(), 10 );
30 return string;
31 case 3:
32 string = QString("%1").arg( m_morpheme->GetCorpusCount(), 10 );
33 return string;
34 case 4:
35 string = QString("%1").arg( m_morpheme->GetPF(), 10 );
36 return string;
37 case 5:
38 string = QString("%1").arg( m_morpheme->GetSF(), 10 );
39 return string;
40 case 6:
41 string = QString("%1").arg( m_morpheme->GetSortingQuantity(), 10 );
42 return string;
43 case 7:
44 string = QString("%1").arg( m_morpheme->GetDLSavings(), 10 );
45 return string;
46 case 8:
47 string = QString("%1").arg( m_morpheme->GetFrequency(), 10 );
48 return string;
49 case 9:
50 string = m_morpheme->GetSuffixList()->Display('.');
51 return string;
52 default:
53 return Q3ListViewItem::key( column, ascending );
56 else return Q3ListViewItem::key( column, ascending );
59 QString CMorphemeListViewItem::text( int column ) const
61 if( m_morpheme )
63 QString string = "";
64 switch( column )
66 case 1:
67 string = QString("%1").arg( m_morpheme->GetILogProb() );
68 return string;
69 case 2:
70 string = QString("%1").arg( m_morpheme->GetMorphemeCount() );
71 return string;
72 case 3:
73 string = QString("%1").arg( m_morpheme->GetCorpusCount() );
74 return string;
75 case 4:
76 string = QString("%1").arg( m_morpheme->GetPF() );
77 return string;
78 case 5:
79 string = QString("%1").arg( m_morpheme->GetSF() );
80 return string;
81 case 6:
82 string = QString("%1").arg( m_morpheme->GetSortingQuantity() );
83 return string;
84 case 7:
85 string = QString("%1").arg( m_morpheme->GetDLSavings() );
86 return string;
87 case 8:
88 string = QString("%1").arg( m_morpheme->GetFrequency() );
89 return string;
90 case 9:
91 string = m_morpheme->GetSuffixList()->Display('.');
92 return string;
93 default:
94 return Q3ListViewItem::text( column );
97 else return Q3ListViewItem::text( column );
102 CMorpheme::CMorpheme(CMiniLexicon* lex): CLParse(lex)
107 CMorpheme::CMorpheme(CMorpheme* RHS): CLParse(*RHS,RHS->GetMyMini())
109 m_DLSavings = 0;
110 m_DLImprovementFromSuffixes = 0;
111 m_Frequency = 0;
112 m_MorphemeCount = 0;
113 m_ILogProb = 0;
114 m_SF = 0;
115 m_PF = 0;
118 CMorpheme::~CMorpheme()
125 CMorpheme::CMorpheme (CStringSurrogate SS, CMiniLexicon* mini): CLParse (SS,mini)
127 m_DLSavings = 0;
128 m_DLImprovementFromSuffixes = 0;
129 m_SF = 0;
130 m_PF = 0;
133 void CMorpheme::AddSuffix(CStringSurrogate SS)
135 // if( m_SuffixList.GetSortStyle() ) m_SuffixList.Alphabetize();
136 m_SuffixList.Append( SS );
139 CParse* CMorpheme::GetSuffixList()
141 return &m_SuffixList;
144 CParse* CMorpheme::GetPrefixList()
146 return &m_PrefixList;
149 void CMorpheme::AddPrefix(CStringSurrogate SS)
151 // if( !m_PrefixList.Alphabetical() ) m_PrefixList.Alphabetize();
152 m_PrefixList.Append( SS );
156 double CMorpheme::GetILogProb() { return m_ILogProb; }
158 void CMorpheme::SetILogProb( double d ) { m_ILogProb = d; }
160 void CMorpheme::ListDisplay(Q3ListView* List)
162 static_cast<void>(new CMorphemeListViewItem(
163 List, Display(), this));
166 double CMorpheme::GetFrequency () { return m_Frequency; }
168 void CMorpheme::SetFrequency( double f )
170 m_Frequency = f;
171 m_ILogProb = -1 * base2log ( f );
174 void CMorpheme::SetDLSavings( double d) { m_DLSavings = d; }
176 double CMorpheme::GetDLSavings() { return m_DLSavings; }
178 void CMorpheme::AddSuffixes ( CMorphemeCollection* CMC )
180 for (int i = 0; i < (int)CMC->GetCount(); i++)
181 AddSuffix ( CMC->GetAt_SS(i) );
183 void CMorpheme::CopySuffixList (CMorpheme* Morpheme)
185 m_SuffixList = Morpheme->GetSuffixList();
190 void CMorpheme::SetDLImprovementFromSuffixes ( double d ) { m_DLImprovementFromSuffixes = d; }
191 double CMorpheme::GetDLImprovementFromSuffixes () { return m_DLImprovementFromSuffixes ; }
193 void CMorpheme::IncrementMorphemeCount (double d) { m_MorphemeCount += d; }
194 void CMorpheme::SetMorphemeCount( double d ) { m_MorphemeCount = d; }
195 double CMorpheme::GetMorphemeCount () { return m_MorphemeCount; }
197 float CMorpheme::GetSortingQuantity() const
199 using std::log;
200 return log(m_PF) * log(m_SF);