如何表示bi-gram

时间:2013-03-16 19:27:05

标签: python twitter nlp cluster-analysis text-mining

我正在研究一种能够在推文流中检测主题的系统/算法。

我要做的是删除停用词,表情符号,网址等,我正在考虑如下表示推文:

terms = (t1, t2, ..., tk)
hashtags = (h1, h2, ..., hn)
date = date of tweet

然后在应用某些聚类算法时,在推文之间使用一些相似性度量,将这3个值组合在一起。这将比这复杂一点,因为我会处理回复(例如,当你回复一些推文时,大多数时候你一直在谈论相同的主题,等等。)

我不知道这是否有效,但我目前看到的问题是我没有确定 n-gram ,所以 Barack Obama 大部分时间都出现在一起,在我的系统中,它将是两个单独的术语( Barack Obama )。

我的问题是:

我怎样才能代表bi-gram?我的意思是,它通常是如何建模的?

我想过有类似的东西:

Tweet = `Some words here`
terms = `[some, words, here, some words, words here]`
...

但是我不知道这是否是正确的方法,如果我必须为每个可能的二元组等做到这一点。

修改

在我的数据库中,我将存储所有条款。我是否还应该将二元组存储为条款?

1 个答案:

答案 0 :(得分:3)

让我们说你的一个文件是“快速的棕色狐狸跳过懒狗”。

bi-gram和uni-gram将是:

the_quick
quick_brown
brown_fox
fox_jumped
jumped_over
over_the
the_lazy
lazy_dog
the
quick
brown
fox
jumped
over
lazy
dog

然后,您可以将所有文档的所有唯一克数放在单词向量中进行分析,如下所示:

Document the_quick  quick_brown  ... lazy  dog   some_other_gram

1        0.01       0.02             0.1   0.05  0.0
2        0          0                0.12  0.0   0.1
3        0.5        0.4              0     0     0

其中单元格中的数字表示文档中术语的计数,二进制计数,频率或TFIDF分数。

然后,您可以比较文档的相似性,或对它们进行聚类或分类。