def similar_concepts(request, lang, concept_name): # Default to retrieving 10 items. language = get_language(lang) count = int(request.GET.get('count', 10)) try: concept = Concept.get(concept_name, language) except Concept.DoesNotExist: return respond_with('commonsense/concept_noinfo.html', request, {'lang': lang, 'concept_name': concept_name}) similarities = concept.similarities.values_list('concept2__text', 'score') return respond_with('commonsense/_weighted_concepts.html', request, dict(similarities=similarities, lang=lang))
def startpage(request, lang='en'): if 'text' in request.POST and request.POST['text'].strip()!='': text = request.POST['text'] colordepth = 3 if request.POST['colordepth']: if request.POST['colordepth'] == 'wholetext': colordepth = 0 elif request.POST['colordepth'] == 'paragraph': colordepth = 1 elif request.POST['colordepth'] == 'sentence': colordepth = 2 colorized = deepColorTokenize(text,colordepth) return respond_with('colorizer/index.html', request, {'coloredtext':colorized, 'originaltext':text, 'MEDIA_ROOT':'/site_media/static'}) else: return respond_with('colorizer/index.html',request,{'MEDIA_ROOT':'/site_media/static'})
def statement_overview(request, lang, offset=0): offset = int(offset) language = get_language(lang) raw_assertions = get_top_raw_torate(language, 15, min_assertion_score=2, offset=offset) next = offset+1 return respond_with('commonsense/statement_overview.html', request, locals())
def predict_features(request, lang, concept_name): count = int(request.GET.get('count', 5)) language = get_language(lang) try: concept = Concept.get(concept_name, language) except Concept.DoesNotExist: return respond_with('commonsense/concept_noinfo.html', request, {'lang': lang, 'concept_name': concept_name}) predictions = ( list(concept.left_ynq.select_related('surface1', 'surface2')[:count]) + list(concept.right_ynq.select_related('surface1', 'surface2')[:count]) ) predictions = sorted([p for p in predictions if not p.obsolete()])[:count] return respond_with('commonsense/_predictions.html', request, dict(predictions=predictions, lang=lang))
def feature(request, lang, lr, relation_name, concept_name): language = get_language(lang) concept = Concept.objects.get(concept_name, language) relation = Relation.get(relation_name) cls = {'left': LeftFeature, 'right': RightFeature}[lr] feature = cls(relation, concept) return respond_with('commonsense/feature.html', request, dict( feature = feature))
def concept(request, lang, concept_name): '''View for displaying a concept, specified by text.''' language = get_language(lang) try: concept = Concept.get(concept_name, language) except Concept.DoesNotExist: return respond_with('commonsense/concept_noinfo.html', request, {'lang': lang, 'concept_name': concept_name}) queryset = concept.raw_assertions_no_dupes().select_related('surface1', 'surface2', 'frame') return respond_with('commonsense/concept.html', request, dict( concept_name=concept_name, concept=concept, lang=lang, user=request.user, language=language, raw_assertions=queryset ))
def add_main(request, lang): relations = Relation.objects.filter(description__isnull=False) suggestions = [] for r in relations: frames = Frame.objects.filter(relation=r, language__id=lang, goodness__gte=2).order_by('-goodness') if len(frames) == 0: continue if r.description.startswith('*'): continue suggestions.append((r, frames[0])) return respond_with('commonsense/add_main.html', request, locals())
def similar_concepts_category(request, lang, category): # Default to retrieving 10 items. count = int(request.GET.get('count', 10)) svd = get_svd_results(lang) cat = category_from_urlcategory(svd, lang, category) items = svd.u_dotproducts_with(cat).top_items(count) concepts = [(canonical_form(text, lang), score) for text, score in items] return respond_with('commonsense/_weighted_concepts.html', request, dict(similarities=concepts, lang=lang))
def main_page(request): languages = [] for language in Language.objects.all(): if language.id == 'zh-Hans': # not ready for simp. Chinese yet continue count = language.sentence_count if count > 1: languages.append((language.id, language.name, count)) languages.sort(key = lambda x: -x[2]) lang = 'en' # FIXME return respond_with('commonsense/main.html', request, {'languages': languages, 'lang': lang})
def predict_features_category(request, lang, category): count = int(request.GET.get('count', 5)) svd = get_svd_results(lang) parts, concepts, features = unpack_urlcategory(lang, category) cat = make_category_failsoft(svd, concepts, features, parts) got = 0 pred_generator = get_predictions_from_vector(lang, concepts, cat, 100) predictions = [] while got < count: prediction, score = pred_generator.next() predictions.append(prediction) got += 1 return respond_with('commonsense/_predictions.html', request, dict(predictions=predictions, lang=lang))
def assertion(request, lang, assertion_id): language = get_language(lang) the_assertion = get_object_or_404(Assertion.objects, pk=int(assertion_id)) raw_assertions = the_assertion.rawassertion_set.order_by('-score') raw_assertions = raw_assertions.select_related('surface1', 'surface2', 'frame', 'frequency') if request.user: vote = Vote.objects.get_for_user(the_assertion, request.user) if vote: if (len(raw_assertions) == 1 and raw_assertions[0].creator == request.user): if vote.is_upvote(): request.user.message_set.create(message=ugettext(""" Thanks for contributing! Here is the assertion you created. """)) elif vote.is_downvote(): request.user.message_set.create(message=ugettext(""" Thanks for contributing! You disagreed with this prediction, helping Open Mind make better predictions in the future. """)) else: if vote.is_upvote(): request.user.message_set.create(message=ugettext(""" You have voted for this assertion. We encourage you to also vote on the statements that support the assertion, below. Vote for the ones that you think are the best way to say it. """)) elif vote.is_downvote(): request.user.message_set.create(message=ugettext(""" You have voted against this assertion. We encourage you to also vote on the statements that support the assertion, below. Unless they were simply misunderstood by Open Mind, you may want to vote against them as well. """)) raw_assertions = raw_assertions.filter(score__gt=-1) return respond_with('commonsense/assertion.html', request, locals())
def add_statement(request, lang, frame_id, text1, text2): frame = get_object_or_404(Frame.objects, pk=int(frame_id)) if text1 in ('-', '...'): text1 = '' if text2 in ('-', '...'): text2 = '' field1 = '<input type="text" name="text1" value="%s">' % text1 field2 = '<input type="text" name="text2" value="%s">' % text2 if 'context' in request.GET: if request.GET['context'] == 'yes': add_message(request, """ You said that this is true. You can now change the grammar or wording of the statement if you want. Click Add to teach this new fact to Open Mind. """) elif request.GET['context'] == 'maybe': add_message(request, """ You said that this is sort of true. Can you change the text to make a statement that you consider true? """) possible_frames = Frame.objects.filter(language=frame.language, relation=frame.relation, goodness__gte=3) #show_frames = len(possible_frames) > 1 show_frames = False return respond_with('commonsense/add_statement.html', request, locals())
def recent_statements(request, lang, offset=0): offset = int(offset) language = get_language(lang) raw_assertions = get_recent_raw(language, 15, offset) next = offset+1 return respond_with('commonsense/statement_recent.html', request, locals())
def concept_overview(request, lang): if 'concept_name' in request.POST: return concept(request, lang, request.POST['concept_name']) language = get_language(lang) concepts = get_random_concepts(language, 10) return respond_with('commonsense/concept_overview.html', request, locals())