3

我正在考虑一个项目,在该项目中,出版物的内容通过来自该地区人们的相关、公开可用的推文进行扩充。但是我如何以编程方式找到相关的推文?我知道生成表示自然语言含义的结构几乎是 NLP 的圣杯,但也许我可以使用一些工具来至少缩小它的范围?

或者,我可以只使用主题标签。但这需要代表用户做更多的工作。我对 Twitter 不是很熟悉——大多数人是否使用主题标签(即使是针对较小规模的问题),还是会依赖它们来切断大部分数据?

我也有兴趣获取 Facebook 状态(当然,得到发帖人的许可),而且在 Facebook 上使用标签非常罕见。

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

想法?以前有这样做过吗?

4

3 回答 3

5

有两种直接的方法可以找到与您的内容相关的推文。第一个是将其视为有监督的文档分类任务,您将训练一个分类器以使用一组预定的主题标签来注释推文。然后,您可以使用标签来选择适合您要扩充的任何内容的推文。如果您不喜欢使用预定的主题集,另一种方法是根据推文与您的内容的语义重叠简单地对推文进行评分。然后,您可以显示语义重叠最多的前n条推文。

监督文件分类

使用有监督的文档分类需要你有一组训练的推文,上面标有你将要使用的主题集。例如,

推文: NBA 总决赛震撼标签:体育
推文: Google 员工现在可以使用 Ruby!标签:编程
推文:吃午餐标签:其他

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

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

语义重叠

使用与您的内容的语义重叠来查找推文避免了对标记训练集的需要。估计您的内容和您正在评分的推文之间的语义重叠的最简单方法是使用向量空间模型。为此,请将您的文档和每条推文表示为一个向量,向量中的每个维度都对应一个单词。然后分配给每个向量位置的值表示该词对文档含义的重要性。估计这一点的一种方法是简单地使用单词在文档中出现的次数。但是,您可能会通过使用TF/IDF之类的方法获得更好的结果,它会提高稀有术语的权重并降低更常见的术语的权重。

将内容和推文表示为向量后,您可以通过获取内容向量的余弦相似度和每条推文的向量的余弦相似度,根据推文与内容的语义相似度对推文进行评分。

无需自己编写任何代码。您可以只使用 Classifier4J 之类的包,其中包含一个VectorClassifier类,该类使用向量空间模型对文档相似度进行评分。

更好的语义重叠

对于每个维度使用一个术语的向量空间模型,您可能会遇到一个问题,即它们不能很好地处理具有大致相同含义的不同单词。例如,这样的模型会说 和 之间没有相似The small automobileA little car

有更复杂的建模框架,例如潜在语义分析 (LSA)潜在狄利克雷分配 (LDA),可用于构建相互比较的文档的更抽象表示。可以将此类模型视为不是基于简单的单词重叠而是根据单词潜在含义的重叠对文档进行评分。

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

于 2010-08-20T00:44:48.137 回答
0

NLP 的问题不是算法(尽管这是一个问题),问题是资源。您可以使用一些开源的浅层解析工具(这就是您获得意图所需的全部),但解析数千或数百万条推文会花费大量计算机时间。

另一方面,就像您说的那样,并非所有推文都有标签,并且没有保证它们会相关。

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

于 2010-08-15T07:04:09.470 回答
0

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

对于 facebook,您可以做一些 bing 不久前实施的事情。正如我在本文中所述:http: //www.socialtimes.com/2010/06/bing-adds-facebook-and-twitter-features-steps-up-social-services/

我写道:例如,搜索“NBA 总决赛”将返回来自 Facebook 的粉丝页面内容,包括来自当地电视台的帖子。因此,如果您尝试增加与 NBA 相关的内容,您可以执行与 Bing 提供的类似的搜索 - 搜索公开可用的粉丝页面内容,就像蜘蛛为搜索引擎编制索引一样。我不是开发人员,所以我不确定其中的复杂性,但我知道可以做到。

您还可以显示发布给“每个人”的用户的流行共享链接,这些链接将针对所有非粉丝页面内容进行汇总。我不确定这是否仅限于发布给“每个人”和/或“受欢迎”,尽管我会这么认为 - 但你可以仔细检查一下。

希望这可以帮助

于 2010-08-15T06:09:22.247 回答