1 // Implementation of CWordListViewItem, CStemListViewItem methods
2 // Copyright © 2009 The University of Chicago
3 #include "StemListViewItem.h"
5 #include <Q3ListViewItem>
10 #include "CompareFunc.h"
13 typedef QMap
<QString
, QString
> StringToString
;
15 //-------------------------------------------------------------------------------------------//
16 CStemListViewItem::CStemListViewItem( Q3ListView
*parent
,
20 StringToString
* filter
,
22 : Q3ListViewItem( parent
, stem
)
26 m_char_count
= char_count
;
29 //-------------------------------------------------------------------------------------------//
30 CStemListViewItem::CStemListViewItem( Q3ListViewItem
*parent
,
34 StringToString
* filter
,
36 : Q3ListViewItem( parent
, stem
)
40 m_char_count
= char_count
;
43 //-------------------------------------------------------------------------------------------//
44 int CStemListViewItem::compare(Q3ListViewItem
* pOther
, int col
, bool asc
) const
45 //-------------------------------------------------------------------------------------------//
47 CStemListViewItem
* other
= static_cast<CStemListViewItem
*>(pOther
);
52 if( m_Stem
) return MakeComparable (m_Stem
->GetPhonologicalInformationContent(), other
->m_Stem
->GetPhonologicalInformationContent());
54 if( m_Stem
) return MakeComparable (m_Stem
->GetLengthOfPointerToMe(), other
->GetStem()->GetLengthOfPointerToMe());
56 if( m_Stem
) return MakeComparable (m_Stem
->GetCorpusCount(), other
->GetStem()->GetCorpusCount());
58 if( m_Stem
) return MakeComparable (m_Stem
->GetUnigramLogProb(), other
->GetStem()->GetUnigramLogProb());
60 return Q3ListViewItem::compare(pOther
, col
, asc
);
64 //-------------------------------------------------------------------------------------------//
65 QString
CStemListViewItem::key( int column
, bool ascending
) const
66 //-------------------------------------------------------------------------------------------//
77 return QString("%1").arg( m_Stem
->GetCorpusCount(), 10 );
83 for (CStemListViewItem
* child
=
84 static_cast<CStemListViewItem
*>(
87 child
= static_cast<CStemListViewItem
*>(
88 child
->nextSibling()))
89 if (CStem
* stem
= child
->GetStem())
90 count
+= stem
->GetCorpusCount();
92 return QString("%1").arg( count
, 10 );
98 sigs
= m_Stem
->GetSuffixSignature();
101 return sigs
->Display('.', m_filter
);
109 sigs
= m_Stem
->GetPrefixSignature();
110 if( sigs
) return sigs
->Display('.', m_filter
);
115 if( m_Stem
) return m_Stem
->GetConfidence();
118 if( m_Stem
) return m_Stem
->DisplayStemType();
121 return m_Stem
->GetTier1()->Display();
123 return m_Stem
->GetTier1_Skeleton()->Display();
125 return m_Stem
->GetTier2()->Display();
129 return Q3ListViewItem::key( column
, ascending
);
132 //-------------------------------------------------------------------------------------------//
133 QString
CStemListViewItem::text( int column
) const
134 //-------------------------------------------------------------------------------------------//
145 if( m_Stem
) return dummy
.setNum( m_Stem
->ComputeDL( m_char_count
) );
149 if( m_Stem
) return dummy
.setNum( m_Stem
->GetLengthOfPointerToMe( ) );
156 return QString("%1").arg( m_Stem
->GetCorpusCount() );
162 for (CStemListViewItem
* child
=
163 static_cast<CStemListViewItem
*>(
166 child
= static_cast<CStemListViewItem
*>(
167 child
->nextSibling()))
168 if (CStem
* stem
= child
->GetStem())
169 count
+= stem
->GetCorpusCount();
171 return QString("%1").arg( count
);
180 sigs
= m_Stem
->GetSuffixSignature();
183 return sigs
->Display('.', m_filter
);
192 sigs
= m_Stem
->GetPrefixSignature();
193 if( sigs
) return sigs
->Display('.', m_filter
);
198 if( m_Stem
) return m_Stem
->GetConfidence();
201 if( m_Stem
) return m_Stem
->DisplayStemType();
204 return QString("%1").arg ( m_Stem
->GetUnigramLogProb() );
206 return m_Stem
->GetTier1()->Display();
208 return m_Stem
->GetTier1_Skeleton()->Display();
210 return m_Stem
->GetTier2()->Display();
212 return QString("just placeholdin'");
213 //return m_Stem->GetPhonologicalInformationContent();
216 return Q3ListViewItem::text( column
);
219 //-------------------------------------------------------------------------------------------//
220 CWordListViewItem::CWordListViewItem (Q3ListView
*parent
,
221 QString word
, int mini
, CStem
* pWord
,
222 QMap
<QString
, QString
>* filter
,
223 enum display_mode DisplayMode
, int char_count
)
224 : Q3ListViewItem( parent
, word
)
225 //-------------------------------------------------------------------------------------------//
229 m_DisplayMode
= DisplayMode
;
230 m_char_count
= char_count
;
235 m_DL
= m_pWord
->ComputeDL( m_char_count
);
236 m_prefix
= m_pWord
->GetPiece( m_pWord
->GetPrefixLoc() )
237 .Display( m_filter
);
238 m_stem
= m_pWord
->GetStem().Display( m_filter
);
239 m_suffix
= m_pWord
->GetPiece( m_pWord
->GetSuffixLoc() )
240 .Display( m_filter
);
241 m_pSig
= m_pWord
->GetSuffixSignature();
243 if ( m_pSig
== NULL
)
244 m_pSig
= m_pWord
->GetPrefixSignature();
246 if ( m_pSig
!= NULL
)
247 m_pSig
= m_pWord
->GetSuffixSignature();
249 if (m_pSig
) { m_signature
= m_pSig
->Display( '.', m_filter
); }
250 // else { m_signature = ""; }
252 // m_tier1 = m_pWord->GetTier1()->Display( ' ' );
253 // m_tier1_skeleton = m_pWord->GetTier1_Skeleton()->Display();
254 // m_tier2 = m_pWord->GetTier2()->Display();
265 m_tier1_skeleton
= "";
273 //-------------------------------------------------------------------------------------------//
274 CWordListViewItem::CWordListViewItem(Q3ListViewItem
*parent
,
275 QString word
, int mini
, CStem
* pWord
,
276 QMap
<QString
, QString
>* filter
, enum display_mode DisplayMode
,
278 : Q3ListViewItem( parent
, word
)
279 //-------------------------------------------------------------------------------------------//
283 m_DisplayMode
= DisplayMode
;
284 m_char_count
= char_count
;
288 m_DL
= m_pWord
->ComputeDL( m_char_count
);
289 m_prefix
= m_pWord
->GetPiece( m_pWord
->GetPrefixLoc() ).Display( m_filter
);
290 m_stem
= m_pWord
->GetStem().Display(m_filter
);
291 m_suffix
= m_pWord
->GetPiece( m_pWord
->GetSuffixLoc() ).Display( m_filter
);
292 m_pSig
= m_pWord
->GetSuffixSignature();
294 if( m_pSig
== NULL
) m_pSig
= m_pWord
->GetPrefixSignature();
295 if( m_pSig
!= NULL
) m_signature
= m_pSig
->Display( '.', m_filter
);
296 else m_signature
= "";
298 m_tier1
= m_pWord
->GetTier1()->Display();
299 m_tier1_skeleton
= m_pWord
->GetTier1_Skeleton()->Display();
300 m_tier2
= m_pWord
->GetTier2()->Display();
311 m_tier1_skeleton
= "";
316 //-------------------------------------------------------------------------------------------//
317 int CWordListViewItem::compare(Q3ListViewItem
* pOther
, int col
, bool asc
) const
318 //-------------------------------------------------------------------------------------------//
321 return Q3ListViewItem::compare(pOther
, col
, asc
);
322 CWordListViewItem
& other
= *static_cast<CWordListViewItem
*>(pOther
);
323 CStem
* other_word
= other
.m_pWord
;
325 if (m_DisplayMode
== MiniLexicon_MorphologyStuffFirst
) {
328 return MakeComparable(m_DL
, other
.m_DL
);
330 return MakeComparable(m_pWord
->GetCorpusCount(),
331 other_word
->GetCorpusCount());
333 return MakeComparable(m_pWord
->GetUnigramLogProb(),
334 other_word
->GetUnigramLogProb());
336 return MakeComparable(m_pWord
->GetUnigramComplexity(),
337 other_word
->GetUnigramComplexity());
339 return MakeComparable(m_pWord
->GetBigramLogProb(),
340 other_word
->GetBigramLogProb());
342 return MakeComparable(m_pWord
->GetBigramComplexity(),
343 other_word
->GetBigramComplexity());
345 return Q3ListViewItem::compare(pOther
, col
, asc
);
349 // Phonology Stuff First
352 return MakeComparable(m_pWord
->GetUnigramLogProb(),
353 other_word
->GetUnigramLogProb());
355 return MakeComparable(m_pWord
->GetUnigramComplexity(),
356 other_word
->GetUnigramComplexity());
358 return MakeComparable(m_pWord
->GetBigramLogProb(),
359 other_word
->GetBigramLogProb());
361 return MakeComparable(m_pWord
->GetBigramComplexity(),
362 other_word
->GetBigramComplexity());
364 return MakeComparable(m_pWord
->GetHMM_LogProbability(),
365 other_word
->GetHMM_LogProbability());
367 return MakeComparable(m_mini
, other
.m_mini
);
369 return MakeComparable(m_DL
, other
.m_DL
);
371 return MakeComparable(m_pWord
->GetCorpusCount(),
372 other_word
->GetCorpusCount());
374 return Q3ListViewItem::compare(pOther
, col
, asc
);
377 //-------------------------------------------------------------------------------------------//
378 QString
CWordListViewItem::key( int column
, bool ascending
) const
379 //-------------------------------------------------------------------------------------------//
385 if ( m_DisplayMode
== MiniLexicon_MorphologyStuffFirst
)
390 return QString( "%1" ).arg( 100 * m_mini
, 10 );
393 return m_pWord
->DisplayStemType();
397 if( m_pSig
&& m_pWord
->GetConfidence() == "" )
399 return m_pSig
->GetRemark();
403 return m_pWord
->GetConfidence();
413 return Q3ListViewItem::key( column
, ascending
);
415 }// end of switch for MorphologyStuffFirst --
416 else // Phonology Stuff First
420 return QString("%1").arg(static_cast<int>(
421 double(10000) * m_pWord
->GetUnigramLogProb()),
424 return QString("%1").arg(static_cast<int>(
425 double(10000) * m_pWord
->GetUnigramComplexity()),
428 return QString("%1").arg(static_cast<int>(
429 double(10000) * m_pWord
->GetBigramLogProb()),
432 return QString("%1").arg(static_cast<int>(
433 double(10000) * m_pWord
->GetBigramComplexity()),
436 return QString("%1").arg(static_cast<int>(
437 double(10000) * m_pWord
->GetHMM_LogProbability()),
442 return m_tier1_skeleton
;
446 return QString("%1").arg( 100 * m_mini
, 10 );
450 return QString("%1").arg(static_cast<int>(
451 double(1000) * m_DL
), 10);
453 return QString("%1").arg(m_pWord
->GetCorpusCount(), 10);
455 return m_pWord
->DisplayStemType();
459 if( m_pSig
&& m_pWord
->GetConfidence() == "")
461 return m_pSig
->GetRemark();
465 return m_pWord
->GetConfidence();
476 return Q3ListViewItem::key( column
, ascending
);
481 else return Q3ListViewItem::key( column
, ascending
);
483 //-------------------------------------------------------------------------------------------//
484 QString
CWordListViewItem::text( int column
) const
485 //-------------------------------------------------------------------------------------------//
489 if(! m_pWord
) return QString("");
491 switch (m_DisplayMode
)
493 case MiniLexicon_MorphologyStuffFirst
:
499 return QString( "%1" ).arg( m_mini
);
501 return QString("%1").arg( m_DL
);
503 return QString("%1").arg( m_pWord
->GetCorpusCount() );
505 return m_pWord
->DisplayStemType();
509 if( m_pSig
&& m_pWord
->GetConfidence() == "")
511 return m_pSig
->GetRemark();
515 return m_pWord
->GetConfidence();
524 return QString("%1").arg( m_pWord
->GetUnigramLogProb() );
526 return QString("%1").arg( m_pWord
->GetUnigramComplexity() );
528 return QString("%1").arg( m_pWord
->GetBigramLogProb() );
531 return QString("%1").arg( m_pWord
->GetBigramComplexity() );
536 return m_tier1_skeleton
;
542 return Q3ListViewItem::text( column
);
546 case MiniLexicon_PhonologyStuffFirst
:
551 return QString("%1").arg( m_pWord
->GetUnigramLogProb() );
553 return QString("%1").arg( m_pWord
->GetUnigramComplexity() );
555 return QString("%1").arg( m_pWord
->GetBigramLogProb() );
557 return QString("%1").arg( m_pWord
->GetBigramComplexity() );
559 return QString("%1").arg( m_pWord
->GetHMM_LogProbability() );
563 return m_tier1_skeleton
;
567 return QString( "%1" ).arg( m_mini
);
569 if( m_pWord
) return QString("%1").arg( m_DL
);
572 return QString("%1").arg( m_pWord
->GetCorpusCount() );
574 return m_pWord
->DisplayStemType();
578 if( m_pSig
&& m_pWord
->GetConfidence() == "")
580 return m_pSig
->GetRemark();
584 return m_pWord
->GetConfidence();
594 return Q3ListViewItem::text( column
);
596 }// end of switch on column...
597 }// end of MiniLexicon_Phonology stuff first
598 } //end of DisplayMode switch
600 return Q3ListViewItem::text( column
);