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

What is the easiest way to tag user-submitted questions with category tags on a Django-base site?

我正在用 Django 构建一个站点,用户可以在其中提交有关广泛主题的问题。当一个问题被提交时,我希望它被标记为它所属的各种类别,以便它可以与相关问题分组。例如,如果有人问 "does breastfeeding increase the risk of cancer?",我希望用 "child care, breastfeeding, cancer, etc" 等类别标记该问题。我知道对内容进行分类是一个常见问题,我很好奇最好的选择是什么。

最好的方法是简单地为用户提供一些标签,让他们使用多对多关系手动选择。例如:

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)

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

>>> tag1 = Tag(title='science')
>>> tag1.save()
>>> tag2 = Tag(title='music')
>>> tag2.save()
>>> tag3 = Tag(title='computers')
>>> tag3.save()
>>> question = Question(title='Question about science', text='very important question')
>>> question.save()
>>> question.tags.add(tag1)

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

中阅读更多关于多对多关系的信息

你要实现的不仅仅是一个编程问题,因为它与我所说的AI,或人工智能,这使得计算机在某种程度上像人类一样思考。

假设您有这些类别:体育、健康、儿童保育、政治……

如果我post这个问题:"How bad can sport affect our health ?"

您可以将问题拆分为单词,因为单词 sporthealth 是类别,因此可以轻松标记问题跟他们。

现在如果我 post 这个问题:“克里斯蒂亚诺·罗纳尔多是否拒绝向儿童捐赠 25000 美元?”

这个问题没有任何属于类别的词。然而,通过使用我们的人类思维,我们可以看到这个问题属于那些类别:体育、儿童保育、社会...

所以第一种算法不适合,你要寻找更多属于人工智能的方法和技术,比如机器学习,神经网络,语义...

如果你想避免所有这些,你可以让用户 select 与他的问题匹配的类别,就像我们在 Stack Overflow 中所做的那样,当我们为我们的问题选择标签时。

希望我的回答对您有所帮助