选择用于识别“有用”Twitter问题的特征

11

我使用正则表达式从Twitter的流中收集了一堆问题,以选择包含以问题类型开头的文本(例如:“who”,“what”,“when”,“where”等)并以问号结束的推文。

因此,我最终在数据库中收到了几个无用的问题,例如:“谁关心?”、“这是什么?”等,以及一些有用的问题,例如:“篮球比赛有多频繁打架?”、“北极熊重多少?”等

但是,我只对有用的问题感兴趣。

我收集了大约3000个问题,其中约2000个不太有用,约1000个有用,并已经进行了手动标记。我试图使用朴素贝叶斯分类器(随NLTK提供的)来尝试自动分类问题,以便不必手动选择有用的问题。

首先,我尝试将问题的前三个单词作为特征,但这并没有帮助太多。在100个问题中,分类器预测有用的问题仅约为10%-15%正确。它还未能从它预测为无用的问题中挑选出有用的问题。

我已经尝试了其他特征,例如:包括所有单词,包括问题的长度,但结果没有显着变化。

您有关于我该如何选择特征或继续进行的任何建议吗?

谢谢。


你能举出一些你认为有用或无用的标记问题的例子吗? - Suzana
这更多是一个机器学习问题,而不是编程问题。你可以尝试在CrossValidated上提问,以获取一些特征选择的建议。 - Ram Narasimhan
@Suzana_K:无用的:“谁在乎?”,“这是什么?”有用的:“篮球比赛多久会打一次?”,“北极熊有多重?” - bili
@RamNarasimhan:谢谢,我会尝试CrossValidated。 - bili
2个回答

13

一些随机建议。

添加一个预处理步骤并删除停用词,例如thisaofand等。

篮球比赛有多少次会发生打斗

首先删除一些停用词,得到:

篮球比赛经常发生打斗

为每个单词计算tf-idf得分(将每个推文视为一个文档,为了计算得分,您需要整个语料库以获得文档频率。)

对于像上面那样的句子,计算每个单词的tf-idf得分:

  tf-idf(how)
  tf-idf(often)
  tf-idf(basketball)
  tf-idf(fight)

这个链接可能会有所帮助。

为您的分类器尝试以下附加功能

  • 平均tf-idf分数
  • 中位数tf-idf分数
  • 最大tf-idf分数

此外,尝试使用词性标注器为每个推文生成一个分类句子。

>>> import nltk
>>> text = nltk.word_tokenize(" How often is there a basketball fight")
>>> nltk.pos_tag(text)
[('How', 'WRB'), ('often', 'RB'), ('is', 'VBZ'), ('there', 'EX'), ('a', 'DT'), ('basketball', 'NN'), ('fight', 'NN')]

那么您可能有其他与词性标记相关的特征要尝试。

可能有用的一些其他功能,请查看论文-qtweet(这是有关推文问题识别的论文)以获取详细信息。

  • 推文是否包含任何URL
  • 推文是否包含任何电子邮件或电话号码
  • 是否存在强烈的情感,例如问题后面跟随
  • 推文上下文中是否存在单个字词
  • 推文是否提到其他用户的名称
  • 推文是否为转发
  • 推文是否包含任何hashtag #

顺便说一下,《qtweet》的作者尝试了4种不同的分类器,即Random Forest、SVM、J48和Logistic regression。其中Random Forest表现最佳。

希望这些信息能有所帮助。


1
谢谢您的建议。我会尝试并回复您。 - bili

1
您可以尝试构建一个非常强大的功能(不确定是否可能),就是如果有对相关推文的回复,您可以在其中使用它。

是的,我只使用正则表达式来挑选出在推文中有一个或多个回复的问题。 - bili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接