我该怎么做"相关标签"?

Man*_*anu 3 language-agnostic algorithm tagging database-design machine-learning

我的网站上有标签,当我创建博客文章时,我会逐个输入标签.我喜欢gmail的新功能,它会询问您是否要在邮件中包含X,如果您键入Y的名称,并且您经常在同一邮件中包含它们.

我想在我的网站上做类似的事情,但我不知道如何在对象或数据库中表示"related-ness"标签......想法?

mac*_*mac 5

这一切都归结为在帖子的某些特征与某些标签之间建立关联,然后 - 当您按下"发布"按钮时 - 分析新帖子并提出与您的帖子特征匹配的所有标签.

这可以通过几种方式完成,从"完全硬编码"的关联到某种"学习AI"......以及介于两者之间的一切.

硬编码解决方案

这是最简单的算法.您应首先确定您的帖子的哪些特征与标记相关(例如:如果您将其标记为"短"或"长",则为长度;如果您将其标记为"多媒体内容",则存在照片或视频等等... ).然而,最明显的是关注帖子中使用的单词.例如,您可以构建这样的映射:

tag_hint_words = {'code-development' : ['programming', 
                                        'language', 'python', 'function', 
                                        'object', 'method'],
                  'family' : ['Theresa', 'kids', 
                              'uncle Ben', 'holidays']}
Run Code Online (Sandbox Code Playgroud)

然后你会检查你的职位的话,在列表中存在(之间的代码[]),并提出了标签(之前的字:)作为一个可能的候选人.

一种常见的方法是给出"得分",或换句话说,给出一个数字,表示给定标签是正确的概率.例如:如果你的帖子包含句子......

经过几个月的编程,我们终于在Ben叔叔的小屋度过了暑假.特蕾莎和孩子们欣喜若狂!

......尽管存在"编程"这个词,但程序应该指出家庭是最有可能使用的标签,因为还有更多的单词暗示.

学习AI

上述方法的一个明显局限性是 - 比如有一天你在python旁边拿起java - 你可能需要更改你的代码并包含像"java"或"oracle"这样的单词.如果您创建新标签,则同样适用.

为了规避这个限制(并且有一些乐趣!!),您可以尝试实现学习算法.学习算法是那些使用它们的人越多就越好(因此他们确实......学习!).某些算法需要初始培训(许多垃圾邮件过滤器和语音识别程序需要这个初始"入门").有些人没有.

我绝对不是这个主题的专家,但是两个常见的AI是:朴素贝叶斯分类器和一些神经网络的味道.

尽管WP页面可能看起来很吓人,但它们实现起来却非常容易(至少在Python中).以下是PyCon 2009关于" Easy AI with Python " 主题的演讲录音.我发现它非常有用,甚至有点鼓舞人心!:)

HTH!