2010-08-14 59 views
3

我正在考虑一个项目,在该项目中,出版物的内容通过相关的公开可用的来自该区域人员的推文增强。但我怎么能以编程方式找到相关的推文?我知道生成一个代表自然语言意义的结构几乎是NLP的圣杯,但也许有一些工具可以用来至少缩小它的范围?从Twitter状态获取意图的工具?

或者,我可以使用井号标签。但是这需要代表用户做更多的工作。我对Twitter并不是很熟悉 - 大多数人是否使用hashtags(即使是小规模问题),还是依靠他们来切断大量数据?

我也很想抓住Facebook的状态(当然还有获得海报的许可),并且在Facebook上hashtag的使用非常少见。

我可以使用简单的关键字搜索来粗略地缩小字段,但这很可能需要人为干预来确定哪些tweets应该实际上与内容一起发布。

想法?这是否做过?

+0

也许你指的是文档分类?http://en.wikipedia.org/wiki/Document_classification – tszming 2010-08-15 03:15:52

回答

0

伟大的问题。我认为对于twitter来说,最好的办法是使用主题标签,因为否则您需要创建算法或找到现有的算法来进行语言分析,并根据用户输入/反馈随时间推移而改进。

对于Facebook,你可以做一些什么bing实施一段时间回来。正如我在本文中所述: http://www.socialtimes.com/2010/06/bing-adds-facebook-and-twitter-features-steps-up-social-services/

我写道:例如,搜索“NBA总决赛”将返回来自Facebook的粉丝页内容,包括来自本地电视台的帖子。所以如果你想增加与NBA相关的内容,你可以做一个与Bing提供的类似的搜索功能 - 以蜘蛛为搜索引擎索引它们的方式搜索公共可用的粉丝页内容。我不是一名开发人员,所以我不确定错综复杂,但我知道可以完成。

此外,您还可以显示来自发布到“所有人”的用户的热门共享链接,该链接将汇总为所有非粉丝页面内容。我不确定这是否仅限于发布到“所有人”和/或“流行”,尽管我会这样认为 - 但是您可以仔细检查一下。

希望这有助于

0

与NLP的问题不是算法(虽然这是一个问题)问题是资源。有一些开源的浅析解析工具(这就是你需要获得的意图),你可以使用它,但解析数千或数百万条推文在计算机时间将花费大量财富。

另一方面,就像你说的,并非所有的推文都有标签,并且没有任何承诺,它们将是相关的。

也许您可以使用关键字搜索的混合来过滤出一些可能性(具有最高关键字密度的可能性),然后使用更深入的数据分析选择最高的1或2.这将使计算机资源保持最低你应该可以得到相关的推文。

5

有两种简单的方法可以找到与您的内容相关的推文。 首先将这视为受监管的文档分类任务,借此您将训练分类器以使用特定预定主题标签集来标注推文。然后,您可以使用这些标签选择适合您将要增强的任何内容的推文。如果您不喜欢使用预先确定的主题集,则另一种方法是根据自己的内容根据它们的语义重叠对推文进行评分。然后,您可以显示语义重叠最多的顶部n推文。

监督文档分类

使用监督的文档分类会要求你有标有一组您要使用的主题微博的训练集。例如,

鸣叫: NBA总决赛震撼标签:体育
鸣叫:的Google现在允许使用Ruby! 标签:编程
鸣叫:吃午饭标签:其他

如果你想收集的训练数据,而不必与主题手动标记的鸣叫,你可以使用#标签主题标签分配给鸣叫。主题标签可以与主题标签相同,或者您可以编写规则将具有某些主题标签的推文映射到所需的标签。例如,标记为#NFL#NBA的推文可以全部被分配标签sports

一旦按主题标记了推文,您可以使用任意数量的现有软件包来训练将标签分配给新推文的分类器。一些可用的软件包包括:

语义重叠

使用与您内容的语义重叠来查找推文t避免了需要标注的训练集。估计您的内容与您得分的推文之间的语义重叠的最简单方法是使用vector space model。要做到这一点,请将您的文档和每条推文表示为与向量中的每个维度对应的单词的向量。分配给每个矢量位置的值表示该单词对文档含义的重要性。估计这种方法的一种方法是简单地使用单词在文档中出现的次数。不过,通过使用类似TF/IDF这样的东西,您可能会获得更好的结果,这些结果可以增加罕见项和减少更常见项的权重。

将内容和推文表示为向量后,可以通过将内容的矢量的cosine similarity和每个推文的矢量进行比较,通过它们与内容的语义相似度对推文进行评分。

没有必要自己编写任何代码。您可以使用Classifier4J之类的软件包,其中包含使用向量空间模型对文档相似性进行评分的类。

更好的语义重叠

一个你可能会使用每个维度一个词向量空间模型碰到的问题是,他们不这样做的处理意思大致相同事物的不同单词的好工作。例如,这样的模型会说The small automobileA little car之间没有相似性。

还有更复杂的建模框架,如latent semantic analysis (LSA)latent dirichlet allocation (LDA),可用于构建文档的更抽象表示被相互比较。这样的模型可以被认为是不基于简单单词重叠的评分文件,而是根据单词的基本含义的重叠。

在软件方面,软件包Semantic Vectors为文档相似性提供了一个可扩展的类LSA框架。对于LDA,您可以使用David Blei's implementation或斯坦福主题建模工具箱。

+0

非常全面和完整的答案。做得好。 – 2010-09-20 20:20:12