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