mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 12:22:47 +00:00 
			
		
		
		
	New data structure implementation
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -117,29 +117,31 @@ class CorpusAnalysisApp {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderGeneralCorpusInfo(corpusData) {
 | 
			
		||||
    document.querySelector('.corpus-num-tokens').innerHTML = corpusData.corpus.lexicon[0].counts.token;
 | 
			
		||||
    document.querySelector('.corpus-num-s').innerHTML = corpusData.corpus.lexicon[0].counts.s;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-words').innerHTML = Object.entries(corpusData.corpus.lexicon[0].freqs.word).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-lemmas').innerHTML = Object.entries(corpusData.corpus.lexicon[0].freqs.lemma).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-pos').innerHTML = Object.entries(corpusData.corpus.lexicon[0].freqs.pos).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-simple-pos').innerHTML = Object.entries(corpusData.corpus.lexicon[0].freqs.simple_pos).length;
 | 
			
		||||
    document.querySelector('.corpus-num-tokens').innerHTML = corpusData.corpus.counts.token;
 | 
			
		||||
    document.querySelector('.corpus-num-s').innerHTML = corpusData.corpus.counts.s;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-words').innerHTML = Object.entries(corpusData.corpus.freqs.word).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-lemmas').innerHTML = Object.entries(corpusData.corpus.freqs.lemma).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-pos').innerHTML = Object.entries(corpusData.corpus.freqs.pos).length;
 | 
			
		||||
    document.querySelector('.corpus-num-unique-simple-pos').innerHTML = Object.entries(corpusData.corpus.freqs.simple_pos).length;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderTextInfoList(corpusData) {
 | 
			
		||||
    let corpusTextInfoListElement = document.querySelector('.corpus-text-info-list');
 | 
			
		||||
    let corpusTextInfoList = new CorpusTextInfoList(corpusTextInfoListElement);
 | 
			
		||||
    let texts = corpusData.text.lexicon;
 | 
			
		||||
    let texts = corpusData.s_attrs.text.lexicon;
 | 
			
		||||
    let textData = [];
 | 
			
		||||
    for (let i = 0; i < Object.entries(texts).length; i++) {
 | 
			
		||||
      let resource = {
 | 
			
		||||
        title: corpusData.lookups.text[i].title,
 | 
			
		||||
        publishing_year: corpusData.lookups.text[i].publishing_year,
 | 
			
		||||
        num_tokens: corpusData.text.lexicon[i].counts.token,
 | 
			
		||||
        num_sentences: corpusData.text.lexicon[i].counts.s,
 | 
			
		||||
        num_unique_words: Object.entries(corpusData.text.lexicon[i].freqs.word).length,
 | 
			
		||||
        num_unique_lemmas: Object.entries(corpusData.text.lexicon[i].freqs.lemma).length,
 | 
			
		||||
        num_unique_pos: Object.entries(corpusData.text.lexicon[i].freqs.pos).length,
 | 
			
		||||
        num_unique_simple_pos: Object.entries(corpusData.text.lexicon[i].freqs.simple_pos).length
 | 
			
		||||
        // title: "corpusData.values.text[i].title",
 | 
			
		||||
        // publishing_year: "corpusData.lookups.text[i].publishing_year",
 | 
			
		||||
        title: `Text ${i}`,
 | 
			
		||||
        publishing_year: "2023",
 | 
			
		||||
        num_tokens: corpusData.s_attrs.text.lexicon[i].counts.token,
 | 
			
		||||
        num_sentences: corpusData.s_attrs.text.lexicon[i].counts.s,
 | 
			
		||||
        num_unique_words: Object.entries(corpusData.s_attrs.text.lexicon[i].freqs.word).length,
 | 
			
		||||
        num_unique_lemmas: Object.entries(corpusData.s_attrs.text.lexicon[i].freqs.lemma).length,
 | 
			
		||||
        num_unique_pos: Object.entries(corpusData.s_attrs.text.lexicon[i].freqs.pos).length,
 | 
			
		||||
        num_unique_simple_pos: Object.entries(corpusData.s_attrs.text.lexicon[i].freqs.simple_pos).length
 | 
			
		||||
      };
 | 
			
		||||
  
 | 
			
		||||
      textData.push(resource);
 | 
			
		||||
@@ -148,33 +150,30 @@ class CorpusAnalysisApp {
 | 
			
		||||
    corpusTextInfoList.add(textData);
 | 
			
		||||
 | 
			
		||||
    let textCountChipElement = document.querySelector('.text-count-chip');
 | 
			
		||||
    textCountChipElement.innerHTML = `Text count: ${Object.values(corpusData.text.lexicon).length}`;
 | 
			
		||||
    textCountChipElement.innerHTML = `Text count: ${corpusData.corpus.counts.text}`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderTextProportionsGraphic(corpusData) {
 | 
			
		||||
    let textProportionsGraphicElement = document.querySelector('#text-proportions-graphic');
 | 
			
		||||
    let texts = Object.entries(corpusData.text.lexicon);
 | 
			
		||||
    let texts = Object.entries(corpusData.s_attrs.text.lexicon);
 | 
			
		||||
    let graphData = [
 | 
			
		||||
      {
 | 
			
		||||
        values: texts.map(text => text[1].counts.token),
 | 
			
		||||
        labels: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        // labels: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        labels: texts.map(text => text[0]),
 | 
			
		||||
        type: 'pie'
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    let graphLayout = {
 | 
			
		||||
      // height: 600,
 | 
			
		||||
      // width: 900
 | 
			
		||||
    };
 | 
			
		||||
    let config = {responsive: true};
 | 
			
		||||
 | 
			
		||||
    Plotly.newPlot(textProportionsGraphicElement, graphData, graphLayout, config);
 | 
			
		||||
    Plotly.newPlot(textProportionsGraphicElement, graphData, config);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderFrequenciesGraphic(corpusData) {
 | 
			
		||||
    let frequenciesTokenCategoryDropdownElement = document.querySelector('[data-target="frequencies-token-category-dropdown"]');
 | 
			
		||||
    let frequenciesTokenCategoryDropdownListElement = document.querySelector("#frequencies-token-category-dropdown");
 | 
			
		||||
    let frequenciesGraphicElement = document.querySelector('#frequencies-graphic');
 | 
			
		||||
    let texts = Object.entries(corpusData.text.lexicon);
 | 
			
		||||
    let texts = Object.entries(corpusData.s_attrs.text.lexicon);
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    frequenciesTokenCategoryDropdownListElement.addEventListener('click', (event) => {
 | 
			
		||||
@@ -196,13 +195,14 @@ class CorpusAnalysisApp {
 | 
			
		||||
 | 
			
		||||
  createFrequenciesGraphData(category, texts, corpusData) {
 | 
			
		||||
    let graphData = [];
 | 
			
		||||
    let sortedData = Object.entries(corpusData.corpus.lexicon[0].freqs[category]).sort((a, b) => b[1] - a[1]).slice(0, 5);
 | 
			
		||||
    let sortedData = Object.entries(corpusData.corpus.freqs[category]).sort((a, b) => b[1] - a[1]).slice(0, 5);
 | 
			
		||||
  
 | 
			
		||||
    for (let item of sortedData) {
 | 
			
		||||
      let data = {
 | 
			
		||||
        x: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        // x: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        x: texts.map(text => text[0]),
 | 
			
		||||
        y: texts.map(text => text[1].freqs[category][item[0]]),
 | 
			
		||||
        name: corpusData.lookups[category][item[0]],
 | 
			
		||||
        name: corpusData.values.p_attrs[category][item[0]],
 | 
			
		||||
        type: 'bar'
 | 
			
		||||
      };
 | 
			
		||||
      graphData.push(data);
 | 
			
		||||
@@ -215,22 +215,22 @@ class CorpusAnalysisApp {
 | 
			
		||||
      let boundsGraphicElement = document.querySelector('#bounds-graphic');
 | 
			
		||||
 | 
			
		||||
      let graphData = [];
 | 
			
		||||
      let texts = Object.entries(corpusData.text.lexicon);
 | 
			
		||||
      let texts = Object.entries(corpusData.s_attrs.text.lexicon);
 | 
			
		||||
 | 
			
		||||
      graphData = [{
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        x: texts.map(text => text[1].bounds[1] - text[1].bounds[0]),
 | 
			
		||||
        y: texts.map(text => corpusData.lookups.text[text[0]].title),
 | 
			
		||||
        // y: texts.map(text => corpusData.lookups.text[text[0]].title),
 | 
			
		||||
        y: texts.map(text => text[0]),
 | 
			
		||||
        base: texts.map(text => text[1].bounds[0]),
 | 
			
		||||
        text: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        // text: texts.map(text => `${corpusData.lookups.text[text[0]].title} (${corpusData.lookups.text[text[0]].publishing_year})`),
 | 
			
		||||
        text: texts.map(text => text[0]),
 | 
			
		||||
        orientation: 'h',
 | 
			
		||||
        hovertemplate: '%{base} - %{x} <br>%{y}',
 | 
			
		||||
        showlegend: false
 | 
			
		||||
      }];
 | 
			
		||||
 | 
			
		||||
      let graphLayout = {
 | 
			
		||||
        // height: 600,
 | 
			
		||||
        // width: 2000,
 | 
			
		||||
        barmode: 'stack',
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        showgrid: false,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user