注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Koala++'s blog

计算广告学 RTB

 
 
 

日志

 
 

Weka开发[48]——用Weka文本分类  

2011-01-16 15:26:33|  分类: 机器学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

译自:http://weka.wikispaces.com/Text+categorization+with+WEKA< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

导入

    进行任何分类任务,数据都必须是ARFF或是XRFF格式。

目录

    你可以用下面的工具将文本文件转换成ARFF格式:

1. TextDirectoryToArff工具

    它将一个包含文本文件的目录转换成一个ARFF文件。

2. TextDirectoryLoader 转换器

    这个转换器基于TextDirectoryToArff工具实现,它在weka.core.converters包中。

要使用TextDirectoryLoader,你要将目录处理成下面这种结构(译注:简单的说就是将每个类别的文本文件放到一个目录中,并将这个目录名命令为类别名,如果你还不明白,在下面的例子节,你可以去下载)(tree命令可以看你的目录结构,linuxwindows都可以)

...

 |

 +- text_example

    |

    +- class1

    |  |

    |  + file1.txt

    |  |

    |  + file2.txt

    |  |

    |  ...

    |

    +- class2

    |  |

    |  + another_file1.txt

    |  |

    |  + another_file2.txt

    |  |

    |  ...

    上面的目录结构可以用下面的命令转换成一个ARFF文件:

java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff

CSV 文件

CSV文件可以很容易地通过Weka Explorer或是通过命令行用CSVLoader导入:

java weka.core.converters.CSVLoader file.csv > file.arff

    默认情况下,非数值型属性会以NOMINAL(离散型)属性方式导入,这对于文本型数据是不太合适的,特别是有人想在后面使用StringToWordVector过滤器时,要将属性指定为STRING类型,可以对数据运行NominalToString过滤器(weka.filters.unsupervised.attribute包中),并指定属性下标或指定要转换的范围(注意,这个过滤器会将类别属性也进行转换)。为了保留属性类型,你需要将文件保存为ARFF或是XRFF格式(或是以一种压缩格式版本进行保存)

第三方工具

    TagHelper工具,它可以将文本转换成切词或是非切词的unigramsbigramspart-of-speech bigrams,和一些用户定义的特性,然后保存成ARFF格式,现在支持的语言有英文,德文,中文。西班牙文和葡萄牙语的处理工作正在进行。

处理文本数据

转换

    Weka中的大多数分类器不能处理String类型的属性,所以如果你要学习一个分类器,应该将String类型先转换成合适的格式,比如,StringToWordVector过滤器可以进行TF/IDF 转换。

    StringToWordVector过滤器将类别属性放在输出文件的开始,如果你喜欢它还是在最后的位置,你可以用如下设置使用Recorder过滤器:

weka.filters.unsupervised.attribute.Reorder -R 2-last,first

    另外,你可以用MultiFilter你可以将两个过滤器一次运行,这样在比如Explorer方式下就简单点。

停词

    StringToWordVector过滤器可以使用不同的停词表,它自身也有一个内嵌的停词表(基于Rainbow系统)。你可以用-stopwords选择来加载外部的停词文件,停词文件的格式就是一行一个停词,如果前面有’#’就会被认为是注释被忽略。

UTF-8

    如果你要处理的文本文件是non-ASCII码文件,比如阿拉伯文,你也许会在Windows下遇到一些显示上的问题,Java是支持显示UTF-8的,所以也包括阿拉伯语,默认情况下,JavaWindows下使用code page 1252,它会使显示其它问题时有问题。为了修正这个错误,你需要在启动Weka时修改java命令行。

java -Dfile.encoding=utf-8 -classpath ...

    -Dfile.encoding=utf-8是告诉Java使用UTF-8编码而不是默认的CP1252

    如果你想通过启动目录方式启动weka,你可以在RunWeka.ini的修改fileEncoding值为UTF-8

例子

text_example.zip 含一个作为示例的目录和文件,它可以被TextDirectoryLoader转换器载入。

text_example.zip 它使用TextDirectoryLoader转换器将一个目录转换成一个数据集,并用StringToWordVector过滤,再用过滤过的数据建立一个分类器。

 

 

  评论这张
 
阅读(10912)| 评论(12)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017