Add example: Sentimark - sentence-level sentiment analysis and markup.
parent
d616e1bb07
commit
5115bc8555
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# coding=utf-8
|
||||||
|
import dominate
|
||||||
|
from dominate.tags import *
|
||||||
|
from newspaper import Article
|
||||||
|
from textblob import TextBlob
|
||||||
|
|
||||||
|
from qutescript import userscript
|
||||||
|
|
||||||
|
polarity_map = {
|
||||||
|
8: 'green',
|
||||||
|
5: 'olive',
|
||||||
|
2: '#333',
|
||||||
|
0: '#777',
|
||||||
|
-2: 'orange',
|
||||||
|
-5: 'red',
|
||||||
|
-8: 'brown',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_polarity_color(polarity):
|
||||||
|
for thresh in reversed(sorted(polarity_map.keys())):
|
||||||
|
if (polarity * 10) >= thresh:
|
||||||
|
return polarity_map[thresh]
|
||||||
|
else:
|
||||||
|
return '#777'
|
||||||
|
|
||||||
|
|
||||||
|
def generate_html(paragraphs, title_text):
|
||||||
|
doc = dominate.document(title='Summary: {}'.format(title_text))
|
||||||
|
|
||||||
|
with doc.head:
|
||||||
|
style("""\
|
||||||
|
body {
|
||||||
|
background-color: #F9F8F1;
|
||||||
|
color: #2C232A;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
""")
|
||||||
|
|
||||||
|
with doc:
|
||||||
|
div(id='header').add(h1(title_text))
|
||||||
|
with div():
|
||||||
|
attr(cls='body')
|
||||||
|
for para in paragraphs:
|
||||||
|
tb = TextBlob(para)
|
||||||
|
with p():
|
||||||
|
for sentence in tb.sentences:
|
||||||
|
span(sentence, style="color: {}".format(get_polarity_color(sentence.polarity)))
|
||||||
|
return doc
|
||||||
|
|
||||||
|
|
||||||
|
@userscript
|
||||||
|
def sentiment_markup(request):
|
||||||
|
article = Article(request.url)
|
||||||
|
# article.download(request.html, request.title)
|
||||||
|
article.download()
|
||||||
|
article.parse()
|
||||||
|
html = generate_html(article.text.split('\n\n'), article.title).render()
|
||||||
|
request.send_html(html)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sentiment_markup()
|
@ -0,0 +1,3 @@
|
|||||||
|
dominate
|
||||||
|
newspaper3k
|
||||||
|
textblob
|
Loading…
Reference in New Issue