修剪数据集词汇

时间:2018-02-26 20:29:41

标签: python regex scikit-learn

我有一个来自sklearn中可用的20NewsGroups数据集的培训和测试数据集。我已经导入了数据并创建了一个单词,我可以通过一个朴素的贝叶斯分类器来运行它。目前的代码如下:

def prep(categories):
# Import Newsgroup data
datatrain = fetch_20newsgroups(subset='train', categories=categories)
datatest = fetch_20newsgroups(subset='test', categories=categories)

countvect = CountVectorizer()  # Create CountVectorizer
Xtrain_counts = countvect.fit_transform(datatrain.data)

tfidf = TfidfTransformer()  # Term-frequency transformer
Xtrain_tfidf = tfidf.fit_transform(Xtrain_counts)
print "\nTfidf Dimensions: %s" % str(Xtrain_tfidf.shape)
print "\nVocabulary: %s" % str(len(countvect.vocabulary_)) + " unique \'words\'"

从这里开始,我想修剪数据,以便忽略像“w32w”这样的字符串或电子邮件ID或像“an”,“the”,“is”这样的常用词,以尝试提高分类器的准确性。我有一个可以捕获下面的电子邮件的正则表达式:

found = re.findall(r'[\w\.-]+@[\w\.-]+', Xtrain_tfidf)

如何以删除匹配的数据的方式应用正则表达式,以及如何扩展正则表达式以包含常用字?

字符串示例:

  

来自:matt-dah@dsv.su.se(Mattias Dahlberg)   主题:Re:REAL-3D   组织:斯德哥尔摩大学计算机与系统科学系   线路:17   X-Newsreader:TIN [版本1.1 PL8]

     

Rauno Haapaniemi(raunoh@otol.fi)写道:

     

今天早些时候,我读了一则关于REAL-3D动画的广告。射线追踪软件   它看起来很有说服力。

     

是的,确实看起来非常好。

     

但是,我没有Amiga,所以我开始怀疑,如果有PC的话   版本。

     

不。

预期产出:

  

Mattias Dahlberg REAL-3D计算机系统科学系斯德哥尔摩大学Rauno Haapaniemi今天早些时候阅读了真实3D动画和广告的广告。光线跟踪软件看起来非常有说服力是的确看起来非常好但是我没有Amiga,所以开始怀疑有没有PC版的Nope

通过此,您可以看到电子邮件,常用字词,标点符号都已被删除。

0 个答案:

没有答案