我目前正在使用apache flink的flinkml在scala中编程,开发一个仇恨语音过滤器。
我有一个巨大的.csv培训数据集,其中包含如下行:
id,count,hate_speech,offensive_language,neither,class,tweet
326,3,0,1,2,2,"""@complex_uk: Ashley Young has tried to deny that bird s***landed in his mouth ---> http:****https:****"" hahaha"
我的问题是,flink没有一个矢量器来将tweet转换成一个libsvm文件,该文件可供svm.fit()函数读取。
你们知道我怎样用“class”列作为标签,用“tweet”列作为特征向量来训练我的svm吗?
我真的很感激你的帮助。找了几个小时。
1条答案
按热度按时间fkaflof61#
我想你的问题还不是Flink的问题。flink是一个流处理引擎(批处理也是可能的,但流处理是flink的独特卖点)。可以在无界流中定义有状态计算。如何做到这一点取决于你自己。首先需要解决的问题之一是:如何将文本表示为一个向量,该向量可以用作svm聚类的输入。tf/idf可能是一个很好的起点。实现随处可见:海丰l/smle或deeplearning4j是一些流行的例子。
还请记住,如果你处理的是非常简短的文档(如果我没弄错的话,请发twitter推文)。你应该考虑保留尽可能多的标记(单词)-这会增加你的词汇量-这会增加你的向量的维数(如果你坚持使用像model这样的单词包)-这会迫使你获得更多的训练数据。
在解决了所有与ml相关的问题之后,您可以考虑如何将其集成到flink中。