【问题标题】:Python file format for email classification with svm-light使用 svm-light 进行电子邮件分类的 Python 文件格式
【发布时间】:2014-01-15 11:03:20
【问题描述】:

我正在处理电子邮件主题,所以我有 20 封电子邮件要分类,还有一个包含 20 行的文件 - 一行有一个电子邮件主题。我一直在研究它,但我无法弄清楚是什么features 指的是 svmlight 的输入文件的格式和格式。任何继续进行的提示都会有所帮助。提前致谢!

编辑:我已将前 500 个主题行的 tf-idf 作为试用版。但是,根据 svm-light 格式,我们需要:

<line> .=. <target> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info>

我只有 500 行的 tf-idf 功能。遗憾的是,svm-light 没有读取它,因为它需要特征/值对。关于值可能是什么或如何更改文件以便读取的任何想法?

我拥有的文件的想法(前 5 个电子邮件功能):

1 201 1.0
2 280 0.123165672613
2 313 0.343915400191
2 515 0.157569797284
2 588 0.343915400191
2 652 0.343915400191
2 657 0.343915400191
2 774 0.23622904941
2 921 0.283118375032
2 1158 0.254849368195
2 1240 0.343915400191
2 1348 0.343915400191
2 1362 0.222321349873
3 57 0.342220321154
3 185 0.391349077827
3 244 0.391349077827
3 300 0.391349077827
3 693 0.391349077827
3 730 0.342220321154
3 1391 0.391349077827
4 57 0.342220321154
4 185 0.391349077827
4 244 0.391349077827
4 300 0.391349077827
4 693 0.391349077827
4 730 0.342220321154
4 1391 0.391349077827
5 32 0.323558487577
5 102 0.323558487577
5 157 0.364177022553
5 160 0.364177022553
5 718 0.151013895297
5 1171 0.364177022553
5 1277 0.323558487577
5 1308 0.364177022553
5 1336 0.364177022553

请帮忙!

【问题讨论】:

  • 你要什么?您是否尝试自动生成电子邮件的主题行?您是否尝试将电子邮件与这些电子邮件中的行匹配?请给出一个输入输出示例,证明你对 Python 有一定的了解。
  • 我已经使用 nltk 库来创建主题行的 tf-idf。我有 1000 封电子邮件,我正在使用其主题并对主题进行分类。目前,我想使用这 1000 个主题行来训练分类器,但我不确定如何进行。感谢您的帮助!

标签: python email input classification svmlight


【解决方案1】:

如果您从每个单词中提取一个特征,请创建一个包含所有唯一单词的列表w(1)..w(n)。如果您正在检查的样本中存在 w(i),则现在 feature(i) 的值为 1。 (您也可以使该值等于出现的次数,以便多次出现的特征获得更大的权重。)

假设以下样本;

1 My hovercraft is full of eels
2 Your account is suspended
3 This is it!

...您可以提取以下字典;

001 My
002 hovercraft
003 is
 :
 :
009 suspended
010 This
011 it!

(前导零只是为了使特征看起来与本说明中的其他数字不同。通常可能不应该有任何前导零。)

样本 1 的特征是 001 到 006;对于样本 3,它们是 010、003 和 011。其他特征的值为 0。因此样本 3 的完整表示如下所示

3 001:0 002:0 003:1 004:0 005:0 ...

(尽管我认为您不需要指定零,即不存在的特征)。

但是,鉴于样本量较小(仅是受试者)​​,您不太可能获得非常好的结果。也许你最好使用例如二元或三元特征(使用滑动窗口分割每个单词;tririgigrgra、ram)。

我认为尝试将 tf-idf 与 SVM 混合使用没有意义,它们是解决同一基本问题的不同方法。

【讨论】:

  • 你好。我增加了样本量,所以目前我有 1000 个电子邮件主题及其类别。我想把单词的 tf-idf 拿来进一步使用。听起来对吗?感谢您的帮助!
  • 更好,但如果您将自己限制在主题行,仍然很小。你为什么忽略消息的其余部分?你打算如何处理一个空的主题?
  • 我目前正在做主题识别,因此我现在只使用主题行。空的主题行已被放入杂项类别。那么,只是为了确认一下,主题行的 tf-idf 将被接受为输入吗?我是第一次这样做,因此宁愿确认。
  • 您好,如前所述,我已经获取了每一行主题的 tf-idf 特征。但是,我不知道输入格式中的“值”是什么,因此它没有读取我的文件。关于这个有什么想法吗?任何帮助将不胜感激!
  • 稍微更新了答案。您不太可能通过评论旧答案来让新人看到这个问题;如果您仍然感到困惑,也许可以尝试发布一个更具体的新问题。
猜你喜欢
  • 2013-08-22
  • 2022-07-27
  • 2016-02-11
  • 1970-01-01
  • 2012-05-31
  • 2020-04-20
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多