def recommendations(): s = session() labeled = s.query(News).filter( News.label != None).all() #новости, которые разметили news_title = [news.title for news in labeled] news_label = [news.label for news in labeled] bayes = NaiveBayesClassifier( ) #пропускаем данные через наивный классификатор bayes.fit(news_title, news_label) notlabeled = s.query(News).filter( News.label == None).all() #новости, которые не разметили new_news_title = [news.title for news in notlabeled] new_news_label = bayes.predict(new_news_title) good_news, maybe_news, never_news = [], [], [] #Добавляем метки нерзамечанным новостям for id, label in enumerate(new_news_label): if label == 'good': good_news.append(notlabeled[id]) elif label == 'maybe': maybe_news.append(notlabeled[id]) elif label == 'never': never_news.append(notlabeled[id]) classified_news = [good_news, maybe_news, never_news] return template('news_ranked', good_news=good_news, maybe_news=maybe_news, never_news=never_news)
def add_label(): s = session() label = request.GET['label'] newid = request.GET['id'] headline = s.query(News).filter(News.id == int(newid)).all()[0] headline.label = label s.commit() redirect("/news")
def add_label(): label = request.query.label id = request.query.id s = session() changing_news = s.query(News).get(id) changing_news.label = label s.commit() redirect("/news")
def add_label(): # 1. Получить значения параметров label и id из GET-запроса id = request.query.get('id') label = request.query.get('label') s = session() entry = s.query(News).get(id) # 3. Изменить значение метки записи на значение label entry.label = label # 4. Сохранить результат в БД s.commit() redirect("/news")
def update_news(): news_s = get_news('https://news.ycombinator.com/newest', n_pages=5) s = session() news_bd = s.query(News).all() news_bd = [(n.title, n.author) for n in news_bd] for new in news_s: if (new['title'], new['author']) not in news_bd: news = News(title=new['title'], author=new['author'], url=new['url'], comments=new['comments'], points=new['points']) s.add(news) s.commit() redirect('/news')
def update_news(): new_news_list = get_news("https://news.ycombinator.com/", n_pages=5) s = session() old_news = s.query(News).all() for news in new_news_list: for o_news in old_news: if (news['title'] == o_news.title and news['author'] == o_news.author): break else: new_news = News(title=news['title'], author=news['author'], url=news['url'], comments=news['comments'], points=news['points']) s.add(new_news) s.commit() redirect("/news")
def update_news(): news_list = get_news("https://news.ycombinator.com/newest", n_pages=1) cnt = 0 for elem in news_list: s = session() if len( s.query(News).filter(News.title == elem['title']).filter( News.author == elem['author']).all()) > 0: print('Not writing') continue cnt += 1 print('Writing data element:', cnt) news = News(title=elem['title'], author=elem['author'], url=elem['url'], comments=elem['comments'], points=elem['points']) s.add(news) s.commit() redirect("/news")
def recommendations(): # 1. Получить список неразмеченных новостей из БД # 2. Получить прогнозы для каждой новости # 3. Вывести ранжированную таблицу с новостями s = session() none_news = [] rows = s.query(News).filter(News.label == None).all() learn_news = s.query(News).filter(News.label != None).all() X_train, y_train = [], [] for news in learn_news: X_train.append(news.title) y_train.append(news.label) X_train = [clean(x).lower() for x in X_train] model = NaiveBayesClassifier(alpha=1) model.fit(X_train, y_train) for news in rows: none_news.append(news.title) predict_labels = model.predict(none_news) for news, label in zip(rows, predict_labels): news.label = label classified_news = sorted(rows, key=lambda news: news.label) return template('./news_recommendations.html', rows=classified_news)
def classify_news(): # 1. Получить список неразмеченных новостей из БД # 2. Получить прогнозы для каждой новости # 3. Вывести ранжированную таблицу с новостями s = session() good, maybe, never, X_train, y_train = [], [], [], [], [] headlines_classified = s.query(News).filter(News.label != None) headlines_nonclassified = s.query(News).filter(News.label == None) for topic in headlines_classified: X_train.append(topic.title) y_train.append(topic.label) if topic.label == 'good': good.append(topic) elif topic.label == 'maybe': maybe.append(topic) else: never.append(topic) model = NaiveBayesClassifier() model.fit(X_train, y_train) for topic in headlines_nonclassified: topic.label = model.predict(topic.title) if topic.label == 'good': good.append(topic) elif topic.label == 'maybe': maybe.append(topic) else: never.append(topic) rows = good + maybe + never return template('news_template.tpl', rows=rows)
def news_list(): TEMPLATE_PATH.insert(0, '') s = session() rows = s.query(News).filter(News.label == None).all() return template('news_template', rows=rows)
def news_list(): s = session() rows = s.query(News).filter(News.label == None).all() return template('news_template.tpl', rows=rows)