我之前已经问过一个类似的问题,但我注意到我有很大的限制:我正在处理诸如用户推文之类的小型文本集以生成标签(关键字)。
似乎已接受的建议(逐点互信息算法)旨在处理更大的文档。
有了这个约束(处理少量文本),我如何生成标签?
问候
我之前已经问过一个类似的问题,但我注意到我有很大的限制:我正在处理诸如用户推文之类的小型文本集以生成标签(关键字)。
似乎已接受的建议(逐点互信息算法)旨在处理更大的文档。
有了这个约束(处理少量文本),我如何生成标签?
问候
多词标签的两阶段方法
您可以将所有推文汇集到一个更大的文档中,然后从整个推文集合中提取n 个最有趣的搭配。然后,您可以返回并用其中出现的搭配标记每条推文。使用这种方法,n将是为整个数据集生成的多词标签的总数。
对于第一阶段,您可以使用此处发布的 NLTK 代码。第二阶段只需对所有推文进行简单的 for 循环即可完成。但是,如果速度是一个问题,您可以使用pylucene快速找到包含每个搭配的推文。
单字标签的推文级别 PMI
正如这里所建议的,对于单个单词标签,您可以计算每个单词和推文本身的逐点互信息,即
PMI(term, tweet) = log [ P(term, tweet) / (P(term)*P(tweet))
同样,这将粗略地告诉您在特定文档中遇到该术语与在更大的集合中遇到该术语相比,您有多少(或更多)感到惊讶。然后,您可以用推文中最高PMI
的几个词来标记推文。
推文的一般变化
在使用推文进行标记时,您可能想要进行的一些更改包括:
仅当某个单词或搭配出现在一定数量或百分比的其他推文中时,才将其用作推文的标签。否则,PMI 将倾向于使用仅在一条推文中出现但在其他任何地方都看不到的奇怪术语来标记推文,例如拼写错误和键盘噪音,如 #@$#@$%!。
使用每条推文的长度缩放使用的标签数量。您可能能够为更长的推文提取 2 或 3 个有趣的标签。但是,对于较短的 2 字推文,您可能不想使用每个单词和搭配来标记它。在给定推文长度的情况下,对于要提取的标签数量,可能值得尝试不同的截止值。
我之前使用过一种方法,用于短信等小型文本内容,我只需将同一行重复两次。令人惊讶的是,这对于名词很可能成为主题的内容非常有效。我的意思是,您不需要重复它就可以成为主题。