Nic*_*ner 3 twitter facebook nlp social-media
我正在考虑一个项目,其中出版物的内容通过该地区人员的相关公开推文得到增强.但我怎么能以编程方式找到相关的推文?我知道生成一个代表自然语言含义的结构几乎是NLP的圣杯,但也许我可以使用一些工具来至少缩小它的范围?
或者,我可以使用hashtags.但这需要代表用户做更多的工作.我对Twitter不是很熟悉 - 大多数人都使用主题标签(即使是较小规模的问题),还是会依赖它们切断大部分数据?
我也有兴趣抓住Facebook状态(当然是获得海报的许可),并且在Facebook上使用标签很少见.
我可以使用简单的关键字搜索粗略地缩小字段,但这更有可能需要人工干预来确定哪些推文实际上应该与内容一起发布.
想法?以前做过吗?
有两种直接的方法可以查找与您的内容相关的推文.第一种方法是将其视为受监督的文档分类任务,您可以训练分类器使用特定的一组主题标签来注释推文.然后,您可以使用标签选择适合您要扩充的任何内容的推文.如果您不喜欢使用预定的一组主题,另一种方法是根据与您的内容的语义重叠来简单地对推文进行评分.然后,您可以显示具有最多语义重叠的前n条推文.
监督文件分类
使用受监督的文档分类需要您拥有一组推文,这些推文标记了您将使用的主题集.例如,
推特: NBA总决赛摇滚标签:体育
推文: Google员工现在允许使用Ruby!标签:编程
推文:吃午餐标签:其他
如果您想收集培训数据而无需手动使用主题标记推文,您可以使用主题标签为推文分配主题标签.主题标签可以与主题标签相同,或者您可以编写规则以将带有特定主题标签的推文映射到所需标签.例如,推文标记为#NFL
或者#NBA
都可以为其分配标签sports
.
一旦您按主题标记了推文,您就可以使用任意数量的现有软件包来训练为新推文分配标签的分类器.一些可用的套餐包括:
语义重叠
使用与您的内容的语义重叠来查找推文可以避免使用标记的训练集.估计您的内容与您正在评分的推文之间的语义重叠的最简单方法是使用向量空间模型.要执行此操作,请将文档和每条推文表示为向量,向量中的每个维度都对应于一个单词.然后,分配给每个向量位置的值表示该单词对文档含义的重要程度.估计这种情况的一种方法是简单地使用单词在文档中出现的次数.但是,通过使用类似TF/IDF的内容,您可能会获得更好的结果,这些内容可以增加罕见术语的权重并减少更常见的权重.
一旦您将内容和推文表示为向量,您就可以通过获取内容向量的余弦相似度和每条推文的向量,根据与内容的语义相似性对推文进行评分.
没有必要自己编写任何代码.你可以使用像Classifier4J这样的包,它包含一个VectorClassifier类,它使用向量空间模型对文档相似性进行评分.
更好的语义重叠
使用每个维度使用一个术语的向量空间模型可能遇到的一个问题是,它们不能很好地处理意味着大致相同的单词的不同单词.例如,这样的模型会说The small automobile
和之间没有相似之处A little car
.
有更复杂的建模框架,如潜在语义分析(LSA)和潜在的dirichlet分配(LDA),可用于构建相互比较的文档的更抽象的表示.这些模型可以被认为是不是基于简单的单词重叠的评分文档,而是基于单词的基本含义的重叠.
在软件方面,包语义向量为文档相似性提供了可扩展的LSA类框架.对于LDA,您可以使用David Blei的实现或Stanford Topic Modeling Toolbox.
归档时间: |
|
查看次数: |
1073 次 |
最近记录: |