从小文本内容(如推文)生成标记

Hel*_*nar 15 twitter nlp text-extraction text-analysis nltk

我之前已经问了一个类似的问题,但我已经知道我有很大的限制:我正在研究小文本集,例如用户推文以生成标签(关键字).

似乎已接受的建议(逐点互信息算法)意味着可以处理更大的文档.

有了这个约束(处理一小组文本),我该如何生成标签?

问候

dmc*_*cer 15

多字标签的两阶段方法

您可以将所有推文汇集到一个更大的文档中,然后从整个推文集中提取n个最有趣的搭配.然后,您可以返回并使用其中发生的搭配标记每条推文.使用此方法,n将是将为整个数据集生成的多字标记的总数.

对于第一阶段,您可以使用此处发布的NLTK代码.第二阶段可以通过简单的for循环完成所有推文.但是,如果速度是一个问题,您可以使用pylucene快速查找包含每个搭配的推文.

单个标签的推文级别PMI

正如这里所建议的,对于单个单词标签,您可以计算每个单词和推文本身的逐点互信息,即

PMI(term, tweet) = log [ P(term, tweet) / (P(term)*P(tweet)) 
Run Code Online (Sandbox Code Playgroud)

同样,这将粗略地告诉您,在特定文档中遇到这个术语时,你会感到多么惊讶(或者更多),因为它会在更大的集合中遇到它.然后,您可以使用推文中最高的一些词来标记推PMI文.

推文的一般变化

使用推文标记时可能需要进行的一些更改包括:

  • 如果它发生在特定数量或百分比的其他推文中,则仅使用单词或搭配作为推文的标记.否则,PMI将倾向于使用仅在一条推文中出现的奇怪术语来标记推文,但在其他任何地方都看不到,例如拼写错误和键盘噪音,如#@ $#@ $%!.

  • 根据每条推文的长度缩放使用的标签数量.您可能能够为更长的推文提取2或3个有趣的标签.但是,对于较短的2个字的推文,您可能不希望使用每个单词和搭配来标记它.考虑到推文长度,您可能需要尝试使用不同的截止值来尝试提取多少个标签.