有两种简单的方法可以找到与您的内容相关的推文。 首先将这视为受监管的文档分类任务,借此您将训练分类器以使用特定预定主题标签集来标注推文。然后,您可以使用这些标签选择适合您将要增强的任何内容的推文。如果您不喜欢使用预先确定的主题集,则另一种方法是根据自己的内容根据它们的语义重叠对推文进行评分。然后,您可以显示语义重叠最多的顶部n推文。
监督文档分类
使用监督的文档分类会要求你有标有一组您要使用的主题微博的训练集。例如,
鸣叫: NBA总决赛震撼标签:体育
鸣叫:的Google现在允许使用Ruby! 标签:编程
鸣叫:吃午饭标签:其他
如果你想收集的训练数据,而不必与主题手动标记的鸣叫,你可以使用#标签主题标签分配给鸣叫。主题标签可以与主题标签相同,或者您可以编写规则将具有某些主题标签的推文映射到所需的标签。例如,标记为#NFL
或#NBA
的推文可以全部被分配标签sports
。
一旦按主题标记了推文,您可以使用任意数量的现有软件包来训练将标签分配给新推文的分类器。一些可用的软件包包括:
语义重叠
使用与您内容的语义重叠来查找推文t避免了需要标注的训练集。估计您的内容与您得分的推文之间的语义重叠的最简单方法是使用vector space model。要做到这一点,请将您的文档和每条推文表示为与向量中的每个维度对应的单词的向量。分配给每个矢量位置的值表示该单词对文档含义的重要性。估计这种方法的一种方法是简单地使用单词在文档中出现的次数。不过,通过使用类似TF/IDF这样的东西,您可能会获得更好的结果,这些结果可以增加罕见项和减少更常见项的权重。
将内容和推文表示为向量后,可以通过将内容的矢量的cosine similarity和每个推文的矢量进行比较,通过它们与内容的语义相似度对推文进行评分。
没有必要自己编写任何代码。您可以使用Classifier4J之类的软件包,其中包含使用向量空间模型对文档相似性进行评分的类。
更好的语义重叠
一个你可能会使用每个维度一个词向量空间模型碰到的问题是,他们不这样做的处理意思大致相同事物的不同单词的好工作。例如,这样的模型会说The small automobile
和A little car
之间没有相似性。
还有更复杂的建模框架,如latent semantic analysis (LSA)和latent dirichlet allocation (LDA),可用于构建文档的更抽象表示被相互比较。这样的模型可以被认为是不基于简单单词重叠的评分文件,而是根据单词的基本含义的重叠。
在软件方面,软件包Semantic Vectors为文档相似性提供了一个可扩展的类LSA框架。对于LDA,您可以使用David Blei's implementation或斯坦福主题建模工具箱。
也许你指的是文档分类?http://en.wikipedia.org/wiki/Document_classification – tszming 2010-08-15 03:15:52