Commit 9b1da6f8 authored by Gabriel Gutu-Robu's avatar Gabriel Gutu-Robu

Merge branch '52-sentiment-analysis-to-include-granularity' into 'master'

Sentiment Analysis Includes Granularity Level

Closes #52

See merge request !53
parents 0f5cb50f f3b9f30d
......@@ -28,6 +28,18 @@
<textarea id="input_text" class="form-control" [(ngModel)]="formData.text" rows="12"></textarea>
</div>
</div>
<div class="row top-buffer">
<div class="col-xs-6 col-md-4 col-lg-3">
<label for="input_language">Language
<span class="required">*</span>
</label>
</div>
<div class="col-xs-6 col-md-4 col-lg-3">
<select id="input_language" class="form-control" [(ngModel)]="formData.language">
<option *ngFor="let option of languages" [ngValue]="option">{{option.name}}</option>
</select>
</div>
</div>
<div class="row top-buffer">
<div class="col-xs-6 col-md-4 col-lg-3">
<label for="input_granularity">Granularity
......@@ -35,7 +47,7 @@
</label>
</div>
<div class="col-xs-6 col-md-4 col-lg-3">
<select id="input_granularity" class="form-control" [(ngModel)]="formData.granularity" disabled>
<select id="input_granularity" class="form-control" [(ngModel)]="formData.granularity">
<option *ngFor="let option of granularities" [ngValue]="option">{{option.name}}</option>
</select>
</div>
......@@ -62,19 +74,29 @@
<h4>Sentiment analysis</h4>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-12">
<div id="progress-container">
<p class="progress-label">
Sentiment
</p>
<div class="progress">
<div class="progress-bar" role="progressbar" [attr.aria-valuenow]="sentimentScore"
[attr.aria-valuemin]="0" [attr.aria-valuemax]="1" [style.width.%]="sentimentScore*100">{{sentimentScore}}
</div>
<div class="row form-group" *ngFor="let prediction of response.data.predictions">
<div id="progress-container">
<div class="progress-label col-xs-12 col-md-7">
{{prediction.text}}
</div>
<div class="progress col-xs-12 col-md-5">
<div class="progress-bar progress-bar-striped"
[class.progress-bar-danger]="prediction.prediction < .33"
[class.progress-bar-warning]="prediction.prediction >= .33 && prediction.prediction < .66"
[class.progress-bar-success]="prediction.prediction >= .66" role="progressbar"
[attr.aria-valuenow]="prediction.prediction" [attr.aria-valuemin]="0" [attr.aria-valuemax]="1"
[style.width.%]="prediction.prediction*100">
{{prediction.prediction}}&nbsp;
</div>
<span class="glyphicon glyphicon-thumbs-down pull-right" aria-hidden="true"
*ngIf="prediction.prediction < .33"></span>
<span class="glyphicon glyphicon-hand-right pull-right" aria-hidden="true"
*ngIf="prediction.prediction >= .33 && prediction.prediction < .66"></span>
<span class="glyphicon glyphicon-thumbs-up pull-right" aria-hidden="true"
*ngIf="prediction.prediction >= .66" role="progressbar"></span>
</div>
<!-- <div id="sentiment-list">
</div>
<!-- <div id="sentiment-list">
<ul>
<li *ngFor="let element of response.data">
{{element.text}}
......@@ -104,7 +126,6 @@
</li>
</ul>
</div> -->
</div>
</div>
</div>
</div>
......
......@@ -43,10 +43,8 @@ export class SentimentAnalysisComponent implements OnInit {
this.granularities = SentimentAnalysisData.granularities;
this.formData = {
'text': DefaultInputData.text,
'text': SentimentAnalysisData.text,
'language': this.language,
'pos-tagging': DefaultInputData.defaultPosTaggingOption(),
'dialogism': DefaultInputData.defaultDialogismOption(),
'granularity': SentimentAnalysisData.defaultGranularity(),
};
this.loadSemanticModels();
......@@ -58,8 +56,6 @@ export class SentimentAnalysisComponent implements OnInit {
loadSemanticModels() {
const languageValue = this.language.value;
this.formData['lsa'] = DefaultInputData.defaultMetricOptions.lsa[languageValue]();
this.formData['lda'] = DefaultInputData.defaultMetricOptions.lda[languageValue]();
this.formData['word2vec'] = DefaultInputData.defaultMetricOptions.word2vec[languageValue]();
}
......@@ -79,11 +75,6 @@ export class SentimentAnalysisComponent implements OnInit {
const data = {
'text': this.formData['text'],
'lang': this.formData['language'].value,
'lsa': this.formData['lsa'].value,
'lda': this.formData['lda'].value,
'w2v': this.formData['word2vec'].value,
'pos-tagging': this.formData['pos-tagging'],
'dialogism': this.formData['dialogism'],
'granularity': this.formData['granularity'].value,
};
......
import { DefaultInputData } from '../demo.component.data';
export let SentimentAnalysisData = {
'text': 'Lorem Ipsum este pur şi simplu o machetă pentru text a industriei tipografice. Lorem Ipsum a fost macheta standard a industriei încă din secolul al XVI-lea, ' +
'când un tipograf anonim a luat o planşetă de litere şi le-a amestecat pentru a crea o carte demonstrativă pentru literele respective. Nu doar că a supravieţuit timp de ' +
'cinci secole, dar şi a facut saltul în tipografia electronică practic neschimbată. A fost popularizată în anii \'60 odată cu ieşirea colilor Letraset care conţineau pasaje ' +
'Lorem Ipsum, iar mai recent, prin programele de publicare pentru calculator, ca Aldus PageMaker care includeau versiuni de Lorem Ipsum.' +
String.fromCharCode(10) +
'În ciuda opiniei publice, Lorem Ipsum nu e un simplu text fără sens. El îşi are rădăcinile într-o bucată a literaturii clasice latine din anul 45 î.e.n., ' +
'făcând-o să aibă mai bine de 2000 ani. Profesorul universitar de latină de la colegiul Hampden-Sydney din Virginia, Richard McClintock, a căutat în bibliografie ' +
' unul din cele mai rar folosite cuvinte latine "consectetur", întâlnit în pasajul Lorem Ipsum, şi căutând citate ale cuvântului respectiv în literatura clasică, a descoperit ' +
'la modul cel mai sigur sursa provenienţei textului. Lorem Ipsum provine din secţiunile 1.10.32 şi 1.10.33 din "de Finibus Bonorum et Malorum" (Extremele Binelui şi ale Răului) ' +
'de Cicerone, scrisă în anul 45 î.e.n. Această carte este un tratat în teoria eticii care a fost foarte popular în perioada Renasterii. Primul rând din Lorem Ipsum, "Lorem ipsum ' +
'dolor sit amet...", a fost luat dintr-un rând din secţiunea 1.10.32.',
'serviceName': 'sentimentAnalysis',
'componentTitle': 'Sentiment Analysis',
'granularities': [
......@@ -31,7 +42,8 @@ export let SentimentAnalysisData = {
'languages': [
DefaultInputData.languages[0], // en
DefaultInputData.languages[1], // fr
DefaultInputData.languages[2], // ro
DefaultInputData.languages[3] // nl
],
'defaultLanguage': DefaultInputData.languages[0] // en
'defaultLanguage': DefaultInputData.languages[2] // ro
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment