[背景音乐] 翻译: RyukaSuu |审阅: 19waa Coursera Global Translator Community
让我们真正着手计算TF/IDF
现在 我无法只计算TF/IDF 顺便提一下 这是一个重要的注意点
我们没法单独计算
奥巴马文章的TF/IDF 是因为TF/IDF 取决于整个文集
你需要把那些出现在每篇文章中的单词标准化
我证明给你看 我已经在整个文集中计算过了
现在让我们开始做这个吧
开始吧！
我会计算
整个文集的TF-IDF
我会分两步来做
首先我要计算整个文集中 各个单词的数量
所以我在people 中添加一列叫做单词计数(word_count)
我们之前对奥巴马做过类似的 现在我们要对所有人做这个
所以我要调出graphlab.text_analytics.count_words 这个函数
然后写下输入值
输入值会是text这一列
换句话说 我会对text 这一列的进行单词计数
为了以防混淆
我们直接打印出people
所以我会打印出people的前几列
恩 我们执行了代码
你看到我们有URI 也就是网页地址这一列 人物的名字
然后在最右边 有单词计数这一列 新的一列
好的 下一步我们就要计算TF/IDF了
就像单词计数一样 你要使用你自己的TF/IDF 系统
会让你花上一些时间完成
Graphlocate已经准备就绪了
我们准备使用这个来让整个过程变得简单一些
所以我会调用graphlab.text_analytics这个函数
就像之前调用单词计数一样
你要做的就是 需要一个输入值
就像我们给单词计数那个函数也赋了一个输入值一样
然后它就会计算TF/IDF了
让我给你看看 最后的结果是什么样的
额 我这边打错了个字
应该是word_count
不是word_counts
这样我会在整个文集中 一共50000篇文章
来计算单词的频率 并标准化
最后我们的结果会是一张表 对每篇文章
有一个TF/IDF的字典
我们之前应该做的都是正确的 我准备再添加新的一列
对于人物这个表格 新的一列会是叫做TF/IDF
我准备在这一列储存我们的TF/IDF的值
这也在一个表格里面 也就是TF-IDF 这个表格doc这一列
恩 我们成功的添加了
我们现在有了每篇文章的TF/IDF 并且储存在里面
让我们检查一下
这是我们要做的
我们要检查奥巴马这篇文章的TF-IDF
我们要检查奥巴马这篇文章的TF/IDF
我们之前对于单词计数和排序 进行了检查
我们也会把TF-IDF的值进行排序
所以我会重新读取奥巴马的变量
在最新的版本中 我们新添加了两列
所以我会选择people中
people等于Barack Obama的那些行
所以我创建了一个奥巴马 就像我们之前单词计数里做过的一样
我创建了一个obama_tfidf_table 然后可以进行排序
这是一个字典
我们要做和之前一样的
先存储然后再排序
这就是我们要做的
实际上 我不会再建立一个表格 而是在一行内搞定它
我要一行完成
所以我的代码就是
我选取
奥巴马中tf-idf这一列 这样看起来会漂亮些
然后.stack 这个指令可以把字典中我想要的
分成两列
所以我要存储tf-idf的值
所以输出值的新两列的名字会是
word 和 tf-idf
让我给你看些新的东西
不好 我这边忘记加引号了
让我给你看一点python的小技巧
很有用的小技巧
我会在这行代码的末尾加上一些指令
比如说.sort
这样我就会对tf-idf这一列进行排序
然后我输入 asceding=false 进行降序排列
所以说我之前用了很多行代码 现在我用一行代码就搞定了
这样我就收集到了奥巴马的tf-idf这一列
然后分开储存到word 和tf-idf这两列
并且降序排序
从最高到最低
如果你记住的话 在我们运行之前
在我们之前对单词计数做了类似的事
最普遍的单词就是then in and of 这些
然后就是to his Obama act a he这些单词
这些单词通常不包含什么特殊的信息 除了Obama（奥巴马）这个单词
让我们对TF-IDF执行它
我们可以看到 最具有信息的单词就是奥巴马
这也很合理 因为整篇文章都是有关奥巴马的
然后剩下的就是art Iraq control law 依次排序 （艺术 伊拉克 控制 法律）
military involvement response democratic 和 democratic party（军师 参与 回应 民主 民主党）
你可以看到单词
都和奥巴马的活动有着重要的联系
[背景音乐] 翻译: RyukaSuu |审阅: 19waa Coursera Global Translator Community