在基于Django的网站上,使用类别标签标记用户提交的问题的最简单方法是什么?

时间:2018-12-27 23:42:27

标签: django categories

我正在Django中建立一个网站,用户可以在其中提交有关广泛主题的问题。提交问题时,我希望为它加上所属的各种类别的标签,以便可以将其与相关问题分组。例如,如果有人问“母乳喂养会增加患癌症的风险吗?”,我希望这个问题用“儿童护理,母乳喂养,癌症等”等类别标记。我知道对内容进行分类是一个常见问题,我很好奇什么是最佳选择。

2 个答案:

答案 0 :(得分:0)

做到这一点的最佳方法是简单地向用户提供一些标签,以使用ManyToMany关系进行手动选择。例如:

import 'dart:io';

import 'package:isolate/isolate.dart';

t1(dynamic t) {
  sleep(Duration(seconds: 10));
}

t2(dynamic t) {
  sleep(Duration(seconds: 10));
}

void main() async {
  var isolate1 = await IsolateRunner.spawn();
  var isolate2 = await IsolateRunner.spawn();
  var f1 = isolate1.run(t1, null);
  var f2 = isolate2.run(t2, null);
  await Future.wait([f1, f2]);
  await Future.wait([isolate1.close(), isolate2.close()]);
}

然后,您可以创建新标签并标记您的问题,例如:

class Tag(models.Model):
    title = models.CharField(max_length=40)


class Question(models.Model):
    title = models.CharField(max_length=80)
    text = models.TextField()
    tags = models.ManyToMany(Tag)

请注意,您只能将标签添加到已保存的对象中。您可以在official documentation

中了解有关多对多关系的更多信息

答案 1 :(得分:0)

您想要实现的不仅仅是编程问题,因为它与我称之为计算机的 AI 人工智能有关。像人类一样思考。

假设您具有以下类别:体育,健康,育儿,政治....

如果我发布以下问题:“运动会严重影响我们的健康吗?”

您可以将问题分解成单词,因为体育健康是类别,因此可以轻松地用它们标记问题。

现在,如果我发布此问题:“克里斯蒂亚诺·罗纳尔多(Cristiano Ronaldo)拒绝向孩子们捐赠25000美元吗?”

这个问题没有任何类别的词。但是,通过使用人的思维,我们可以看到此问题属于以下类别:运动,育儿,社会...

因此第一种算法不合适,您将不得不寻找更多属于人工智能的方法和技术,例如机器学习,神经网络,语义...

如果您想避免所有这些情况,只需让用户选择与他的问题相匹配的类别,就像我们在为问题选择标签时在Stack Overflow中所做的一样。

我希望我的回答会有所帮助